private ConstructorMetadata addAndGetConstructor(ConstructorMetadata constructor) { ensureGovernorHasConstructor(new ConstructorMetadataBuilder(constructor)); return constructor; }
public final boolean addConstructor(final ConstructorMetadata constructor) { if (constructor == null) { return false; } return addConstructor(new ConstructorMetadataBuilder(constructor)); }
public final boolean addConstructor(final ConstructorMetadataBuilder constructorBuilder) { // If received constructor builder is null, return false if (constructorBuilder == null) { return false; } else if (!getDeclaredByMetadataId().equals(constructorBuilder.getDeclaredByMetadataId())) { // Generating new constructor using delcaredMetadataId ConstructorMetadataBuilder updatedConstructorBuilder = new ConstructorMetadataBuilder(getDeclaredByMetadataId(), constructorBuilder.build()); onAddConstructor(updatedConstructorBuilder); return declaredConstructors.add(updatedConstructorBuilder); } onAddConstructor(constructorBuilder); return declaredConstructors.add(constructorBuilder); }
private void init(final MemberHoldingTypeDetails existing) { for (final ConstructorMetadata element : existing.getDeclaredConstructors()) { declaredConstructors.add(new ConstructorMetadataBuilder(element)); } for (final FieldMetadata element : existing.getDeclaredFields()) { declaredFields.add(new FieldMetadataBuilder(element)); } for (final MethodMetadata element : existing.getDeclaredMethods()) { declaredMethods.add(new MethodMetadataBuilder(element)); } for (final ClassOrInterfaceTypeDetails element : existing.getDeclaredInnerTypes()) { declaredInnerTypes.add(new ClassOrInterfaceTypeDetailsBuilder(element)); } for (final InitializerMetadata element : existing.getDeclaredInitializers()) { declaredInitializers.add(new InitializerMetadataBuilder(element)); } extendsTypes.addAll(existing.getExtendsTypes()); implementsTypes.addAll(existing.getImplementsTypes()); }
/** * Constructor * * @param identifier the identifier for this item of metadata (required) * @param aspectName the Java type of the ITD (required) * @param governorPhysicalTypeMetadata the governor, which is expected to * contain a {@link ClassOrInterfaceTypeDetails} (required) * */ public DomainModelModuleMetadata(final String identifier, final JavaType aspectName, final PhysicalTypeMetadata governorPhysicalTypeMetadata, final Map<JavaType, JavaType> mixins) { super(identifier, aspectName, governorPhysicalTypeMetadata); Map<JavaType, JavaType> orderedMixins = new TreeMap<JavaType, JavaType>(mixins); this.mixins = Collections.unmodifiableMap(orderedMixins); // Add @Configuration ensureGovernorIsAnnotated(new AnnotationMetadataBuilder(BOOT_JACKSON_JSON_COMPONENT)); // Add extends WebMvcConfigurerAdapter ensureGovernorExtends(JACKSON_SIMPLE_MODULE); // Add constructor ensureGovernorHasConstructor(new ConstructorMetadataBuilder(getConstructor())); // Build the ITD itdTypeDetails = builder.build(); }
private ConstructorMetadata getConstructor() { InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); // Generating constructor ConstructorMetadataBuilder constructor = new ConstructorMetadataBuilder(getId()); constructor.setModifier(Modifier.PUBLIC); bodyBuilder.appendFormalLine("// Mixin registration"); bodyBuilder.newLine(); // Generating body for (Entry<JavaType, JavaType> item : mixins.entrySet()) { bodyBuilder.appendFormalLine("setMixInAnnotation(%s.class, %s.class);", getNameOfJavaType(item.getKey()), getNameOfJavaType(item.getValue())); } // Adding body constructor.setBodyBuilder(bodyBuilder); return constructor.build(); }
private ConstructorMetadata getConstructor() { // Getting MessageSource field name final String messageSource = String.valueOf(this.messageSourceField.getFieldName()); // Generating constructor ConstructorMetadataBuilder constructor = new ConstructorMetadataBuilder(getId()); constructor.setModifier(Modifier.PUBLIC); constructor.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.AUTOWIRED)); // Adding parameters constructor.addParameter(messageSource, SpringJavaType.MESSAGE_SOURCE); // Generating body InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); bodyBuilder.appendFormalLine(String.format("this.%s = %s;", messageSource, messageSource)); // Adding body constructor.setBodyBuilder(bodyBuilder); return constructor.build(); }
/** * Builds constructor with EntityManager argument. * * @return ConstructorMetadataBuilder for adding constructor to ITD */ private ConstructorMetadataBuilder getConstructorWithEntityManager() { ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(getId()); InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); constructorBuilder.addParameter(ENTITY_MANAGER_VAR, JpaJavaType.ENTITY_MANAGER); // this(entityManager, 10); bodyBuilder.appendFormalLine(String.format("this(%1$s, 10);", ENTITY_MANAGER_VAR)); constructorBuilder.setModifier(Modifier.PUBLIC); constructorBuilder.setBodyBuilder(bodyBuilder); CommentStructure comment = new CommentStructure(); List<String> paramsInfo = new ArrayList<String>(); paramsInfo.add(ENTITY_MANAGER_VAR + " to persist entities"); JavadocComment javadocComment = new JavadocComment(String.format("Creates a new {@link %s}.", this.governorPhysicalTypeMetadata.getType().getSimpleTypeName()), paramsInfo, null, null); comment.addComment(javadocComment, CommentLocation.BEGINNING); constructorBuilder.setCommentStructure(comment); return constructorBuilder; }
/** * Method that generates Service implementation constructor. If exists a * repository, it will be included as constructor parameter * * @param autowired add or not autowired annotation * * @return */ private ConstructorMetadataBuilder getConstructor(boolean autowired) { ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(getId()); InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); // Append repository parameter if needed if (repositoryFieldMetadata != null) { addFieldToConstructor(bodyBuilder, constructorBuilder, repositoryFieldMetadata, false); } for (FieldMetadata requiredService : requiredServiceFieldByEntity.values()) { addFieldToConstructor(bodyBuilder, constructorBuilder, requiredService, true); } constructorBuilder.setBodyBuilder(bodyBuilder); constructorBuilder.setModifier(Modifier.PUBLIC); if (autowired) { // Adding @Autowired annotation constructorBuilder.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.AUTOWIRED)); } return constructorBuilder; }
bodyBuilder.appendFormalLine("super();"); final ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(getId()); constructorBuilder.setModifier(publicNoArgConstructor ? Modifier.PUBLIC : Modifier.PRIVATE); constructorBuilder.setParameterTypes(AnnotatedJavaType.convertFromJavaTypes(parameterTypes));
/** * Builds constructor with EntityManager and size arguments. * * @return {@link ConstructorMetadataBuilder} for adding constructor to ITD */ private ConstructorMetadataBuilder getConstructorWithEntityManagerAndSize() { ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(getId()); InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); constructorBuilder.addParameter(ENTITY_MANAGER_VAR, JpaJavaType.ENTITY_MANAGER); constructorBuilder.addParameter(SIZE_VAR, JavaType.INT_PRIMITIVE); bodyBuilder.appendFormalLine(String.format("%1$s(%2$s);", getMutatorMethod(getEntityManagerField().build()).getMethodName(), ENTITY_MANAGER_VAR)); bodyBuilder.appendFormalLine(String.format("%1$s(%2$s);", getMutatorMethod(getSizeField()) .getMethodName(), SIZE_VAR)); constructorBuilder.setModifier(Modifier.PUBLIC); constructorBuilder.setBodyBuilder(bodyBuilder); CommentStructure comment = new CommentStructure(); List<String> paramsInfo = new ArrayList<String>(); paramsInfo.add(ENTITY_MANAGER_VAR + " to persist entities"); paramsInfo.add(SIZE_VAR + " the number of entities to create and persist initially."); JavadocComment javadocComment = new JavadocComment(String.format("Creates a new {@link %s}.", this.governorPhysicalTypeMetadata.getType().getSimpleTypeName()), paramsInfo, null, null); comment.addComment(javadocComment, CommentLocation.BEGINNING); constructorBuilder.setCommentStructure(comment); return constructorBuilder; }
@Override public ConstructorMetadata build() { final ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(declaredByMetadataId); constructorBuilder.setAnnotations(annotations); constructorBuilder.setBodyBuilder(InvocableMemberBodyBuilder.getInstance().append(body)); constructorBuilder.setModifier(modifier); constructorBuilder.setParameterNames(parameterNames); constructorBuilder.setParameterTypes(parameterTypes); constructorBuilder.setThrowsTypes(throwsTypes); return constructorBuilder.build(); } }
/** * Builds constructor for initializing <code>final</code> fields. * * @return ConstructorMetadataBuilder for adding constructor to ITD */ private ConstructorMetadataBuilder getConstructor() { ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(getId()); InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); for (FieldMetadata field : fields) { // Add all fields excluding Serializable field if (!field.getFieldName().equals(serialField)) { String fieldName = field.getFieldName().getSymbolName(); constructorBuilder.addParameter(fieldName, field.getFieldType()); bodyBuilder.appendFormalLine(String.format("this.%s = %s;", fieldName, fieldName)); } } constructorBuilder.setModifier(Modifier.PUBLIC); constructorBuilder.setBodyBuilder(bodyBuilder); return constructorBuilder; }
/** * Builds constructor for initializing <code>final</code> fields. * * @return ConstructorMetadataBuilder for adding constructor to ITD */ private ConstructorMetadataBuilder getConstructor() { ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(getId()); InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); if (annotationValues.getImmutable() == true) { for (FieldMetadata field : fields) { // Add all fields excluding Serializable field if (!field.getFieldName().equals(serialField)) { String fieldName = field.getFieldName().getSymbolName(); constructorBuilder.addParameter(fieldName, field.getFieldType()); bodyBuilder.appendFormalLine(String.format("this.%s = %s;", fieldName, fieldName)); } } } constructorBuilder.setModifier(Modifier.PUBLIC); constructorBuilder.setBodyBuilder(bodyBuilder); return constructorBuilder; }
private ConstructorMetadata getConstructor(boolean autowired) { InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); // Generating constructor ConstructorMetadataBuilder constructor = new ConstructorMetadataBuilder(getId()); constructor.setModifier(Modifier.PUBLIC); if (autowired) { constructor.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.AUTOWIRED)); } // Getting serviceFieldName String serviceFieldName = controllerMetadata.getServiceField().getFieldName().getSymbolName(); constructor.addParameter(serviceFieldName, controllerMetadata.getService()); // Generating body bodyBuilder .appendFormalLine(String.format("this.%s = %s;", serviceFieldName, serviceFieldName)); if (this.type == ControllerType.DETAIL || this.type == ControllerType.DETAIL_ITEM) { for (FieldMetadata serviceField : controllerMetadata.getDetailsServiceFields().values()) { // Getting parentServiceFieldName String childServiceFieldName = serviceField.getFieldName().getSymbolName(); // Adding parameters constructor.addParameter(childServiceFieldName, serviceField.getFieldType()); // Generating body bodyBuilder.appendFormalLine(String.format("this.%s = %s;", childServiceFieldName, childServiceFieldName)); } } // Adding body constructor.setBodyBuilder(bodyBuilder); return constructor.build(); }
/** * Builds and returns a class constructor which injects * {@link EntityManager} field. * * @return a ConstructorMetadataBuilder to add to ITD. */ private ConstructorMetadataBuilder getConstructor() { // Create instance and add parameters ConstructorMetadataBuilder constructorBuilder = new ConstructorMetadataBuilder(this.getId()); constructorBuilder.addParameter(ENTITY_MANAGER_FIELD_NAME, JpaJavaType.ENTITY_MANAGER); // Add body InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); bodyBuilder.appendFormalLine("%1$s(%2$s);", getMutatorMethod(getEntityManagerField().build()) .getMethodName(), ENTITY_MANAGER_FIELD_NAME); constructorBuilder.setBodyBuilder(bodyBuilder); constructorBuilder.setModifier(Modifier.PUBLIC); // Add @Autowired constructorBuilder.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.AUTOWIRED)); return constructorBuilder; }
/** * This method obtains the constructor method of the annotated endpoint * * @return constructor method for this endpoint */ private ConstructorMetadata getConstructor() { // Check if constructor has been generated before if (constructor != null) { return constructor; } // Creating new constructor ConstructorMetadataBuilder constructorMethod = new ConstructorMetadataBuilder(getId()); constructorMethod.setModifier(Modifier.PUBLIC); constructorMethod.addParameter(getServiceField().getFieldName() .getSymbolNameUnCapitalisedFirstLetter(), getServiceField().getFieldType()); // Generating constructor body InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); bodyBuilder.appendFormalLine("%s(%s);", getMutatorMethod(getServiceField()).getMethodName(), getServiceField().getFieldName().getSymbolNameUnCapitalisedFirstLetter()); constructorMethod.setBodyBuilder(bodyBuilder); constructor = constructorMethod.build(); return constructor; }
ensureGovernorHasConstructor(new ConstructorMetadataBuilder(constructor));
public static ConstructorMetadata getConstructor(String declaredByMetadataId, FieldMetadata serviceField, FieldMetadata conversionServiceField) { InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder(); // Generating constructor ConstructorMetadataBuilder constructor = new ConstructorMetadataBuilder(declaredByMetadataId); constructor.setModifier(Modifier.PUBLIC); constructor.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.AUTOWIRED)); // add Service to constructor String serviceFieldName = serviceField.getFieldName().getSymbolName(); AnnotatedJavaType serviceParameter = new AnnotatedJavaType(serviceField.getFieldType(), new AnnotationMetadataBuilder( SpringJavaType.LAZY).build()); constructor.addParameterName(serviceField.getFieldName()); constructor.addParameterType(serviceParameter); // Generating body bodyBuilder.appendFormalLine("this.%1$s = %1$s;", serviceFieldName); // add Conversion service to constructor String conversionServiceFieldName = conversionServiceField.getFieldName().getSymbolName(); constructor.addParameter(conversionServiceFieldName, conversionServiceField.getFieldType()); // Generating body bodyBuilder.appendFormalLine("this.%1$s = %1$s;", conversionServiceFieldName); // Adding body constructor.setBodyBuilder(bodyBuilder); return constructor.build(); }
ensureGovernorHasConstructor(new ConstructorMetadataBuilder(constructor));