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.componentBuilder; 017 018import com.sun.codemodel.JBlock; 019import com.sun.codemodel.JDefinedClass; 020import com.sun.codemodel.JExpression; 021import org.androidtransfuse.adapter.ASTJDefinedClassType; 022import org.androidtransfuse.adapter.ASTMethod; 023import org.androidtransfuse.gen.InvocationBuilder; 024import org.androidtransfuse.model.InjectionNode; 025import org.androidtransfuse.model.TypedExpression; 026 027import javax.inject.Inject; 028import java.util.Collections; 029 030/** 031 * @author John Ericksen 032 */ 033public class ViewMethodRegistrationInvocationBuilderImpl implements ViewRegistrationInvocationBuilder { 034 035 private final InvocationBuilder invocationBuilder; 036 private final ASTMethod getterMethod; 037 038 @Inject 039 public ViewMethodRegistrationInvocationBuilderImpl(/*@Assisted*/ ASTMethod getterMethod, InvocationBuilder invocationBuilder) { 040 this.invocationBuilder = invocationBuilder; 041 this.getterMethod = getterMethod; 042 } 043 044 @Override 045 public void buildInvocation(JDefinedClass definedClass, JBlock block, TypedExpression expression, JExpression viewExpression, String method, InjectionNode injectionNode) { 046 047 block.invoke(viewExpression, method) 048 .arg(invocationBuilder.buildMethodCall( 049 new ASTJDefinedClassType(definedClass), 050 new ASTJDefinedClassType(definedClass), 051 getterMethod, 052 Collections.EMPTY_LIST, 053 expression)); 054 } 055}