Skip to content

Commit

Permalink
Fixed Hibernate entity and configuration handling as well, and added …
Browse files Browse the repository at this point in the history
…some tests
  • Loading branch information
jsight committed Mar 21, 2016
1 parent 8a1ddea commit 023e5c7
Show file tree
Hide file tree
Showing 23 changed files with 316 additions and 168 deletions.
Expand Up @@ -41,16 +41,14 @@ public interface FileModel extends ResourceModel
String PARSE_ERROR = "parseError";
String ON_PARSE_ERROR = "onParseError";

public static enum OnParseError {
enum OnParseError {
IGNORE, WARN;
OnParseError fromName(String name){
return EnumUtils.getEnum(OnParseError.class, StringUtils.upperCase(name));
//return OnParseError.valueOf(StringUtils.upperCase(name));
}
}



/**
* Contains the File Name (the last component of the path). Eg, a file /tmp/foo/bar/file.txt would have fileName set to "file.txt"
*/
Expand Down
Expand Up @@ -16,19 +16,19 @@
public interface HibernateConfigurationFileModel extends XmlFileModel
{

public static final String HIBERNATE_SESSION_FACTORY = "hibernateSessionFactory";
public static final String SPECIFICATION_VERSION = "specificationVersion";
public static final String TYPE = "HibernateConfigurationFileModel";
String HIBERNATE_SESSION_FACTORY = "hibernateSessionFactory";
String SPECIFICATION_VERSION = "specificationVersion";
String TYPE = "HibernateConfigurationFileModel";

@Property(SPECIFICATION_VERSION)
public String getSpecificationVersion();
String getSpecificationVersion();

@Property(SPECIFICATION_VERSION)
public void setSpecificationVersion(String version);
void setSpecificationVersion(String version);

@Adjacency(label = HIBERNATE_SESSION_FACTORY, direction = Direction.OUT)
public Iterable<HibernateSessionFactoryModel> getHibernateSessionFactories();
Iterable<HibernateSessionFactoryModel> getHibernateSessionFactories();

@Adjacency(label = HIBERNATE_SESSION_FACTORY, direction = Direction.OUT)
public void addHibernateSessionFactory(HibernateSessionFactoryModel hibernateSessionFactor);
void addHibernateSessionFactory(HibernateSessionFactoryModel hibernateSessionFactor);
}
@@ -1,5 +1,6 @@
package org.jboss.windup.rules.apps.javaee.model;

import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.model.WindupVertexFrame;
import org.jboss.windup.rules.apps.java.model.JavaClassModel;

Expand All @@ -17,70 +18,83 @@
@TypeValue(HibernateEntityModel.TYPE)
public interface HibernateEntityModel extends WindupVertexFrame
{
public static final String CATALOG_NAME = "catalogName";
public static final String SCHEMA_NAME = "schemaName";
public static final String TABLE_NAME = "tableName";
public static final String SPECIFICATION_VERSION = "specificationVersion";
public static final String HIBERNATE_ENTITY_CLASS = "hibernateEntityClass";
public static final String TYPE = "HibernateEntityModel";
String CATALOG_NAME = "catalogName";
String SCHEMA_NAME = "schemaName";
String TABLE_NAME = "tableName";
String SPECIFICATION_VERSION = "specificationVersion";
String HIBERNATE_ENTITY_CLASS = "hibernateEntityClass";
String TYPE = "HibernateEntityModel";
String APPLICATION = "application";

/**
* Contains the application in which this Spring Bean was discovered.
*/
@Adjacency(label = APPLICATION, direction = Direction.OUT)
ProjectModel getApplication();

/**
* Contains the application in which this Spring Bean was discovered.
*/
@Adjacency(label = APPLICATION, direction = Direction.OUT)
void setApplication(ProjectModel projectModel);

/**
* Contains the specification version
*/
@Property(SPECIFICATION_VERSION)
public String getSpecificationVersion();
String getSpecificationVersion();

/**
* Contains the specification version
*/
@Property(SPECIFICATION_VERSION)
public void setSpecificationVersion(String version);
void setSpecificationVersion(String version);

/**
* Contains the table name
*/
@Property(TABLE_NAME)
public String getTableName();
String getTableName();

/**
* Contains the table name
*/
@Property(TABLE_NAME)
public void setTableName(String tableName);
void setTableName(String tableName);

/**
* Contains the schema name
*/
@Property(SCHEMA_NAME)
public String getSchemaName();
String getSchemaName();

/**
* Contains the schema name
*/
@Property(SCHEMA_NAME)
public void setSchemaName(String schemaName);
void setSchemaName(String schemaName);

/**
* Contains the catalog name
*/
@Property(CATALOG_NAME)
public String getCatalogName();
String getCatalogName();

/**
* Contains the catalog name
*/
@Property(CATALOG_NAME)
public void setCatalogName(String catalogName);
void setCatalogName(String catalogName);

/**
* Contains the entity class
*/
@Adjacency(label = HIBERNATE_ENTITY_CLASS, direction = Direction.OUT)
public void setJavaClass(JavaClassModel ejbHome);
void setJavaClass(JavaClassModel entityClass);

/**
* Contains the entity class
*/
@Adjacency(label = HIBERNATE_ENTITY_CLASS, direction = Direction.OUT)
public JavaClassModel getJavaClass();
JavaClassModel getJavaClass();
}
Expand Up @@ -19,48 +19,48 @@
@TypeValue(SpringBeanModel.TYPE)
public interface SpringBeanModel extends WindupVertexFrame
{
public static final String TYPE = "SpringBeanModel";
public static final String SPRING_BEAN_TO_JAVA_CLASS = "springBeanToJavaClass";
public static final String SPRING_CONFIGURATION = "springConfiguration";
public static final String SPRING_BEAN_NAME = "springBeanName";
public static final String APPLICATION = "application";
String TYPE = "SpringBeanModel";
String SPRING_BEAN_TO_JAVA_CLASS = "springBeanToJavaClass";
String SPRING_CONFIGURATION = "springConfiguration";
String SPRING_BEAN_NAME = "springBeanName";
String APPLICATION = "application";

/**
* The name of this spring bean
*/
@Indexed
@Property(SPRING_BEAN_NAME)
public String getSpringBeanName();
String getSpringBeanName();

/**
* The name of this spring bean
*/
@Property(SPRING_BEAN_NAME)
public String setSpringBeanName(String springBeanName);
String setSpringBeanName(String springBeanName);

/**
* The Spring configuration file in which this Spring Bean was defined.
*/
@Adjacency(label = SPRING_CONFIGURATION, direction = Direction.IN)
public SpringConfigurationFileModel getSpringConfiguration();
SpringConfigurationFileModel getSpringConfiguration();

/**
* The Spring configuration file in which this Spring Bean was defined.
*/
@Adjacency(label = SPRING_CONFIGURATION, direction = Direction.IN)
public void setSpringConfiguration(SpringConfigurationFileModel springConfiguration);
void setSpringConfiguration(SpringConfigurationFileModel springConfiguration);

/**
* This points to the @{link JavaClassModel} referenced by this Spring Bean
*/
@Adjacency(label = SPRING_BEAN_TO_JAVA_CLASS, direction = Direction.OUT)
public JavaClassModel getJavaClass();
JavaClassModel getJavaClass();

/**
* This points to the @{link JavaClassModel} referenced by this Spring Bean
*/
@Adjacency(label = SPRING_BEAN_TO_JAVA_CLASS, direction = Direction.OUT)
public void setJavaClass(JavaClassModel m);
void setJavaClass(JavaClassModel m);

/**
* Contains the application in which this Spring Bean was discovered.
Expand Down
Expand Up @@ -100,14 +100,16 @@ private void createHibernateReport(GraphContext context, ProjectModel projectMod
HibernateEntityService hibernateEntityService = new HibernateEntityService(context);
GraphService<WindupVertexListModel> listService = new GraphService<>(context, WindupVertexListModel.class);

WindupVertexListModel hibernateConfigList = listService.create();
for (HibernateConfigurationFileModel hibernateConfig : hibernateConfigurationFileService.findAll())
@SuppressWarnings("unchecked")
WindupVertexListModel<HibernateConfigurationFileModel> hibernateConfigList = listService.create();
for (HibernateConfigurationFileModel hibernateConfig : hibernateConfigurationFileService.findAllByApplication(projectModel))
{
hibernateConfigList.addItem(hibernateConfig);
}

WindupVertexListModel entityList = listService.create();
for (HibernateEntityModel entityModel : hibernateEntityService.findAll())
@SuppressWarnings("unchecked")
WindupVertexListModel<HibernateEntityModel> entityList = listService.create();
for (HibernateEntityModel entityModel : hibernateEntityService.findAllByApplication(projectModel))
{
entityList.addItem(entityModel);
}
Expand Down
Expand Up @@ -88,8 +88,8 @@ public String toString()
private void createSpringBeanReport(GraphContext context, ProjectModel projectModel)
{
SpringBeanService springBeanService = new SpringBeanService(context);
List<SpringBeanModel> models = springBeanService.findAllByApplication(projectModel);
if (models.isEmpty())
Iterable<SpringBeanModel> models = springBeanService.findAllByApplication(projectModel);
if (!models.iterator().hasNext())
{
return;
}
Expand All @@ -106,7 +106,9 @@ private void createSpringBeanReport(GraphContext context, ProjectModel projectMo
applicationReportModel.setTemplateType(TemplateType.FREEMARKER);

GraphService<WindupVertexListModel> listService = new GraphService<>(context, WindupVertexListModel.class);
WindupVertexListModel springBeanList = listService.create();

@SuppressWarnings("unchecked")
WindupVertexListModel<SpringBeanModel> springBeanList = listService.create();
springBeanList.addAll(models);

Map<String, WindupVertexFrame> additionalData = new HashMap<>(2);
Expand Down
Expand Up @@ -139,6 +139,7 @@ public void perform(GraphRewrite event, EvaluationContext context, DoctypeMetaMo
// create the hibernate facet.
HibernateEntityModel hibernateEntity = hibernateEntityService.create();
hibernateEntity.setSpecificationVersion(versionInformation);
hibernateEntity.setApplication(xml.getApplication());
hibernateEntity.setJavaClass(clz);
hibernateEntity.setTableName(tableName);
hibernateEntity.setSchemaName(schemaName);
Expand Down
@@ -1,6 +1,10 @@
package org.jboss.windup.rules.apps.javaee.service;

import java.util.ArrayList;
import java.util.List;

import org.jboss.windup.graph.GraphContext;
import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.service.GraphService;
import org.jboss.windup.rules.apps.javaee.model.HibernateConfigurationFileModel;

Expand All @@ -16,4 +20,20 @@ public HibernateConfigurationFileService(GraphContext context)
{
super(context, HibernateConfigurationFileModel.class);
}

/**
* Gets an {@link Iterable} of {@link HibernateConfigurationFileModel}s for the given {@link ProjectModel}.
*/
public Iterable<HibernateConfigurationFileModel> findAllByApplication(final ProjectModel application)
{
List<HibernateConfigurationFileModel> results = new ArrayList<>();

for (HibernateConfigurationFileModel model : findAll())
{
ProjectModel modelApp = model.getApplication();
if (modelApp != null && modelApp.equals(application))
results.add(model);
}
return results;
}
}
@@ -1,6 +1,12 @@
package org.jboss.windup.rules.apps.javaee.service;

import com.thinkaurelius.titan.core.attribute.Text;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.structures.FramedVertexIterable;
import com.tinkerpop.gremlin.java.GremlinPipeline;
import org.jboss.windup.graph.GraphContext;
import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.model.WindupVertexFrame;
import org.jboss.windup.graph.service.GraphService;
import org.jboss.windup.rules.apps.javaee.model.HibernateEntityModel;

Expand All @@ -16,4 +22,16 @@ public HibernateEntityService(GraphContext context)
{
super(context, HibernateEntityModel.class);
}

/**
* Gets an {@link Iterable} of {@link }s for the given {@link ProjectModel}.
*/
public Iterable<HibernateEntityModel> findAllByApplication(ProjectModel application)
{
GremlinPipeline<Vertex, Vertex> pipeline = new GremlinPipeline<>(application.asVertex());
pipeline.in(HibernateEntityModel.APPLICATION);
pipeline.has(WindupVertexFrame.TYPE_PROP, Text.CONTAINS, HibernateEntityModel.TYPE);

return new FramedVertexIterable<>(getGraphContext().getFramed(), pipeline, HibernateEntityModel.class);
}
}
Expand Up @@ -4,8 +4,14 @@
import java.util.Collections;
import java.util.List;

import com.thinkaurelius.titan.core.attribute.Text;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.structures.FramedVertexIterable;
import com.tinkerpop.gremlin.java.GremlinPipeline;
import org.jboss.forge.roaster._shade.org.eclipse.core.internal.resources.Project;
import org.jboss.windup.graph.GraphContext;
import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.model.WindupVertexFrame;
import org.jboss.windup.graph.service.GraphService;
import org.jboss.windup.rules.apps.javaee.model.SpringBeanModel;

Expand All @@ -28,20 +34,16 @@ public Iterable<SpringBeanModel> findAllBySpringBeanName(String name)
}

/**
* Gets an {@link Iterable} of {@link SpringBeanModel}s for the given {@link ProjectModel}.
*
* @param application
* @return an unmodifiable list of SpringBeanModel entries for the given application
* @return an iterable of SpringBeanModel entries for the given application
*/
public List<SpringBeanModel> findAllByApplication(ProjectModel application)
public Iterable<SpringBeanModel> findAllByApplication(ProjectModel application)
{
List<SpringBeanModel> models = new ArrayList<>();
for (SpringBeanModel model : findAll())
{
if (application.equals(model.getApplication()))
{
models.add(model);
}
}
return models.isEmpty() ? Collections.<SpringBeanModel> emptyList() : Collections.unmodifiableList(models);
GremlinPipeline<Vertex, Vertex> pipeline = new GremlinPipeline<>(application.asVertex());
pipeline.in(SpringBeanModel.APPLICATION);
pipeline.has(WindupVertexFrame.TYPE_PROP, Text.CONTAINS, SpringBeanModel.TYPE);

return new FramedVertexIterable<>(getGraphContext().getFramed(), pipeline, SpringBeanModel.class);
}
}
@@ -0,0 +1,20 @@
package org.jboss.windup.rules.apps.javaee;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.forge.arquillian.AddonDependencies;
import org.jboss.forge.arquillian.AddonDependency;
import org.jboss.forge.arquillian.archive.AddonArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;

/**
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*/
public class AbstractTest
{
@Deployment
@AddonDependencies
public static AddonArchive getDeployment()
{
return ShrinkWrap.create(AddonArchive.class).addClass(AbstractTest.class).addBeansXML();
}
}

0 comments on commit 023e5c7

Please sign in to comment.