/** * Method to obtain details of some entity * * @param out */ private void getEntityDetails(String entityName, PrintWriter out) throws ServletException, IOException { List<Entity> allEntities = new ArrayList<Entity>(); // Getting all entities Set<ClassOrInterfaceTypeDetails> entities = getTypeLocationService() .findClassesOrInterfaceDetailsWithAnnotation(new JavaType(RooJavaBean.class)); Iterator<ClassOrInterfaceTypeDetails> it = entities.iterator(); while (it.hasNext()) { // Getting entity ClassOrInterfaceTypeDetails entity = it.next(); // Entity Name String currentEntityName = entity.getName().getFullyQualifiedTypeName(); String topLevelPackage = getProjectOperations().getFocusedTopLevelPackage().toString(); // Replacing topLevelPackage with ~ currentEntityName = currentEntityName.replace(topLevelPackage, "~"); // Getting info only about selected entity if (entityName.equals(currentEntityName)) { List<Field> entityFields = new ArrayList<Field>(); for (FieldMetadata field : entity.getDeclaredFields()) { // Getting fields values String fieldName = field.getFieldName().getSymbolName(); String fieldType = field.getFieldType().getSimpleTypeName(); // Getting referenced class String referencedClass = ""; if (field.getFieldType().getSimpleTypeName().equals("Set") || field.getFieldType().getSimpleTypeName().equals("List")) { referencedClass = field.getFieldType().getParameters().get(0).getSimpleTypeName(); } else { AnnotationMetadata manyToOneAnnotation = field.getAnnotation(new JavaType("javax.persistence.ManyToOne")); if (manyToOneAnnotation != null) { referencedClass = field.getFieldType().getFullyQualifiedTypeName(); referencedClass = referencedClass.replace(topLevelPackage, "~"); fieldType = "Reference"; } } // Creating entityField Object Field entityField = new Field(fieldName, fieldType, referencedClass); // Adding field to entity entityFields.add(entityField); } // Checking if current entity is abstract boolean isAbstractEntity = entity.isAbstract(); // Adding extends type List<String> extendsTypes = new ArrayList<String>(); for (JavaType extendsType : entity.getExtendsTypes()) { extendsTypes.add(extendsType.getFullyQualifiedTypeName().replace(topLevelPackage, "~")); } // Creating Entity Object allEntities.add( new Entity(currentEntityName, extendsTypes, isAbstractEntity, entityFields)); } } // Returning JSON ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); String json = ow.writeValueAsString(allEntities); out.println(json); }