/** * This method adds new WebMVCThymeleafUIConfiguration.java class inside .config * package of generated project * * @param module */ private void addWebMVCThymeleafUIConfiguration(Pom module) { // Obtain the class annotated with @RooWebMvcConfiguration Set<ClassOrInterfaceTypeDetails> webMvcConfigurationSet = getTypeLocationService().findClassesOrInterfaceDetailsWithAnnotation( RooJavaType.ROO_WEB_MVC_CONFIGURATION); if (webMvcConfigurationSet == null || webMvcConfigurationSet.isEmpty()) { throw new IllegalStateException(String.format( "ERROR: Can't found configuration class annotated with @%s.", RooJavaType.ROO_WEB_MVC_CONFIGURATION)); } ClassOrInterfaceTypeDetails webMvcConfiguration = webMvcConfigurationSet.iterator().next(); // Prevent to include the @RooWebMvcThymeleafUIConfiguration more than once if (webMvcConfiguration.getAnnotation(RooJavaType.ROO_WEB_MVC_THYMELEAF_UI_CONFIGURATION) == null) { AnnotationMetadataBuilder thymeleaftConfigurationAnnotation = new AnnotationMetadataBuilder(RooJavaType.ROO_WEB_MVC_THYMELEAF_UI_CONFIGURATION); ClassOrInterfaceTypeDetailsBuilder cidBuilder = new ClassOrInterfaceTypeDetailsBuilder(webMvcConfiguration);; cidBuilder.addAnnotation(thymeleaftConfigurationAnnotation); cidBuilder.addImplementsType(SpringJavaType.APPLICATION_CONTEXT_AWARE); getTypeManagementService().createOrUpdateTypeOnDisk(cidBuilder.build()); } }
/** * This operation annotates a controller with the THYMELEAF annotation * * @param controller JavaType with the controller to be annotated. */ @Override public void annotate(JavaType controller) { Validate.notNull(controller, "ERROR: You must provide a valid controller"); ClassOrInterfaceTypeDetails controllerDetails = getTypeLocationService().getTypeDetails(controller); // Check if provided controller exists on current project Validate.notNull(controllerDetails, "ERROR: You must provide an existing controller"); // Check if provided controller has been annotated with @RooController Validate.notNull(controllerDetails.getAnnotation(RooJavaType.ROO_CONTROLLER), "ERROR: You must provide a controller annotated with @RooController"); // Add Thymeleaf annotation ClassOrInterfaceTypeDetailsBuilder typeBuilder = new ClassOrInterfaceTypeDetailsBuilder(controllerDetails); typeBuilder.addAnnotation(new AnnotationMetadataBuilder(getAnnotation())); // Write changes on provided controller getTypeManagementService().createOrUpdateTypeOnDisk(typeBuilder.build()); }
/** * This operation annotates a controller with the JSON annotation * * @param controller JavaType with the controller to be annotated. */ @Override public void annotate(JavaType controller) { Validate.notNull(controller, "ERROR: You must provide a valid controller"); ClassOrInterfaceTypeDetails controllerDetails = getTypeLocationService().getTypeDetails(controller); // Check if provided controller exists on current project Validate.notNull(controllerDetails, "ERROR: You must provide an existing controller"); // Check if provided controller has been annotated with @RooController Validate.notNull(controllerDetails.getAnnotation(RooJavaType.ROO_CONTROLLER), "ERROR: You must provide a controller annotated with @RooController"); // Add JSON annotation ClassOrInterfaceTypeDetailsBuilder typeBuilder = new ClassOrInterfaceTypeDetailsBuilder(controllerDetails); typeBuilder.addAnnotation(new AnnotationMetadataBuilder(getAnnotation())); // Write changes on provided controller getTypeManagementService().createOrUpdateTypeOnDisk(typeBuilder.build()); }
cidBuilder.addAnnotation(rooDtoAnnotation); cidBuilder.addAnnotation(rooJavaBeanAnnotation); AnnotationMetadataBuilder rooEqualsAnnotation = new AnnotationMetadataBuilder(RooJavaType.ROO_EQUALS); cidBuilder.addAnnotation(rooToStringAnnotation); cidBuilder.addAnnotation(rooEqualsAnnotation); AnnotationMetadataBuilder rooSerializableAnnotation = new AnnotationMetadataBuilder(RooJavaType.ROO_SERIALIZABLE); cidBuilder.addAnnotation(rooSerializableAnnotation);
ClassOrInterfaceTypeDetailsBuilder builder = new ClassOrInterfaceTypeDetailsBuilder(applicationClass); builder.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.ENABLE_CACHING)); getTypeManagementService().createOrUpdateTypeOnDisk(builder.build());
cidBuilder.addAnnotation(serviceAnnotation);
controllerBuilder.addAnnotation(controllerAnnotation.build()); controllerBuilder.addAnnotation(searchAnnotation); controllerBuilder.addAnnotation(responseTypeAnnotation); return controllerBuilder;
annotationBuilder.addAttribute(new ClassAttributeValue(new JavaSymbolName("controller"), controller)); typeBuilder.addAnnotation(annotationBuilder);
new AnnotationMetadataBuilder(RooJavaType.ROO_JPA_ENTITY_FACTORY); entityFactoryAnnotation.addClassAttribute("entity", entity); cidBuilder.addAnnotation(entityFactoryAnnotation);
@Override public void createUnitTest(final JavaType entity) { Validate.notNull(entity, "Class to produce an unit test class for is required"); // Check if provided JavaType is a Repository ClassOrInterfaceTypeDetails cid = typeLocationService.getTypeDetails(entity); Validate.notNull(cid.getAnnotation(RooJavaType.ROO_JPA_ENTITY), "Type must be a Roo JPA Entity type."); // Create JPA DataOnDemand artifacts List<DataOnDemandCreatorProvider> dodCreators = getValidDataOnDemandCreatorsForType(entity); for (DataOnDemandCreatorProvider dodCreator : dodCreators) { dodCreator.createDataOnDemand(entity); } final JavaType name = new JavaType(entity + "Test", entity.getModule()); final String declaredByMetadataId = PhysicalTypeIdentifier.createIdentifier(name, Path.SRC_TEST_JAVA.getModulePathId(entity.getModule())); if (metadataService.get(declaredByMetadataId) != null) { // The file already exists return; } // Add @RooUnitTest to source file AnnotationMetadataBuilder rooUnitTestAnnotation = new AnnotationMetadataBuilder(RooJavaType.ROO_JPA_UNIT_TEST); rooUnitTestAnnotation.addClassAttribute("targetClass", entity); final ClassOrInterfaceTypeDetailsBuilder cidBuilder = new ClassOrInterfaceTypeDetailsBuilder(declaredByMetadataId, Modifier.PUBLIC, name, PhysicalTypeCategory.CLASS); cidBuilder.addAnnotation(rooUnitTestAnnotation); typeManagementService.createOrUpdateTypeOnDisk(cidBuilder.build()); }
public void addEqualsAndHashCodeMethods(final JavaType javaType, final boolean appendSuper, final Set<String> excludeFields) { // Add @RooEquals annotation to class if not yet present final ClassOrInterfaceTypeDetails cid = typeLocationService.getTypeDetails(javaType); if (cid == null || cid.getTypeAnnotation(ROO_EQUALS) != null) { return; } final AnnotationMetadataBuilder annotationBuilder = new AnnotationMetadataBuilder(ROO_EQUALS); if (appendSuper) { annotationBuilder.addBooleanAttribute("appendSuper", appendSuper); } if (!CollectionUtils.isEmpty(excludeFields)) { final List<StringAttributeValue> attributes = new ArrayList<StringAttributeValue>(); for (final String excludeField : excludeFields) { attributes.add(new StringAttributeValue(new JavaSymbolName("value"), excludeField)); } annotationBuilder.addAttribute(new ArrayAttributeValue<StringAttributeValue>( new JavaSymbolName("excludeFields"), attributes)); } final ClassOrInterfaceTypeDetailsBuilder cidBuilder = new ClassOrInterfaceTypeDetailsBuilder(cid); cidBuilder.addAnnotation(annotationBuilder.build()); typeManagementService.createOrUpdateTypeOnDisk(cidBuilder.build()); } }
cidBuilder.addAnnotation(jaxbEntityAnnotation); cidBuilder.addAnnotation(jaxbEntityAnnotation);
typeBuilder.addAnnotation(new AnnotationMetadataBuilder(RooJavaType.ROO_DOMAIN_MODEL_MODULE));
new ClassOrInterfaceTypeDetailsBuilder(declaredByMetadataId, Modifier.PUBLIC, dodConfigurationClass, PhysicalTypeCategory.CLASS); cidBuilder.addAnnotation(new AnnotationMetadataBuilder( RooJavaType.ROO_JPA_DATA_ON_DEMAND_CONFIGURATION));
new ClassOrInterfaceTypeDetailsBuilder(mid, PUBLIC, controllerAdviceClass, PhysicalTypeCategory.CLASS); typeBuilder.addAnnotation(new AnnotationMetadataBuilder(SpringJavaType.CONTROLLER_ADVICE) .build());
PhysicalTypeCategory.CLASS); implTypeBuilder.addAnnotation(implAnnotationMetadata.build());
typeBuilder.addAnnotation(repositoryCondigurationAnnotation);
@Override public void addJpaAuditToEntity(JavaType entity, String createdDateColumn, String modifiedDateColumn, String createdByColumn, String modifiedByColumn) { // Getting entity details ClassOrInterfaceTypeDetails entityDetails = getTypeLocationService().getTypeDetails(entity); ClassOrInterfaceTypeDetailsBuilder cidBuilder = new ClassOrInterfaceTypeDetailsBuilder(entityDetails); // Add audit fields cidBuilder.addField(getCreatedDateField(entityDetails, createdDateColumn)); cidBuilder.addField(getModifiedDateField(entityDetails, modifiedDateColumn)); cidBuilder.addField(getCreatedByField(entityDetails, createdByColumn)); cidBuilder.addField(getModifiedByField(entityDetails, modifiedByColumn)); // Add @RooJpaAudit annotation if needed if (entityDetails.getAnnotation(RooJavaType.ROO_JPA_AUDIT) == null) { cidBuilder.addAnnotation(new AnnotationMetadataBuilder(RooJavaType.ROO_JPA_AUDIT).build()); } // Write changes on disk getTypeManagementService().createOrUpdateTypeOnDisk(cidBuilder.build()); }
"entity"), domainType)); interfaceBuilder.addAnnotation(repositoryCustomAnnotationMetadata);
cidBuilder.addAnnotation(interfaceAnnotationMetadata.build());