001/**
002 * Copyright 2013 John Ericksen
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *    http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.androidtransfuse.gen.variableBuilder;
017
018import com.google.common.collect.ImmutableList;
019import com.sun.codemodel.JExpression;
020import com.sun.codemodel.JType;
021import org.androidtransfuse.adapter.ASTType;
022import org.androidtransfuse.annotations.Factory;
023import org.androidtransfuse.gen.variableBuilder.resource.ResourceExpressionBuilder;
024import org.androidtransfuse.model.InjectionNode;
025import org.androidtransfuse.model.TypedExpression;
026
027import javax.inject.Named;
028
029/**
030 * @author John Ericksen
031 */
032@Factory
033public interface VariableInjectionBuilderFactory {
034
035    ProviderInjectionNodeBuilder buildProviderInjectionNodeBuilder(ASTType astType);
036
037    ProviderVariableBuilder buildProviderVariableBuilder(InjectionNode providerInjectionNode);
038
039    VariableASTImplementationInjectionNodeBuilder buildVariableInjectionNodeBuilder(ASTType astType);
040
041    SystemServiceVariableBuilder buildSystemServiceVariableBuilder(String systemService, InjectionNode contextInjectionNode);
042
043    ResourceVariableBuilder buildResourceVariableBuilder(int resourceId, ResourceExpressionBuilder resourceExpressionBuilder);
044
045    ExtraValuableBuilder buildExtraVariableBuilder(String extraId, InjectionNode activityInjectionNode, /*@Assisted("nullable")*/ @Named("nullable") boolean nullable, /*@Assisted("wrapped")*/ @Named("wrapped") boolean wrapped);
046
047    ViewVariableBuilder buildViewVariableBuilder(Integer viewId, String viewTag, InjectionNode activityInjectionNode, JType jType);
048
049    PreferenceVariableBuilder buildPreferenceVariableBuilder(ASTType preferenceType, String preferenceName, InjectionNode preferenceManagerInjectionNode);
050
051    StaticInvocationVariableBuilder buildStaticInvocationVariableBuilder(ASTType invocationTarget, String staticInvocation);
052
053    MethodCallVariableBuilder buildMethodCallVariableBuilder(String methodName, ImmutableList<JExpression> arguments);
054
055    DependentInjectionNodeBuilder buildDependentInjectionNodeBuilder(/*@Assisted("dependency")*/ @Named("dependency") ASTType dependency, /*@Assisted("returnType")*/ @Named("returnType") ASTType returnType, DependentVariableBuilder variableBuilder);
056
057    DependentVariableBuilderWrapper buildDependentVariableBuilderWrapper(InjectionNode dependency, DependentVariableBuilder dependentVariableBuilder, ASTType type);
058
059    IndependentInjectionNodeBuilder buildInjectionNodeBuilder(VariableBuilder variableBuilder);
060
061    IndependentVariableBuilderWrapper buildIndependentVariableBuilderWrapper(ASTType astType, JExpression expression);
062
063    ExpressionVariableBuilderWrapper buildExpressionWrapper(TypedExpression typedExpression);
064
065    FragmentViewVariableBuilder buildFragmentViewVariableBuilder(Integer viewId, String viewTag, InjectionNode fragmentInjectionNode, JType jType);
066
067    FactoryNodeBuilder buildFactoryNodeBuilder(ASTType factoryType);
068}