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" />


Reply via email to