private void createAsPrismObject(JDefinedClass definedClass) { JClass prismObjectClass = CLASS_MAP.get(PrismObject.class); JType returnType; if (definedClass.isAbstract()) { returnType = prismObjectClass.narrow(definedClass.wildcard()); } else { // e.g. PrismObject<TaskType> for TaskType // we assume that we don't subclass a non-abstract object class into another one returnType = prismObjectClass.narrow(definedClass); } JMethod asPrismObject = definedClass.method(JMod.PUBLIC, returnType, METHOD_AS_PRISM_OBJECT); asPrismObject.annotate(CLASS_MAP.get(Override.class)); //create method body JBlock body = asPrismObject.body(); body._return(JExpr.invoke(METHOD_AS_PRISM_CONTAINER)); }
final JVar propertyNameParam = constructor.param(JMod.FINAL, this.pluginContext.stringClass, "propertyName"); if(this.selectorParamName != null) { final JVar includeParam = constructor.param(JMod.FINAL, getSelectorParamType(this.pluginContext.codeModel.wildcard(), definedClass.wildcard()), this.selectorParamName); constructor.body().invoke("super").arg(rootParam).arg(parentParam).arg(propertyNameParam).arg(includeParam); } else {