-
Notifications
You must be signed in to change notification settings - Fork 162
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FORGE-1684 Ported MetawidgetInspectorFacade from Forge 1
- Loading branch information
1 parent
2f1bf1a
commit a851adf
Showing
27 changed files
with
2,329 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
106 changes: 106 additions & 0 deletions
106
...pi/src/main/java/org/jboss/forge/addon/scaffold/metawidget/MetawidgetInspectorFacade.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/** | ||
* Copyright 2013 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Eclipse Public License version 1.0, available at | ||
* http://www.eclipse.org/legal/epl-v10.html | ||
*/ | ||
package org.jboss.forge.addon.scaffold.metawidget; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
import javax.inject.Inject; | ||
|
||
import org.jboss.forge.addon.scaffold.spi.ScaffoldProvider; | ||
import org.jboss.forge.addon.projects.Project; | ||
import org.jboss.forge.parser.java.JavaClass; | ||
import org.jboss.forge.addon.scaffold.metawidget.inspector.ForgeInspector; | ||
import org.jboss.forge.addon.scaffold.metawidget.inspector.ForgeInspectorConfig; | ||
import org.jboss.forge.addon.scaffold.metawidget.inspector.propertystyle.ForgePropertyStyle; | ||
import org.jboss.forge.addon.scaffold.metawidget.inspector.propertystyle.ForgePropertyStyleConfig; | ||
import org.metawidget.inspector.beanvalidation.BeanValidationInspector; | ||
import org.metawidget.inspector.composite.CompositeInspector; | ||
import org.metawidget.inspector.composite.CompositeInspectorConfig; | ||
import org.metawidget.inspector.jpa.JpaInspector; | ||
import org.metawidget.inspector.jpa.JpaInspectorConfig; | ||
import org.metawidget.inspector.propertytype.PropertyTypeInspector; | ||
import org.metawidget.util.XmlUtils; | ||
import org.w3c.dom.Element; | ||
|
||
/** | ||
* A facade for Metawidget inspectors. This class wraps Metawidget API invocations for {@link ScaffoldProvider} | ||
* instances to invoke. | ||
* | ||
* @author Vineet Reynolds | ||
* | ||
*/ | ||
public class MetawidgetInspectorFacade | ||
{ | ||
|
||
private Project project; | ||
private CompositeInspector compositeInspector; | ||
|
||
@Inject | ||
public MetawidgetInspectorFacade(Project project) | ||
{ | ||
this.project = project; | ||
} | ||
|
||
/** | ||
* Inspects a {@link JavaClass} instance and provides inspection results in return. | ||
* | ||
* @param klass The {@link JavaClass} to inspect. | ||
* @return A list representing inspection results for the {@link JavaClass}. Each list item corresponds to the | ||
* inspection result for every property of the provided {@link JavaClass}. | ||
*/ | ||
public List<Map<String, String>> inspect(JavaClass klass) | ||
{ | ||
setupCompositeInspector(); | ||
Element inspectionResult = compositeInspector.inspectAsDom(null, klass.getQualifiedName(), (String[]) null); | ||
Element inspectedEntity = XmlUtils.getFirstChildElement(inspectionResult); | ||
|
||
Element inspectedProperty = XmlUtils.getFirstChildElement(inspectedEntity); | ||
List<Map<String, String>> viewPropertyAttributes = new ArrayList<Map<String, String>>(); | ||
while (inspectedProperty != null) | ||
{ | ||
Map<String, String> propertyAttributes = XmlUtils.getAttributesAsMap(inspectedProperty); | ||
viewPropertyAttributes.add(propertyAttributes); | ||
inspectedProperty = XmlUtils.getNextSiblingElement(inspectedProperty); | ||
} | ||
return viewPropertyAttributes; | ||
} | ||
|
||
/** | ||
* Setup the composite inspector. This is not done at construction time, since Metawidget inspectors cache trait | ||
* lookups, and hence report incorrect values when underlying Java classes change in projects. Therefore, the | ||
* composite inspector setup and configuration is perform explicitly upon every inspection. | ||
*/ | ||
private void setupCompositeInspector() | ||
{ | ||
ForgePropertyStyleConfig forgePropertyStyleConfig = new ForgePropertyStyleConfig(); | ||
forgePropertyStyleConfig.setProject(this.project); | ||
ForgeInspectorConfig forgeInspectorConfig = new ForgeInspectorConfig(); | ||
forgeInspectorConfig.setProject(this.project); | ||
forgeInspectorConfig.setPropertyStyle(new ForgePropertyStyle(forgePropertyStyleConfig)); | ||
|
||
PropertyTypeInspector propertyTypeInspector = new PropertyTypeInspector(forgeInspectorConfig); | ||
|
||
ForgeInspector forgeInspector = new ForgeInspector(forgeInspectorConfig); | ||
|
||
JpaInspectorConfig jpaInspectorConfig = new JpaInspectorConfig(); | ||
jpaInspectorConfig.setHideIds(true); | ||
jpaInspectorConfig.setHideVersions(true); | ||
jpaInspectorConfig.setHideTransients(true); | ||
jpaInspectorConfig.setPropertyStyle(new ForgePropertyStyle(forgePropertyStyleConfig)); | ||
JpaInspector jpaInspector = new JpaInspector(jpaInspectorConfig); | ||
|
||
BeanValidationInspector beanValidationInspector = new BeanValidationInspector(forgeInspectorConfig); | ||
|
||
CompositeInspectorConfig compositeInspectorConfig = new CompositeInspectorConfig(); | ||
compositeInspectorConfig.setInspectors(propertyTypeInspector, forgeInspector, jpaInspector, | ||
beanValidationInspector); | ||
compositeInspector = new CompositeInspector(compositeInspectorConfig); | ||
} | ||
|
||
} |
78 changes: 78 additions & 0 deletions
78
...a/org/jboss/forge/addon/scaffold/metawidget/inspector/ForgeInspectionResultConstants.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
* Copyright 2012 Red Hat, Inc. and/or its affiliates. | ||
* | ||
* Licensed under the Eclipse Public License version 1.0, available at | ||
* http://www.eclipse.org/legal/epl-v10.html | ||
*/ | ||
package org.jboss.forge.addon.scaffold.metawidget.inspector; | ||
|
||
/** | ||
* Forge-specific element and attribute names appearing in DOMs conforming to inspection-result-1.0.xsd. | ||
* | ||
* @author Richard Kennard | ||
*/ | ||
|
||
public final class ForgeInspectionResultConstants | ||
{ | ||
// | ||
// Public statics | ||
// | ||
|
||
public static final String N_TO_MANY = "n-to-many"; | ||
|
||
public static final String ONE_TO_ONE = "one-to-one"; | ||
|
||
public static final String MANY_TO_ONE = "many-to-one"; | ||
|
||
public static final String JPA_ONE_TO_ONE = "one-to-one"; | ||
|
||
public static final String JPA_MANY_TO_ONE = "many-to-one"; | ||
|
||
public static final String JPA_ONE_TO_MANY = "one-to-many"; | ||
|
||
public static final String JPA_MANY_TO_MANY = "many-to-many"; | ||
|
||
public static final String JPA_REL_TYPE = "jpa-relation-type"; | ||
|
||
/** | ||
* Whether the field is an Id. | ||
*/ | ||
|
||
public static final String PRIMARY_KEY = "primary-key"; | ||
|
||
/** | ||
* The reverse primary key of a ManyToOne relationship. | ||
*/ | ||
|
||
public static final String REVERSE_PRIMARY_KEY = "reverse-primary-key"; | ||
|
||
/** | ||
* Whether the field represents a generated value | ||
*/ | ||
public static final String GENERATED_VALUE = "generated-value"; | ||
|
||
/** | ||
* The owning field of a bi-directional relationship | ||
*/ | ||
public static final String OWNING_FIELD = "owning-field"; | ||
|
||
/** | ||
* The inverse field of a bi-directional relationship | ||
*/ | ||
public static final String INVERSE_FIELD = "inverse-field"; | ||
|
||
/** | ||
* Indicates whether a field is to be displayed inline or not. | ||
* Usually used for JPA Embedded/Embeddable types. | ||
*/ | ||
public static final String EMBEDDABLE = "embeddable"; | ||
|
||
// | ||
// Private constructor | ||
// | ||
|
||
private ForgeInspectionResultConstants() | ||
{ | ||
// Can never be called | ||
} | ||
} |
Oops, something went wrong.