use of com.helger.jcodemodel.AbstractJClass in project androidannotations by androidannotations.
the class RestAnnotationHelper method getResponseClass.
public IJExpression getResponseClass(Element element, RestHolder holder) {
ExecutableElement executableElement = (ExecutableElement) element;
IJExpression responseClassExpr = nullCastedToNarrowedClass(holder);
TypeMirror returnType = executableElement.getReturnType();
if (returnType.getKind() != TypeKind.VOID) {
if (getElementUtils().getTypeElement(RestSpringClasses.PARAMETERIZED_TYPE_REFERENCE) != null) {
if (returnType.toString().startsWith(RestSpringClasses.RESPONSE_ENTITY)) {
List<? extends TypeMirror> typeArguments = ((DeclaredType) returnType).getTypeArguments();
if (!typeArguments.isEmpty()) {
returnType = typeArguments.get(0);
}
}
if (checkIfParameterizedTypeReferenceShouldBeUsed(returnType)) {
return createParameterizedTypeReferenceAnonymousSubclassInstance(returnType);
}
}
AbstractJClass responseClass = retrieveResponseClass(returnType, holder);
if (responseClass != null) {
responseClassExpr = responseClass.dotclass();
}
}
return responseClassExpr;
}
use of com.helger.jcodemodel.AbstractJClass in project androidannotations by androidannotations.
the class OrmLiteHolder method setDatabaseHelperRef.
private JFieldVar setDatabaseHelperRef(TypeMirror databaseHelperTypeMirror) {
AbstractJClass databaseHelperClass = getJClass(databaseHelperTypeMirror.toString());
String fieldName = CaseHelper.lowerCaseFirst(databaseHelperClass.name()) + ModelConstants.generationSuffix();
JFieldVar databaseHelperRef = getGeneratedClass().field(PRIVATE, databaseHelperClass, fieldName);
databaseHelperRefs.put(databaseHelperTypeMirror, databaseHelperRef);
IJExpression dbHelperClass = databaseHelperClass.dotclass();
//
holder().getInitBodyInjectionBlock().assign(//
databaseHelperRef, getJClass(OrmLiteClasses.OPEN_HELPER_MANAGER).staticInvoke("getHelper").arg(holder().getContextRef()).arg(dbHelperClass));
return databaseHelperRef;
}
use of com.helger.jcodemodel.AbstractJClass in project androidannotations by androidannotations.
the class RestAnnotationHelper method resolveResponseClass.
/**
* Resolve the expected class for the input type according to the following
* rules :
* <ul>
* <li>The type is a primitive : Directly return the JClass as usual</li>
* <li>The type is NOT a generics : Directly return the JClass as usual</li>
* <li>The type is a generics and enclosing type is a class C<T> :
* Generate a subclass of C<T> and return it</li>
* <li>The type is a generics and enclosing type is an interface I<T>
* : Looking the inheritance tree, then</li>
* <ol>
* <li>One of the parent is a {@link java.util.Map Map} : Generate a
* subclass of {@link LinkedHashMap}<T> one and return it</li>
* <li>One of the parent is a {@link Set} : Generate a subclass of
* {@link TreeSet}<T> one and return it</li>
* <li>One of the parent is a {@link java.util.Collection Collection} :
* Generate a subclass of {@link ArrayList}<T> one and return it</li>
* <li>Return {@link Object} definition</li>
* </ol>
* </ul>
*
*/
private AbstractJClass resolveResponseClass(TypeMirror expectedType, RestHolder holder, boolean useTypeReference) {
// is a class or an interface
if (expectedType.getKind() == TypeKind.DECLARED) {
DeclaredType declaredType = (DeclaredType) expectedType;
List<? extends TypeMirror> typeArguments = declaredType.getTypeArguments();
// is NOT a generics, return directly
if (typeArguments.isEmpty()) {
return codeModelHelper.typeMirrorToJClass(declaredType);
}
// is a generics, must generate a new super class
TypeElement declaredElement = (TypeElement) declaredType.asElement();
if (useTypeReference && getElementUtils().getTypeElement(RestSpringClasses.PARAMETERIZED_TYPE_REFERENCE) != null) {
return codeModelHelper.typeMirrorToJClass(declaredType);
}
AbstractJClass baseClass = codeModelHelper.typeMirrorToJClass(declaredType).erasure();
AbstractJClass decoratedExpectedClass = retrieveDecoratedResponseClass(declaredType, declaredElement, holder);
if (decoratedExpectedClass == null) {
decoratedExpectedClass = baseClass;
}
return decoratedExpectedClass;
} else if (expectedType.getKind() == TypeKind.ARRAY) {
ArrayType arrayType = (ArrayType) expectedType;
TypeMirror componentType = arrayType.getComponentType();
return resolveResponseClass(componentType, holder, false).array();
}
// is not a class nor an interface, return directly
return codeModelHelper.typeMirrorToJClass(expectedType);
}
use of com.helger.jcodemodel.AbstractJClass in project androidannotations by androidannotations.
the class RestAnnotationHelper method plainName.
protected String plainName(AbstractJClass jClass) {
String plainName = jClass.erasure().name();
List<? extends AbstractJClass> typeParameters = jClass.getTypeParameters();
if (typeParameters.size() > 0) {
plainName += "_";
for (AbstractJClass typeParameter : typeParameters) {
plainName += plainName(typeParameter);
}
}
return plainName;
}
use of com.helger.jcodemodel.AbstractJClass in project androidannotations by androidannotations.
the class RestHolder method setAvailableCookiesField.
private void setAvailableCookiesField() {
AbstractJClass stringClass = getClasses().STRING;
AbstractJClass mapClass = getClasses().HASH_MAP.narrow(stringClass, stringClass);
availableCookiesField = getGeneratedClass().field(JMod.PRIVATE, mapClass, "availableCookies");
getInit().body().assign(availableCookiesField, _new(mapClass));
}
Aggregations