use of com.helger.jcodemodel.JVar in project androidannotations by androidannotations.
the class PageSelectedHandler method process.
@Override
public void process(Element element, EComponentWithViewSupportHolder holder) throws Exception {
String methodName = element.getSimpleName().toString();
ExecutableElement executableElement = (ExecutableElement) element;
List<? extends VariableElement> parameters = executableElement.getParameters();
int positionParameterPosition = -1;
int viewPagerParameterPosition = -1;
TypeMirror viewPagerParameterType = null;
for (int i = 0; i < parameters.size(); i++) {
VariableElement parameter = parameters.get(i);
TypeMirror parameterType = parameter.asType();
if (parameterType.getKind() == TypeKind.INT || CanonicalNameConstants.INTEGER.equals(parameterType.toString())) {
positionParameterPosition = i;
} else {
if (isViewPagerParameter(parameterType)) {
viewPagerParameterPosition = i;
viewPagerParameterType = parameterType;
}
}
}
List<JFieldRef> idsRefs = annotationHelper.extractAnnotationFieldRefs(element, IRClass.Res.ID, true);
for (JFieldRef idRef : idsRefs) {
PageChangeHolder pageChangeHolder = holder.getPageChangeHolder(idRef, viewPagerParameterType, hasAddOnPageChangeListenerMethod());
JBlock methodBody = pageChangeHolder.getPageSelectedBody();
IJExpression thisRef = holder.getGeneratedClass().staticRef("this");
JInvocation methodCall = methodBody.invoke(thisRef, methodName);
for (int i = 0; i < parameters.size(); i++) {
if (i == positionParameterPosition) {
JVar stateParam = pageChangeHolder.getPageSelectedPositionParam();
methodCall.arg(stateParam);
} else if (i == viewPagerParameterPosition) {
JVar viewParameter = pageChangeHolder.getViewPagerVariable();
methodCall.arg(viewParameter);
}
}
}
}
use of com.helger.jcodemodel.JVar in project androidannotations by androidannotations.
the class HttpsClientHandler method assignValue.
@Override
public void assignValue(JBlock targetBlock, IJAssignmentTarget fieldRef, EComponentHolder holder, Element element, Element param) {
IRInnerClass rInnerClass = getEnvironment().getRClass().get(IRClass.Res.RAW);
HttpsClient annotation = element.getAnnotation(HttpsClient.class);
JFieldRef trustStoreRawIdRef = annotationHelper.extractOneAnnotationFieldRef(element, getTarget(), rInnerClass, false, "trustStore", "trustStoreResName");
JFieldRef keyStoreRawIdRef = annotationHelper.extractOneAnnotationFieldRef(element, getTarget(), rInnerClass, false, "keyStore", "keyStoreResName");
String trustStorePwd = annotation.trustStorePwd();
String keyStorePwd = annotation.keyStorePwd();
boolean allowAllHostnames = annotation.allowAllHostnames();
boolean useCustomTrustStore = trustStoreRawIdRef != null;
boolean useCustomKeyStore = keyStoreRawIdRef != null;
ProcessHolder.Classes classes = getClasses();
JDefinedClass jAnonClass = getCodeModel().anonymousClass(classes.DEFAULT_HTTP_CLIENT);
JMethod method = jAnonClass.method(JMod.PROTECTED, classes.CLIENT_CONNECTION_MANAGER, "createClientConnectionManager");
method.annotate(Override.class);
JTryBlock jTryBlock = method.body()._try();
JVar jVarTrusted = null;
JVar jVarKeystore = null;
if (useCustomKeyStore) {
jVarKeystore = jTryBlock.body().decl(classes.KEY_STORE, "keystore");
jVarKeystore.init(classes.KEY_STORE.staticInvoke("getInstance").arg("BKS"));
}
if (useCustomTrustStore || useCustomKeyStore) {
/*
* use default trust store
*/
jVarTrusted = jTryBlock.body().decl(classes.KEY_STORE, "trusted");
jVarTrusted.init(classes.KEY_STORE.staticInvoke("getInstance").arg("BKS"));
}
JVar jVarRes = null;
JVar jVarTrstFile = null;
JVar jVarKeyFile = null;
if (useCustomKeyStore || useCustomTrustStore) {
jVarRes = jTryBlock.body().decl(classes.RESOURCES, "res", invoke("getResources"));
}
if (useCustomKeyStore) {
JInvocation jInvRawKey = jVarRes.invoke("openRawResource").arg(keyStoreRawIdRef);
jVarKeyFile = jTryBlock.body().decl(classes.INPUT_STREAM, "inKeystore", jInvRawKey);
}
if (useCustomTrustStore) {
JInvocation jInvRawTrust = jVarRes.invoke("openRawResource").arg(trustStoreRawIdRef);
jVarTrstFile = jTryBlock.body().decl(classes.INPUT_STREAM, "inTrustStore", jInvRawTrust);
} else if (useCustomKeyStore) {
jVarTrstFile = jTryBlock.body().decl(classes.INPUT_STREAM, "inTrustStore", _new(classes.FILE_INPUT_STREAM).arg("/system/etc/security/cacerts.bks"));
}
// try load
if (useCustomKeyStore || useCustomTrustStore) {
JTryBlock jTryLoad = jTryBlock.body()._try();
if (useCustomKeyStore) {
jTryLoad.body().add(invoke(jVarKeystore, "load").arg(jVarKeyFile).arg(invoke(lit(keyStorePwd), "toCharArray")));
}
jTryLoad.body().add(invoke(jVarTrusted, "load").arg(jVarTrstFile).arg(invoke(lit(trustStorePwd), "toCharArray")));
// finally load
JBlock jFinally = jTryLoad._finally();
if (useCustomKeyStore) {
jFinally.add(invoke(jVarKeyFile, "close"));
}
jFinally.add(invoke(jVarTrstFile, "close"));
}
if (null == jVarKeystore && null == jVarTrusted) {
JVar jVarCcm = jTryBlock.body().decl(classes.CLIENT_CONNECTION_MANAGER, "ccm");
jVarCcm.init(_super().invoke("createClientConnectionManager"));
if (allowAllHostnames) {
IJExpression jCast = cast(classes.SSL_SOCKET_FACTORY, jVarCcm.invoke("getSchemeRegistry").invoke("getScheme").arg("https").invoke("getSocketFactory"));
jTryBlock.body().add(jCast.invoke("setHostnameVerifier").arg(classes.SSL_SOCKET_FACTORY.staticRef("ALLOW_ALL_HOSTNAME_VERIFIER")));
}
jTryBlock.body()._return(jVarCcm);
} else {
JVar jVarSslFact = jTryBlock.body().decl(classes.SSL_SOCKET_FACTORY, "newSslSocketFactory");
jVarSslFact.init(_new(classes.SSL_SOCKET_FACTORY).arg(null == jVarKeystore ? _null() : jVarKeystore).arg(keyStorePwd).arg(jVarTrusted));
if (allowAllHostnames) {
jTryBlock.body().add(invoke(jVarSslFact, "setHostnameVerifier").arg(classes.SSL_SOCKET_FACTORY.staticRef("ALLOW_ALL_HOSTNAME_VERIFIER")));
}
JVar jVarSchemeReg = jTryBlock.body().decl(classes.SCHEME_REGISTRY, "registry");
jVarSchemeReg.init(_new(classes.SCHEME_REGISTRY));
jTryBlock.body().add(invoke(jVarSchemeReg, "register").arg(_new(classes.SCHEME).arg("https").arg(jVarSslFact).arg(lit(443))));
jTryBlock.body().add(invoke(jVarSchemeReg, "register").arg(_new(classes.SCHEME).arg("http").arg(classes.PLAIN_SOCKET_FACTORY.staticInvoke("getSocketFactory")).arg(lit(80))));
JVar jVarCcm = jTryBlock.body().decl(classes.CLIENT_CONNECTION_MANAGER, "ccm");
jVarCcm.init(_new(classes.SINGLE_CLIENT_CONN_MANAGER).arg(invoke("getParams")).arg(jVarSchemeReg));
jTryBlock.body()._return(jVarCcm);
}
// catch block
JCatchBlock jCatchBlock = jTryBlock._catch(classes.EXCEPTION);
JVar jVarExceptionParam = jCatchBlock.param("e");
jCatchBlock.body().add(jVarExceptionParam.invoke("printStackTrace"));
jCatchBlock.body()._return(_super().invoke("createClientConnectionManager"));
targetBlock.add(fieldRef.assign(_new(jAnonClass)));
}
use of com.helger.jcodemodel.JVar in project androidannotations by androidannotations.
the class ItemClickHandler method processParameters.
@Override
protected void processParameters(EComponentWithViewSupportHolder holder, JMethod listenerMethod, JInvocation call, List<? extends VariableElement> parameters) {
boolean hasItemParameter = parameters.size() == 1;
AbstractJClass narrowAdapterViewClass = getClasses().ADAPTER_VIEW.narrow(getCodeModel().wildcard());
JVar onItemClickParentParam = listenerMethod.param(narrowAdapterViewClass, "parent");
listenerMethod.param(getClasses().VIEW, "view");
JVar onItemClickPositionParam = listenerMethod.param(getCodeModel().INT, "position");
listenerMethod.param(getCodeModel().LONG, "id");
if (hasItemParameter) {
VariableElement parameter = parameters.get(0);
TypeMirror parameterType = parameter.asType();
if (parameterType.getKind() == TypeKind.INT) {
call.arg(onItemClickPositionParam);
} else {
AbstractJClass parameterClass = codeModelHelper.typeMirrorToJClass(parameterType);
call.arg(cast(parameterClass, invoke(onItemClickParentParam, "getAdapter").invoke("getItem").arg(onItemClickPositionParam)));
if (parameterClass.isParameterized()) {
codeModelHelper.addSuppressWarnings(listenerMethod, "unchecked");
}
}
}
}
use of com.helger.jcodemodel.JVar in project androidannotations by androidannotations.
the class TouchHandler method processParameters.
@Override
protected void processParameters(EComponentWithViewSupportHolder holder, JMethod listenerMethod, JInvocation call, List<? extends VariableElement> parameters) {
JVar viewParam = listenerMethod.param(getClasses().VIEW, "view");
JVar eventParam = listenerMethod.param(getClasses().MOTION_EVENT, "event");
for (VariableElement parameter : parameters) {
String parameterType = parameter.asType().toString();
if (parameterType.equals(CanonicalNameConstants.MOTION_EVENT)) {
call.arg(eventParam);
} else if (isTypeOrSubclass(CanonicalNameConstants.VIEW, parameter)) {
call.arg(castArgumentIfNecessary(holder, CanonicalNameConstants.VIEW, viewParam, parameter));
}
}
}
use of com.helger.jcodemodel.JVar in project androidannotations by androidannotations.
the class ActivityIntentBuilder method overrideStartForResultMethod.
private void overrideStartForResultMethod() {
AbstractJClass postActivityStarterClass = environment.getJClass(PostActivityStarter.class);
JMethod method = holder.getIntentBuilderClass().method(PUBLIC, postActivityStarterClass, "startForResult");
method.annotate(Override.class);
JVar requestCode = method.param(environment.getCodeModel().INT, "requestCode");
JBlock body = method.body();
JConditional condition = null;
if (fragmentSupportField != null) {
condition = body._if(fragmentSupportField.ne(JExpr._null()));
//
condition._then().invoke(fragmentSupportField, "startActivityForResult").arg(intentField).arg(requestCode);
}
if (fragmentField != null) {
if (condition == null) {
condition = body._if(fragmentField.ne(JExpr._null()));
} else {
condition = condition._elseif(fragmentField.ne(JExpr._null()));
}
JBlock fragmentStartForResultInvocationBlock;
if (hasActivityOptionsInFragment() && shouldGuardActivityOptions()) {
fragmentStartForResultInvocationBlock = createCallWithIfGuard(requestCode, condition._then(), fragmentField);
} else {
fragmentStartForResultInvocationBlock = condition._then();
}
JInvocation invocation = //
fragmentStartForResultInvocationBlock.invoke(fragmentField, "startActivityForResult").arg(intentField).arg(requestCode);
if (hasActivityOptionsInFragment()) {
invocation.arg(optionsField);
}
}
JBlock activityStartInvocationBlock = null;
if (condition != null) {
activityStartInvocationBlock = condition._else();
} else {
activityStartInvocationBlock = method.body();
}
JConditional activityCondition = activityStartInvocationBlock._if(contextField._instanceof(getClasses().ACTIVITY));
JBlock thenBlock = activityCondition._then();
JVar activityVar = thenBlock.decl(getClasses().ACTIVITY, "activity", JExpr.cast(getClasses().ACTIVITY, contextField));
AbstractJClass activityCompat = getActivityCompat();
if (activityCompat != null) {
//
thenBlock.staticInvoke(activityCompat, "startActivityForResult").arg(activityVar).arg(intentField).arg(requestCode).arg(optionsField);
} else if (hasActivityOptionsInFragment()) {
JBlock startForResultInvocationBlock;
if (shouldGuardActivityOptions()) {
startForResultInvocationBlock = createCallWithIfGuard(requestCode, thenBlock, activityVar);
} else {
startForResultInvocationBlock = thenBlock;
}
//
startForResultInvocationBlock.invoke(activityVar, "startActivityForResult").arg(intentField).arg(requestCode).arg(optionsField);
} else {
thenBlock.invoke(activityVar, "startActivityForResult").arg(intentField).arg(requestCode);
}
if (hasActivityOptionsInFragment()) {
JBlock startInvocationBlock;
if (shouldGuardActivityOptions()) {
startInvocationBlock = createCallWithIfGuard(null, activityCondition._else(), contextField);
} else {
startInvocationBlock = activityCondition._else();
}
startInvocationBlock.invoke(contextField, "startActivity").arg(intentField).arg(optionsField);
} else {
activityCondition._else().invoke(contextField, "startActivity").arg(intentField);
}
body._return(_new(postActivityStarterClass).arg(contextField));
}
Aggregations