@Override public List<MemberValuePair> visit( SingleMemberAnnotationExpr n, Void arg) { return Collections.singletonList(new MemberValuePair( "value", n.getMemberValue())); } }, null);
final public MemberValuePair MemberValuePair() throws ParseException { String name; Expression value; int line; int column; jj_consume_token(IDENTIFIER); name = token.image; line=token.beginLine; column=token.beginColumn; jj_consume_token(ASSIGN); value = MemberValue(); {if (true) return new MemberValuePair(line, column, token.endLine, token.endColumn,name, value);} throw new Error("Missing return statement in function"); }
private AnnotationExpr createJoinColumn(FieldDescriptor thisField, FieldDescriptor itemField) { final List<MemberValuePair> pairs = new ArrayList<MemberValuePair>(); pairs.add(new MemberValuePair("name", new StringLiteralExpr(thisField.getColumnName()))); pairs.add(new MemberValuePair("referencedColumnName", new StringLiteralExpr(itemField.getColumnName()))); if (!isAnonymousFk(thisField)) { pairs.add(new MemberValuePair("insertable", new BooleanLiteralExpr(false))); pairs.add(new MemberValuePair("updatable", new BooleanLiteralExpr(false))); } // Per this page: https://forums.oracle.com/message/3923913 // the nullable attribute is a hint to the DDL generation, especially on fields like this. // Commenting this flag out for now as it's just "noise" in the annotation definitions // if (!isNullableFk(thisField)) { // pairs.add(new MemberValuePair("nullable", new BooleanLiteralExpr(false))); // } return new NormalAnnotationExpr(new NameExpr("JoinColumn"), pairs); }
final public MemberValuePair MemberValuePair() throws ParseException { String name; Expression value; int line; int column; jj_consume_token(IDENTIFIER); name = token.image; line=token.beginLine; column=token.beginColumn; jj_consume_token(ASSIGN); value = MemberValue(); MemberValuePair tmp = new MemberValuePair(line, column, token.endLine, token.endColumn,name, value); {if (true) return tmp;} throw new Error("Missing return statement in function"); }
@Override protected NodeData getAnnotationNodes(String enclosingClass, String fieldName, String mappedClass) { final FieldDescriptor fd = OjbUtil.findFieldDescriptor(mappedClass, fieldName, descriptorRepositories); if (fd != null) { final boolean autoInc = fd.isAutoIncrement(); final String seqName = fd.getSequenceName(); if (autoInc && StringUtils.isBlank(seqName)) { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has autoincrement set to true but sequenceName is blank."); } if (!autoInc && StringUtils.isNotBlank(seqName)) { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has autoincrement set to false but sequenceName is " + seqName + "."); } if (autoInc || StringUtils.isNotBlank(seqName)) { return new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("name", new StringLiteralExpr(upperCaseTableName ? seqName.toUpperCase() : seqName)))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false)); } } return null; } }
for (int i = 0; i < pfds.length; i++) { final List<MemberValuePair> pairs = new ArrayList<MemberValuePair>(); pairs.add(new MemberValuePair("name", new StringLiteralExpr(pfds[i].getColumnName()))); pairs.add(new MemberValuePair("referencedColumnName", new StringLiteralExpr(ipfds[i].getColumnName()))); joinColumns.add(new NormalAnnotationExpr(new NameExpr("PrimaryKeyJoinColumn"), pairs));
@Override protected NodeData getAnnotationNodes(String enclosingClass, String fieldName, String mappedClass) { final FieldDescriptor fd = OjbUtil.findFieldDescriptor(mappedClass, fieldName, descriptorRepositories); if (fd != null) { final boolean autoInc = fd.isAutoIncrement(); final String seqName = fd.getSequenceName(); if (autoInc && StringUtils.isBlank(seqName)) { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has autoincrement set to true but sequenceName is blank."); } if (!autoInc && StringUtils.isNotBlank(seqName)) { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has autoincrement set to false but sequenceName is " + seqName + "."); } if (autoInc || StringUtils.isNotBlank(seqName)) { return new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("generator", new StringLiteralExpr(upperCaseTableName ? seqName.toUpperCase() : seqName)))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false)); } } return null; } }
final String access = fd.getAccess(); if ("readonly".equals(access)) { pairs.add(new MemberValuePair("insertable", new BooleanLiteralExpr(false))); pairs.add(new MemberValuePair("updatable", new BooleanLiteralExpr(false))); } else if ("readwrite".equals(access)) { LOG.debug(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field access is readwrite keeping @Column attributes (insertable, updatable) at defaults"); pairs.add(new MemberValuePair("name", new StringLiteralExpr(upperCaseTableName ? columnName.toUpperCase() : columnName))); } else { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field column is blank"); pairs.add(new MemberValuePair("nullable", new BooleanLiteralExpr(false))); } else { LOG.debug(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field is nullable keeping @Column attribute (nullable) at default"); pairs.add(new MemberValuePair("length", new IntegerLiteralExpr(String.valueOf(length)))); } else { LOG.debug(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field length is not set keeping @Column attribute (length) at default"); pairs.add(new MemberValuePair("precision", new IntegerLiteralExpr(String.valueOf(precision)))); } else { LOG.debug(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field precision is not set keeping @Column attribute (precision) at default"); pairs.add(new MemberValuePair("scale", new IntegerLiteralExpr(String.valueOf(scale)))); } else { LOG.debug(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field scale is not set keeping @Column attribute (scale) at default");
LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has a converter " + fc.getClass().getName() + " but a replacement converter was not configured, unable to set Convert class"); return new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("converter", new NameExpr(null)))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false)); } else if ( StringUtils.isBlank(jpaConverter) ) { final String shortClassName = ClassUtils.getShortClassName(jpaConverter); final String packageName = ClassUtils.getPackageName(jpaConverter); return new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("converter", new NameExpr(shortClassName + ".class")))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false), Collections.singletonList(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(packageName), shortClassName), false, false)));
error = true; } else { pairs.add(new MemberValuePair("name", new StringLiteralExpr(joinTable))); for (String fk : fkToItemClass) { final List<MemberValuePair> joinColumnsPairs = new ArrayList<MemberValuePair>(); joinColumnsPairs.add(new MemberValuePair("name", new StringLiteralExpr(fk))); final Collection<String> pks = OjbUtil.getPrimaryKeyNames(itemClassName, descriptorRepositories); joinColumnsPairs.add(new MemberValuePair("referencedColumnName", new StringLiteralExpr(getPksAsString(pks)))); joinColumns.add(new NormalAnnotationExpr(new NameExpr("JoinColumn"), joinColumnsPairs)); pairs.add(new MemberValuePair("joinColumns", new ArrayInitializerExpr(joinColumns))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "JoinColumn"), false, false)); for (String fk : fkToItemClass) { final List<MemberValuePair> invJoinColumnsPairs = new ArrayList<MemberValuePair>(); invJoinColumnsPairs.add(new MemberValuePair("name", new StringLiteralExpr(fk))); final Collection<String> pks = OjbUtil.getPrimaryKeyNames(mappedClass, descriptorRepositories); invJoinColumnsPairs.add(new MemberValuePair("referencedColumnName", new StringLiteralExpr( getPksAsString(pks)))); invJoinColumns.add(new NormalAnnotationExpr(new NameExpr("JoinColumn"), invJoinColumnsPairs)); pairs.add(new MemberValuePair("inverseJoinColumns", new ArrayInitializerExpr(invJoinColumns)));
final String shortClassName = ClassUtils.getShortClassName(className); final String packageName = ClassUtils.getPackageName(className); pairs.add(new MemberValuePair("targetEntity", new NameExpr(shortClassName + ".class"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(packageName), shortClassName), false, false)); pairs.add(new MemberValuePair("fetch", new NameExpr("FetchType.LAZY"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "FetchType"), false, false)); pairs.add(new MemberValuePair("cascade", new ArrayInitializerExpr(cascadeTypes))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "CascadeType"), false, false));
@Override public NodeData resolve(Node node, String mappedClass) { if (!(node instanceof ClassOrInterfaceDeclaration)) { throw new IllegalArgumentException("this annotation belongs only on ClassOrInterfaceDeclaration"); } final TypeDeclaration dclr = (TypeDeclaration) node; if (!(dclr.getParentNode() instanceof CompilationUnit)) { //handling nested classes return null; } final String name = dclr.getName(); final String pckg = ((CompilationUnit) dclr.getParentNode()).getPackage().getName().toString(); final String enclosingClass = pckg + "." + name; final ClassDescriptor cd = OjbUtil.findClassDescriptor(enclosingClass, descriptorRepositories); if (cd != null) { final String tableName = getMappedTable(enclosingClass); if (tableName == null) { LOG.error(ResolverUtil.logMsgForClass(enclosingClass, mappedClass) + " table could not be found"); return null; } return new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("name", new StringLiteralExpr(upperCaseTableName ? tableName.toUpperCase() : tableName)))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false)); } return null; }
@Override public Node visit(MemberValuePair _n, Object _arg) { Expression value = cloneNodes(_n.getValue(), _arg); Comment comment = cloneNodes(_n.getComment(), _arg); MemberValuePair r = new MemberValuePair( _n.getBeginLine(), _n.getBeginColumn(), _n.getEndLine(), _n.getEndColumn(), _n.getName(), value ); r.setComment(comment); return r; }
final String shortClassName = ClassUtils.getShortClassName(itemClassName); final String packageName = ClassUtils.getPackageName(itemClassName); pairs.add(new MemberValuePair("targetEntity", new NameExpr(shortClassName + ".class"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(packageName), shortClassName), false, false)); pairs.add(new MemberValuePair("fetch", new NameExpr("FetchType.LAZY"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "FetchType"), false, false)); } else if (autoDelete == ObjectReferenceDescriptor.CASCADE_OBJECT) { cascadeTypes.add(new NameExpr("CascadeType.REMOVE")); pairs.add(new MemberValuePair("orphanRemoval", new BooleanLiteralExpr(true))); } else { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has auto-delete set to an invalid value"); pairs.add(new MemberValuePair("cascade", new ArrayInitializerExpr(cascadeTypes))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "CascadeType"), false, false));
final String shortClassName = ClassUtils.getShortClassName(itemClassName); final String packageName = ClassUtils.getPackageName(itemClassName); pairs.add(new MemberValuePair("targetEntity", new NameExpr(shortClassName + ".class"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(packageName), shortClassName), false, false)); pairs.add(new MemberValuePair("fetch", new NameExpr("FetchType.LAZY"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "FetchType"), false, false)); } else if (autoDelete == ObjectReferenceDescriptor.CASCADE_OBJECT) { cascadeTypes.add(new NameExpr("CascadeType.REMOVE")); pairs.add(new MemberValuePair("orphanRemoval", new BooleanLiteralExpr(true))); } else { LOG.error(ResolverUtil.logMsgForField(enclosingClass, fieldName, mappedClass) + " field has auto-delete set to an invalid value"); pairs.add(new MemberValuePair("cascade", new ArrayInitializerExpr(cascadeTypes))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "CascadeType"), false, false)); if (registry.isOwnerItemClassManyToOne(mappedClass, itemClassName)) { nodeData = new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("mappedBy", new StringLiteralExpr(getMappedBy( mappedClass, itemClassName))))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false), Collections.singletonList(new MemberValuePair("mappedBy", new StringLiteralExpr(getMappedBy( mappedClass, itemClassName))))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false),
@Override protected NodeData getAnnotationNodes(String enclosingClass, String fieldName, String mappedClass) { final FieldDescriptor fd = OjbUtil.findFieldDescriptor(mappedClass, fieldName, descriptorRepositories); if (fd != null) { final Class<?> fc = ResolverUtil.getType(enclosingClass, fieldName); if (isEnum(fc)) { final Comment fixme = new BlockComment("\nFIXME:\n" + "Enums must be annotated with the @Enumerated annotation.\n " + "The @Enumerated annotation should set the EnumType.\n" + "If the EnumType is not set, then the Enumerated annotation is defaulted to EnumType.ORDINAL.\n" + "This conversion program cannot tell whether EnumType.ORDINAL is the appropriate EnumType."); AnnotationExpr enumerated = new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("value", new NameExpr("EnumType.")))); enumerated.setComment(fixme); return new NodeData(enumerated, new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false), Collections.singletonList(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "TemporalType"), false, false))); } } return null; }
final String shortClassName = ClassUtils.getShortClassName(itemClassName); final String packageName = ClassUtils.getPackageName(itemClassName); pairs.add(new MemberValuePair("targetEntity", new NameExpr(shortClassName + ".class"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(packageName), shortClassName), false, false)); pairs.add(new MemberValuePair("fetch", new NameExpr("FetchType.LAZY"))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "FetchType"), false, false)); pairs.add(new MemberValuePair("cascade", new ArrayInitializerExpr(cascadeTypes))); additionalImports.add(new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), "CascadeType"), false, false)); } else if (registry.isOwnerItemClassManyToMany(mappedClass, itemClassName)) { nodeData = new NodeData(new NormalAnnotationExpr(new NameExpr(SIMPLE_NAME), Collections.singletonList(new MemberValuePair("mappedBy", new StringLiteralExpr(getMappedBy(mappedClass, itemClassName))))), new ImportDeclaration(new QualifiedNameExpr(new NameExpr(PACKAGE), SIMPLE_NAME), false, false), additionalImports);
List<AnnotationExpr> a = Collections.<AnnotationExpr>singletonList(new NormalAnnotationExpr(ASTHelper.createNameExpr( Application.class.getName()), Collections.<MemberValuePair>singletonList(new MemberValuePair( "name", new StringLiteralExpr("abc") ))));
List<AnnotationExpr> a = Collections.<AnnotationExpr>singletonList(new NormalAnnotationExpr(ASTHelper.createNameExpr( Application.class.getName()), Collections.<MemberValuePair>singletonList(new MemberValuePair( "name", new StringLiteralExpr("abc") ))));