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}