Author: simonetripodi
Date: Wed Feb 16 09:27:40 2011
New Revision: 1071182
URL: http://svn.apache.org/viewvc?rev=1071182&view=rev
Log:
added a way to explicitly ignore attributes on setProperties() via XML, rather
then assume via the 'null' property name
Added:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
(with props)
Modified:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/XmlRulesModule.java
commons/sandbox/digester3/trunk/src/main/resources/org/apache/commons/digester3/xmlrules/digester-rules.dtd
commons/sandbox/digester3/trunk/src/test/resources/org/apache/commons/digester3/xmlrules/testPropertyAliasRules.xml
Added:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java?rev=1071182&view=auto
==============================================================================
---
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
(added)
+++
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
Wed Feb 16 09:27:40 2011
@@ -0,0 +1,43 @@
+/* $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.digester3.xmlrules.metaparser;
+
+import org.apache.commons.digester3.RulesBinder;
+import org.apache.commons.digester3.rulesbinder.LinkedRuleBuilder;
+import org.xml.sax.Attributes;
+
+/**
+ *
+ */
+final class SetPropertiesIgnoreRule extends AbstractXmlRule {
+
+ public SetPropertiesIgnoreRule(RulesBinder targetRulesBinder, PatternStack
patternStack) {
+ super(targetRulesBinder, patternStack);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void bindRule(LinkedRuleBuilder linkedRuleBuilder, Attributes
attributes) throws Exception {
+ String attributeName = attributes.getValue("attr-name");
+
+ linkedRuleBuilder.setProperties().ignoreAttribute(attributeName);
+ }
+
+}
Propchange:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/SetPropertiesIgnoreRule.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/XmlRulesModule.java
URL:
http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/XmlRulesModule.java?rev=1071182&r1=1071181&r2=1071182&view=diff
==============================================================================
---
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/XmlRulesModule.java
(original)
+++
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/metaparser/XmlRulesModule.java
Wed Feb 16 09:27:40 2011
@@ -71,6 +71,8 @@ public final class XmlRulesModule implem
.addRule(new SetPropertiesRule(this.targetRulesBinder,
patternStack));
forPattern("*/set-properties-rule/alias")
.addRule(new SetPropertiesAliasRule(this.targetRulesBinder,
patternStack));
+ forPattern("*/set-properties-rule/ignore")
+ .addRule(new SetPropertiesIgnoreRule(this.targetRulesBinder,
patternStack));
forPattern("*/set-property-rule")
.addRule(new SetPropertyRule(this.targetRulesBinder,
patternStack));
Modified:
commons/sandbox/digester3/trunk/src/main/resources/org/apache/commons/digester3/xmlrules/digester-rules.dtd
URL:
http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/resources/org/apache/commons/digester3/xmlrules/digester-rules.dtd?rev=1071182&r1=1071181&r2=1071182&view=diff
==============================================================================
---
commons/sandbox/digester3/trunk/src/main/resources/org/apache/commons/digester3/xmlrules/digester-rules.dtd
(original)
+++
commons/sandbox/digester3/trunk/src/main/resources/org/apache/commons/digester3/xmlrules/digester-rules.dtd
Wed Feb 16 09:27:40 2011
@@ -175,7 +175,7 @@
attrname CDATA #IMPLIED>
<!-- SetPropertiesRule -->
-<!ELEMENT set-properties-rule (alias)*>
+<!ELEMENT set-properties-rule (alias|ignore)*>
<!ATTLIST set-properties-rule
pattern CDATA #IMPLIED
ignore-missing-property CDATA #IMPLIED>
@@ -189,8 +189,11 @@
<!-- An alias is a custom attribute->property name mapping -->
<!ELEMENT alias EMPTY>
<!ATTLIST alias
- attr-name CDATA #REQUIRED
- prop-name CDATA #IMPLIED>
+ attr-name CDATA #REQUIRED
+ prop-name CDATA #IMPLIED>
+
+<!ELEMENT ignore
+ attr-name CDATA #IMPLIED>
<!-- SetPropertyRule -->
<!ELEMENT set-property-rule EMPTY>
Modified:
commons/sandbox/digester3/trunk/src/test/resources/org/apache/commons/digester3/xmlrules/testPropertyAliasRules.xml
URL:
http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/resources/org/apache/commons/digester3/xmlrules/testPropertyAliasRules.xml?rev=1071182&r1=1071181&r2=1071182&view=diff
==============================================================================
---
commons/sandbox/digester3/trunk/src/test/resources/org/apache/commons/digester3/xmlrules/testPropertyAliasRules.xml
(original)
+++
commons/sandbox/digester3/trunk/src/test/resources/org/apache/commons/digester3/xmlrules/testPropertyAliasRules.xml
Wed Feb 16 09:27:40 2011
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE digester-rules PUBLIC "-//Jakarta Apache //DTD digester-rules XML
V1.0//EN" "http://jakarta.apache.org/commons/digester/dtds/digester-rules.dtd">
+<!DOCTYPE digester-rules PUBLIC "-//Apache Commons //DTD digester-rules XML
V1.0//EN" "http://jakarta.apache.org/commons/digester/dtds/digester-rules.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -24,7 +24,7 @@
</pattern>
<pattern value="toplevel/two">
- <object-create-rule classname="org.apache.commons.digester.Address" />
+ <object-create-rule classname="org.apache.commons.digester3.Address" />
<set-next-rule methodname="add" paramtype="java.lang.Object" />
<set-properties-rule>
<alias attr-name="alt-street" prop-name="street" />
@@ -34,16 +34,16 @@
</pattern>
<pattern value="toplevel/three">
- <object-create-rule classname="org.apache.commons.digester.Address" />
+ <object-create-rule classname="org.apache.commons.digester3.Address" />
<set-next-rule methodname="add" paramtype="java.lang.Object" />
<set-properties-rule>
<alias attr-name="aCity" prop-name="city" />
- <alias attr-name="state" />
+ <ignore attr-name="state" />
</set-properties-rule>
</pattern>
<pattern value="toplevel/four">
- <object-create-rule classname="org.apache.commons.digester.Address" />
+ <object-create-rule classname="org.apache.commons.digester3.Address" />
<set-next-rule methodname="add" paramtype="java.lang.Object" />
<set-properties-rule>
<alias attr-name="alt-city" prop-name="city" />