Author: tfischer Date: Thu Mar 6 21:55:42 2014 New Revision: 1575063 URL: http://svn.apache.org/r1575063 Log: gracefully skip nonexistent attributes and elements while transforming to a typed model
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/SourceElementToModelTransformer.java Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/SourceElementToModelTransformer.java URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/SourceElementToModelTransformer.java?rev=1575063&r1=1575062&r2=1575063&view=diff ============================================================================== --- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/SourceElementToModelTransformer.java (original) +++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/SourceElementToModelTransformer.java Thu Mar 6 21:55:42 2014 @@ -23,6 +23,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; +import org.apache.log4j.Logger; import org.apache.torque.generator.configuration.ClassHelper; import org.apache.torque.generator.configuration.UnitConfiguration; import org.apache.torque.generator.control.ControllerState; @@ -45,6 +46,9 @@ public class SourceElementToModelTransfo */ public static final String NULL_ATTRIBUTE_FIELD_NAME = "value"; + /** The class logger. */ + private static final Logger log = Logger.getLogger(SourceTransformer.class); + /** The processor which does the camelback processing. */ private final Camelbacker camelbacker = new Camelbacker(); @@ -55,6 +59,12 @@ public class SourceElementToModelTransfo /** The class the model root must have. */ private String modelRootClass; + /** Whether to ignore unknown attributes in the source tree. */ + private boolean ignoreUnknownAttributes = true; + + /** Whether to ignore unknown elements in the source tree. */ + private boolean ignoreUnknownElements = true; + /** * Standard constructor. */ @@ -87,6 +97,30 @@ public class SourceElementToModelTransfo } /** + * Sets whether to ignore unknown attributes in the source tree. + * + * @param ignoreUnknownAttributes true if unknown attributes + * should be ignored, false otherwise. + */ + public void setIgnoreUnknownAttributes( + final boolean ignoreUnknownAttributes) + { + this.ignoreUnknownAttributes = ignoreUnknownAttributes; + } + + /** + * Sets whether to ignore unknown elements in the source tree. + * + * @param ignoreUnknownElements true if unknown elements + * should be ignored, false otherwise. + */ + public void setIgnoreUnknownElements( + final boolean ignoreUnknownElements) + { + this.ignoreUnknownElements = ignoreUnknownElements; + } + + /** * Transforms the source graph into the model. This is done by recursively * walking through the source graph and setting the fields corresponding * to the names of the attributes resp. child elements. @@ -99,8 +133,10 @@ public class SourceElementToModelTransfo * e.g. if an attribute name or element name has no corresponding * field in a model element. */ - public Object transform(final Object modelRoot, - final ControllerState controllerState) throws SourceTransformerException + public Object transform( + final Object modelRoot, + final ControllerState controllerState) + throws SourceTransformerException { if (modelRootClass == null) { @@ -162,6 +198,24 @@ public class SourceElementToModelTransfo final PropertyAccess propertyAccess = new PropertyAccess( model, attributeName); + if (!propertyAccess.isPropertyAccessible()) + { + if (!ignoreUnknownAttributes) + { + throw new NoSuchPropertyException( + model, + attributeName, + propertyAccess.getPrefixList(), + propertyAccess.getSuffixList()); + } + else + { + log.debug("Cannot set property " + attributeName + + " on class " + model.getClass() + + ", skipping this property."); + continue; + } + } propertyAccess.setProperty(attributeValue); } for (final SourceElement child : sourceElement.getChildren()) @@ -174,11 +228,21 @@ public class SourceElementToModelTransfo propertyName); if (!propertyAccess.isPropertyAccessible()) { - throw new NoSuchPropertyException( - model, - propertyName, - propertyAccess.getPrefixList(), - propertyAccess.getSuffixList()); + if (!ignoreUnknownElements) + { + throw new NoSuchPropertyException( + model, + propertyName, + propertyAccess.getPrefixList(), + propertyAccess.getSuffixList()); + } + else + { + log.debug("Cannot set property " + propertyName + + " on class " + model.getClass() + + ", skipping this property."); + continue; + } } Object childModelElement = alreadyMapped.get(child); if (childModelElement != null) --------------------------------------------------------------------- To unsubscribe, e-mail: torque-dev-unsubscr...@db.apache.org For additional commands, e-mail: torque-dev-h...@db.apache.org