JVar sb = body.decl(stringBuilderClass, "sb", JExpr._new(stringBuilderClass)); body.add(sb .invoke("append").arg(jclass.dotclass().invoke("getName")) .invoke("append").arg(JExpr.lit('@')) .invoke("append").arg( jclass.owner().ref(Integer.class).staticInvoke("toHexString").arg( jclass.owner().ref(System.class).staticInvoke("identityHashCode").arg(JExpr._this()))) .invoke("append").arg(JExpr.lit('['))); JVar baseLength = body.decl(jclass.owner().INT, "baseLength", sb.invoke("length")); JVar superString = body.decl(jclass.owner().ref(String.class), "superString", JExpr._super().invoke("toString")); body.add(sb.invoke("append") .arg(JOp.cond( JExpr.refthis(fieldVar.name()).eq(JExpr._null()), JExpr.lit("<null>"), } else { body.add(sb.invoke("append") .arg(JOp.cond( JExpr.refthis(fieldVar.name()).eq(JExpr._null()), JExpr.lit("<null>"),
private JMethod addPublicWithMethod(JDefinedClass jclass, JMethod internalSetMethod) { JMethod method = jclass.method(PUBLIC, jclass, BUILDER_NAME); JVar nameParam = method.param(String.class, "name"); JVar valueParam = method.param(Object.class, "value"); JBlock body = method.body(); JBlock notFound = body._if(JOp.not(invoke(internalSetMethod).arg(nameParam).arg(valueParam)))._then(); // if we have additional properties, then put value. JMethod getAdditionalProperties = jclass.getMethod("getAdditionalProperties", new JType[] {}); if (getAdditionalProperties != null) { JType additionalPropertiesType = ((JClass) (getAdditionalProperties.type())).getTypeParameters().get(1); notFound.add(invoke(getAdditionalProperties).invoke("put").arg(nameParam) .arg(cast(additionalPropertiesType, valueParam))); } // else throw exception. else { notFound._throw(illegalArgumentInvocation(jclass, nameParam)); } body._return(_this()); return method; }
public JStatement validate(final DatabindableDatatype datatype, final JCodeModel codeModel, final JDefinedClass theClass, final JExpression value, final JAssignmentTarget problem) { final JBlock block = newBlock(); final JExpression signum = value.invoke("signum"); final JConditional ifRangeViolated = block._if(JOp.lt(signum, JExpr.lit(0))); ifRangeViolated._then().assign(problem, JExpr._new(codeModel.ref(org.jvnet.jaxbvalidation.problem.datatype.NegativeProblem.class)).arg(value)); return block; } }
public JMethod generate(ClassContext classContext, FieldItem fieldItem, JDefinedClass theClass) { final ClassItem classItem = classContext.target; if (!ignoring.isIgnored(classItem)) { final JMethod equals = classContext.implClass.method(JMod.PUBLIC, getCodeModel(classContext).BOOLEAN, "equals"); final JVar obj = equals.param(Object.class, "obj"); final JConditional ifThisEqObj = equals.body()._if( JOp.eq(JExpr._this(), obj)); ifThisEqObj._then()._return(JExpr.TRUE); final JConditional ifWrongObj = equals.body()._if( JOp.cor(JOp.eq(JExpr._null(), obj), JOp.not(JOp._instanceof(obj, classContext.ref)))); ifWrongObj._then()._return(JExpr.FALSE); final JVar target = equals.body().decl(classContext.implClass, "target", JExpr.cast(classContext.implClass, obj)); for (ClassItem item = classContext.target; item != null; item = item .getSuperClass()) { final ClassContext context = classContext.parent .getClassContext(item); generateFieldsEquality(context, equals.body(), target); } equals.body()._return(JExpr.TRUE); return equals; } else { return null; } }
public JMethod generate(ClassContext classContext, FieldItem fieldItem, JDefinedClass theClass) { if (processedClassesMap.keySet().contains(theClass)) { return (JMethod) processedClassesMap.get(theClass); } else { final JCodeModel codeModel = getCodeModel(classContext); final JVar $values = theClass.field(JMod.PRIVATE + JMod.STATIC, List.class, "values"); final JMethod constructor = (JMethod) theClass.constructors().next(); constructor.body()._if(JOp.eq($values, JExpr._null()))._then().assign( $values, JExpr._new(codeModel.ref(ArrayList.class))); constructor.body().invoke($values, "add").arg(JExpr._this()); final JMethod values = theClass.method(JMod.PUBLIC | JMod.STATIC, theClass.array(), "values"); values.body()._return( JExpr.cast(theClass.array(), $values.invoke("toArray").arg( JExpr.newArray(theClass, JExpr.invoke($values, "size"))))); processedClassesMap.put(theClass, values); return values; } } }
JVar result = body.decl(jclass.owner().INT, "result", JExpr.lit(1)); JFieldRef fieldRef = JExpr.refthis(fieldVar.name()); fieldHash = JExpr.cast(jclass.owner().INT, fieldRef.xor(fieldRef.shrz(JExpr.lit(32)))); } else if ("boolean".equals(fieldVar.type().name())) { fieldHash = JOp.cond(fieldRef, JExpr.lit(1), JExpr.lit(0)); } else if ("int".equals(fieldVar.type().name())) { fieldHash = fieldRef; fieldHash = JOp.cond(fieldRef.eq(JExpr._null()), JExpr.lit(0), fieldRef.invoke("hashCode")); body.assign(result, result.mul(JExpr.lit(31)).plus(fieldHash)); body.assign(result, result.mul(JExpr.lit(31)).plus(JExpr._super().invoke("hashCode")));
protected JMethod generateObject$Equals(final ClassOutline classOutline, final JDefinedClass theClass) { final JMethod objectEquals = theClass.method(JMod.PUBLIC, theClass .owner().BOOLEAN, "equals"); { final JVar object = objectEquals.param(Object.class, "object"); final JBlock body = objectEquals.body(); body._if(JOp.not(object._instanceof(theClass)))._then()._return( JExpr.FALSE); body._if(JExpr._this().eq(object))._then()._return(JExpr.TRUE); final JVar equalsBuilder = body.decl(JMod.FINAL, theClass.owner() .ref(EqualsBuilder.class), "equalsBuilder", JExpr ._new(theClass.owner().ref(getEqualsBuilderClass()))); body.invoke("equals").arg(object).arg(equalsBuilder); body._return(equalsBuilder.invoke("isEquals")); } return objectEquals; }
public JMethod generate(ClassContext classContext, FieldItem fieldItem, JDefinedClass theClass) { if (processedClassesMap.keySet().contains(theClass)) { return (JMethod) processedClassesMap.get(theClass); } else { final JCodeModel codeModel = getCodeModel(classContext); final JVar enumCodeMap = theClass.field(JMod.PRIVATE + JMod.STATIC, Map.class, "enumCodeMap"); final JMethod constructor = (JMethod) theClass.constructors().next(); constructor.body()._if(JOp.eq(enumCodeMap, JExpr._null()))._then().assign( enumCodeMap, JExpr._new(codeModel.ref(HashMap.class))); constructor.body().invoke(enumCodeMap, "put").arg(JExpr._this()).arg(JExpr.ref("v")); final JMethod getEnumCodeMap = theClass.method(JMod.PUBLIC | JMod.STATIC, codeModel .ref(Map.class), "getEnumCodeMap"); getEnumCodeMap.body()._return(enumCodeMap); processedClassesMap.put(theClass, getEnumCodeMap); return getEnumCodeMap; } } }
private void generateCurieMethod(JCodeModel model, JDefinedClass dc, JVar mapField) { JClass stringBuilderClass = model.ref(StringBuilder.class); JClass namespaceClass = model.ref(Namespace.class); JMethod method = dc.method(JMod.PUBLIC | JMod.STATIC, String.class, "curie"); JVar uriVar = method.param(URI.class, "uri"); JVar nsVar = method.body().decl(namespaceClass, "ns", mapField.invoke("get").arg(uriVar.invoke("getNamespace"))); method.body()._if(JOp.eq(nsVar, JExpr._null()))._then()._return(uriVar.invoke("stringValue")); JVar builderVar = method.body().decl(stringBuilderClass, "builder", JExpr._new(stringBuilderClass)); method.body().add(builderVar.invoke("add").arg(nsVar.invoke("getPrefix"))); method.body().add(builderVar.invoke("add").arg(JExpr.lit(':'))); method.body().add(builderVar.invoke("add").arg(uriVar.invoke("getLocalName"))); method.body()._return(builderVar.invoke("toString")); }
private void createEqualsMethod(final JDefinedClass implClass, final List<JFieldVar> fields, final boolean isSuperClass) { final JMethod method = implClass.method(JMod.PUBLIC, implClass.owner().BOOLEAN, OPERATION_EQUALS); method.annotate(Override.class); final JVar vObj = method.param(Object.class, OBJ); final JConditional condMe = method.body()._if(JExpr._this().eq(vObj)); condMe._then()._return(JExpr.TRUE); final JConditional condNull = method.body()._if(vObj.eq(JExpr._null())); condNull._then()._return(JExpr.FALSE); if (isSuperClass) { final JConditional condSuper = method.body()._if(JExpr._super().invoke(OPERATION_EQUALS).arg(vObj).eq(JExpr.FALSE)); condSuper._then()._return(JExpr.FALSE); } final JVar vOther = method.body().decl(JMod.FINAL, implClass, OTHER, JExpr.cast(implClass, vObj)); final JClass objectsClass = implClass.owner().ref(Objects.class); final List<JFieldVar> clonedList = new ArrayList<JFieldVar>(fields.size()); clonedList.addAll(fields); final JFieldVar first = clonedList.remove(IDX_TO_REMOVE); final JBlock block = new JBlock(); JExpression invocation = block.staticInvoke(objectsClass, OPERATION_EQUALS).arg(JExpr.ref(first.name())).arg(vOther.ref(first.name())); for (final JFieldVar jFieldVar : clonedList) { invocation = JOp.cand(invocation, block.staticInvoke(objectsClass, OPERATION_EQUALS).arg(JExpr.ref(jFieldVar.name())).arg(vOther.ref(jFieldVar.name()))); } method.body()._return(invocation); }
final JConditional ifValuesNotEqual = block._if(JOp.not(codeModel .ref(Arrays.class).staticInvoke("equals").arg(value) .arg(targetValue))); ifValuesNotEqual._then()._return(JExpr.FALSE); } else if (value.type().isPrimitive()) { final JConditional ifValuesNotEqual = block._if(JOp.ne(value, targetValue)); ifValuesNotEqual._then()._return(JExpr.FALSE); } else if (value.type() == codeModel.ref(Calendar.class)) { final JConditional ifValuesNotEqual = block._if(JOp.not(JOp.cor(JOp .eq(value, targetValue), JOp.cand(JOp.ne(value, JExpr._null()), JOp.eq(value.invoke("getTime").invoke("getTime"), targetValue .invoke("getTime").invoke("getTime")))))); ifValuesNotEqual._then()._return(JExpr.FALSE); } else if (value.type() == codeModel.ref(BigDecimal.class)) { final JConditional ifValuesNotEqual = block._if(JOp.not(JOp.cor( JOp.eq(value, targetValue), JOp.cand(JOp.ne(value, JExpr._null()), JOp.eq(value.invoke("compareTo").arg(targetValue), JExpr.lit(0)))))); ifValuesNotEqual._then()._return(JExpr.FALSE); } else { final JConditional ifValuesNotEqual = block._if(JOp.not(JOp.cor( JOp.eq(value, targetValue), JOp.cand(JOp.ne(value, JExpr._null()), value.invoke("equals").arg(targetValue)))));
/** * Override the getMessage class on an exception to make sure the * status code is displayed * @param $exception */ protected void overrideMessageOnException(JDefinedClass $exception) { JClass $responseClass = codeModel.ref(Response.class); // Create a new version of getMessage, adding on the reason phrase // if it is a standard message JMethod $getMessage = $exception.method(JMod.PUBLIC, String.class, "getMessage"); $getMessage.javadoc().append("Workaround for JAX_RS_SPEC-312"); JBlock $body = $getMessage.body(); JVar $response = $body.decl($responseClass, "response", JExpr.invoke("getResponse")); JClass $statusClass = codeModel.ref(Response.Status.class); JVar $status = $body.decl( $statusClass, "status", $statusClass.staticInvoke("fromStatusCode") .arg($response.invoke("getStatus"))); JConditional $if = $body._if(JOp.ne($status, JExpr._null())); $if._then()._return( JOp.plus($response.invoke("getStatus"), JOp.plus(JExpr.lit(" "),$status.invoke("getReasonPhrase")))); $if._else()._return( codeModel.ref(Integer.class).staticInvoke("toString") .arg( $response.invoke("getStatus"))); }
public JStatement validate(final DatabindableDatatype datatype, final JCodeModel codeModel, final JDefinedClass theClass, final JExpression value, final JAssignmentTarget problem) { final JBlock block = newBlock(); final JExpression signum = value.invoke("signum"); final JConditional ifRangeViolated = block._if(JOp.ne(signum, JExpr.lit(1))); ifRangeViolated._then().assign(problem, JExpr._new(codeModel.ref(NonPositiveProblem.class)).arg(value)); return block; } }
private JMethod addPublicSetMethod(JDefinedClass jclass, JMethod internalSetMethod) { JMethod method = jclass.method(PUBLIC, jclass.owner().VOID, SETTER_NAME); JVar nameParam = method.param(String.class, "name"); JVar valueParam = method.param(Object.class, "value"); JBlock body = method.body(); JBlock notFound = body._if(JOp.not(invoke(internalSetMethod).arg(nameParam).arg(valueParam)))._then(); // if we have additional properties, then put value. JMethod getAdditionalProperties = jclass.getMethod("getAdditionalProperties", new JType[] {}); if (getAdditionalProperties != null) { JType additionalPropertiesType = ((JClass) (getAdditionalProperties.type())).getTypeParameters().get(1); notFound.add(invoke(getAdditionalProperties).invoke("put").arg(nameParam) .arg(cast(additionalPropertiesType, valueParam))); } // else throw exception. else { notFound._throw(illegalArgumentInvocation(jclass, nameParam)); } return method; }
private void appendHashCode(final JCodeModel codeModel, final JBlock block, final JVar hash, final JType type, final JExpression value, final JExpression isValueSet) { if (type.isArray()) { final JConditional _if = block._if(JExpr._null().eq(value)); _if._then().assign(hash, JOp.mul(JExpr.lit(31), hash)); final JForLoop _for = _if._else()._for(); final JVar i = _for.init(codeModel.INT, "i", JExpr.lit(0)); _for.test(JOp.lt(i, value.ref("length"))); _for.update(JOp.incr(i)); final JVar valueComponent = _for.body().decl(type.elementType(), "valueComponent", value.component(i)); _for.body().assign( hash, JOp.plus( JOp.mul(JExpr.lit(31), hash), valueHashCode(codeModel, type.elementType(), valueComponent, JOp.eq(JExpr._null(), valueComponent)))); } else { block.assign( hash, JOp.plus(JOp.mul(JExpr.lit(31), hash), valueHashCode(codeModel, type, value, isValueSet))); } }
private void createFieldReferenceSetterBody(JFieldVar field, JVar param, JBlock body) { JVar cont = body.decl(CLASS_MAP.get(PrismReferenceValue.class), REFERENCE_VALUE_FIELD_NAME, JOp.cond(param.ne(JExpr._null()), JExpr.invoke(param, METHOD_AS_REFERENCE_VALUE), JExpr._null())); JInvocation invocation = body.staticInvoke(CLASS_MAP.get(PrismForJAXBUtil.class), METHOD_PRISM_UTIL_SET_REFERENCE_VALUE_AS_REF); invocation.arg(JExpr.invoke(METHOD_AS_PRISM_CONTAINER_VALUE)); invocation.arg(JExpr.ref(fieldFPrefixUnderscoredUpperCase(field.name()))); invocation.arg(cont); }
final JBlock body = toStringIndented.body(); final JVar indent = toStringIndented.param(JMod.FINAL, String.class, "indent"); final JVar subindent = body.decl( JMod.FINAL, codeModel.ref(String.class), "subindent", JOp.plus(indent, JExpr.lit('\t'))); final JVar buffer = toStringIndented.param(JMod.FINAL, StringBuffer.class, "buffer"); body.invoke(buffer, "append").arg(JExpr.lit(classOutline.target.shortName)); body.invoke(buffer, "append").arg(JExpr.lit(" {"));
._this()); CPropertyInfo propertyInfo = fieldOutline.getPropertyInfo(); final String privateName = propertyInfo.getName(false); final JConditional ifSet = block._if(accessor.hasSetValue()); final JBlock ifSetThen = ifSet._then(); final JType rawType = fieldOutline.getRawType(); final JVar value = ifSetThen.decl(rawType, privateName + "Value"); accessor.toRawValue(ifSetThen, value); ifSetThen.invoke(buffer, "append").arg(JExpr.lit('\n')); ifSetThen.invoke(buffer, "append").arg(indent); ifSetThen.invoke(buffer, "append").arg(privateName + ":"); ifSetThen.staticInvoke(codeModel.ref(ToStringUtils.class), "toIndentedString").arg(value).arg(JOp.plus(indent, JExpr.lit('\t'))).arg(buffer); ifSetThen.staticInvoke(codeModel.ref(ToStringUtils.class), "collectionToIndentedString").arg(value).arg(JOp.plus(indent, JExpr.lit('\t'))).arg(buffer);
private JStatement assignWildcardCopy(final JAssignmentTarget valueCopy, final JExpression value, final JType type) { final JConditional conditional = JBlock.dummyInstance._if(JOp ._instanceof(value, codeModel.ref(Cloneable.class))); conditional._then().add( assignClone(valueCopy, JExpr.cast(codeModel .ref(Cloneable.class), value), type)); conditional._else().add(assign(valueCopy, value)); return conditional; }