You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sk...@apache.org on 2005/02/11 13:23:25 UTC

svn commit: r153391 - jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions

Author: skitching
Date: Fri Feb 11 04:23:23 2005
New Revision: 153391

URL: http://svn.apache.org/viewcvs?view=rev&rev=153391
Log:
Functionality split out from old CallParamRule

Added:
    jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamAttributeAction.java   (with props)
    jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamBodyAction.java   (with props)
    jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamFromStackAction.java   (with props)
    jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamLiteralAction.java   (with props)
    jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamPathAction.java   (with props)

Added: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamAttributeAction.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamAttributeAction.java?view=auto&rev=153391
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamAttributeAction.java (added)
+++ jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamAttributeAction.java Fri Feb 11 04:23:23 2005
@@ -0,0 +1,106 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.digester2.actions;
+
+import org.xml.sax.Attributes;
+
+import org.apache.commons.digester2.ArrayStack;
+import org.apache.commons.logging.Log;
+
+import org.apache.commons.digester2.Context;
+import org.apache.commons.digester2.AbstractAction;
+import org.apache.commons.digester2.ParseException;
+
+/**
+ * Action which saves an xml attribute as a parameter value for a method
+ * invoked by a CallMethodRule.
+ */
+
+public class CallParamAttributeAction extends AbstractAction {
+
+    /**
+     * The zero-relative index of the parameter we are saving.
+     */
+    protected int paramIndex = 0;
+
+    /**
+     * The attribute from which to save the parameter value
+     */
+    protected String attributeName;
+
+    // ---------------------------------------------------------
+    // Constructor
+    // ---------------------------------------------------------
+
+    /**
+     * Construct a "call parameter" rule that will save the value of the
+     * specified attribute as the parameter value.
+     *
+     * @param paramIndex The zero-relative parameter number
+     * @param attributeName The name of the attribute to save
+     */
+    public CallParamAttributeAction(int paramIndex, String attributeName) {
+        this.paramIndex = paramIndex;
+        this.attributeName = attributeName;
+    }
+
+    // ---------------------------------------------------------
+    // Public Methods
+    // ---------------------------------------------------------
+
+    /**
+     * Process the start of this element.
+     *
+     * @param attributes The attribute list for this element
+     */
+    public void begin(
+    Context context,
+    String namespace, String name, Attributes attributes)
+    throws ParseException {
+        Object paramValue = attributes.getValue(attributeName);
+
+        Log log = context.getLogger();
+        if (log.isDebugEnabled()) {
+            StringBuffer sb = new StringBuffer("[CallParamAttributeAction]{");
+            sb.append(context.getMatchPath());
+            sb.append("} saving xml attribute [");
+            sb.append(attributeName);
+            sb.append("] value [");
+            sb.append(paramValue);
+            sb.append("]");
+            log.debug(sb.toString());
+        }
+
+        Parameters params = (Parameters) context.peek(CallMethodAction.PARAM_STACK);
+        params.put(paramIndex, paramValue);
+    }
+
+    /**
+     * Render a printable version of this Rule.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CallParamAttributeAction[");
+        sb.append("paramIndex=");
+        sb.append(paramIndex);
+        sb.append(", attributeName=");
+        sb.append(attributeName);
+        sb.append("]");
+        return sb.toString();
+    }
+}

Propchange: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamAttributeAction.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamBodyAction.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamBodyAction.java?view=auto&rev=153391
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamBodyAction.java (added)
+++ jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamBodyAction.java Fri Feb 11 04:23:23 2005
@@ -0,0 +1,97 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.digester2.actions;
+
+import org.xml.sax.Attributes;
+
+import org.apache.commons.digester2.ArrayStack;
+import org.apache.commons.logging.Log;
+
+import org.apache.commons.digester2.Context;
+import org.apache.commons.digester2.AbstractAction;
+import org.apache.commons.digester2.ParseException;
+
+/**
+ * Action which saves the body text of the current xml element as a parameter
+ * to a method invoked by a CallMethodRule.
+ */
+
+public class CallParamBodyAction extends AbstractAction {
+
+    /**
+     * The zero-relative index of the parameter we are saving.
+     */
+    protected int paramIndex = 0;
+    
+    // ---------------------------------------------------------
+    // Constructor
+    //
+    // TODO: support attributes
+    //   "trim" --> trim the body before passing as parameter?
+    //   "emptyAsNull" --> pass null if the body is an empty string
+    // ---------------------------------------------------------
+
+    /**
+     * Construct a "call parameter" rule that will pass the body text
+     * of the matching xml element as the parameter value.
+     *
+     * @param paramIndex The zero-relative parameter number
+     */
+    public CallParamBodyAction(int paramIndex) {
+        this.paramIndex = paramIndex;
+    }
+
+    // ---------------------------------------------------------
+    // Public Methods
+    // ---------------------------------------------------------
+
+    /**
+     * Process the start of this element.
+     *
+     * @param attributes The attribute list for this element
+     */
+    public void body(
+    Context context,
+    String namespace, String name, 
+    String text)
+    throws ParseException {
+        Log log = context.getLogger();
+        if (log.isDebugEnabled()) {
+            StringBuffer sb = new StringBuffer("[CallParamBodyAction]{");
+            sb.append(context.getMatchPath());
+            sb.append("} saving body text value [");
+            sb.append(text);
+            sb.append("]");
+            log.debug(sb.toString());
+        }
+
+        Parameters params = (Parameters) context.peek(CallMethodAction.PARAM_STACK);
+        params.put(paramIndex, text);
+    }
+
+    /**
+     * Render a printable version of this Rule.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CallParamBodyAction[");
+        sb.append("paramIndex=");
+        sb.append(paramIndex);
+        return sb.toString();
+    }
+}

Propchange: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamBodyAction.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamFromStackAction.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamFromStackAction.java?view=auto&rev=153391
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamFromStackAction.java (added)
+++ jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamFromStackAction.java Fri Feb 11 04:23:23 2005
@@ -0,0 +1,101 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.digester2.actions;
+
+import org.xml.sax.Attributes;
+
+import org.apache.commons.digester2.ArrayStack;
+import org.apache.commons.logging.Log;
+
+import org.apache.commons.digester2.Context;
+import org.apache.commons.digester2.AbstractAction;
+import org.apache.commons.digester2.ParseException;
+
+/**
+ * Action which fetches an object from the digester object stack to use
+ * as a parameter for the target method invoked by a CallMethodRule.
+ */
+
+public class CallParamFromStackAction extends AbstractAction {
+
+    /**
+     * The zero-relative index of the parameter we are saving.
+     */
+    protected int paramIndex = 0;
+    
+    /**
+     * Which object to pass. 
+     */
+    protected int stackOffset;
+    
+    // ---------------------------------------------------------
+    // Constructor
+    // ---------------------------------------------------------
+
+    /**
+     * Construct a "call parameter" rule that will pass the body text
+     * of the matching xml element as the parameter value.
+     *
+     * @param paramIndex The zero-relative parameter number
+     */
+    public CallParamFromStackAction(int paramIndex, int stackOffset) {
+        this.paramIndex = paramIndex;
+        this.stackOffset = stackOffset;
+    }
+
+    // ---------------------------------------------------------
+    // Public Methods
+    // ---------------------------------------------------------
+
+    /**
+     * Process the start of this element.
+     *
+     * @param attributes The attribute list for this element
+     */
+    public void begin(
+    Context context,
+    String namespace, String name, Attributes attributes)
+    throws ParseException {
+
+        Object paramValue = context.peek(stackOffset);
+        
+        Log log = context.getLogger();
+        if (log.isDebugEnabled()) {
+            StringBuffer sb = new StringBuffer("[CallParamFromStackAction]{");
+            sb.append(context.getMatchPath());
+            sb.append("}");
+            log.debug(sb.toString());
+        }
+
+        Parameters params = (Parameters) context.peek(CallMethodAction.PARAM_STACK);
+        params.put(paramIndex, paramValue);
+    }
+
+    /**
+     * Render a printable version of this Rule.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CallParamFromStackAction[");
+        sb.append("paramIndex=");
+        sb.append(paramIndex);
+        sb.append(", stackOffset=");
+        sb.append(stackOffset);
+        return sb.toString();
+    }
+}

Propchange: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamFromStackAction.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamLiteralAction.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamLiteralAction.java?view=auto&rev=153391
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamLiteralAction.java (added)
+++ jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamLiteralAction.java Fri Feb 11 04:23:23 2005
@@ -0,0 +1,99 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.digester2.actions;
+
+import org.xml.sax.Attributes;
+
+import org.apache.commons.digester2.ArrayStack;
+import org.apache.commons.logging.Log;
+
+import org.apache.commons.digester2.Context;
+import org.apache.commons.digester2.AbstractAction;
+import org.apache.commons.digester2.ParseException;
+
+/**
+ * Action which saves a literal value (including an arbitrary Object reference)
+ * as a parameter to a method invoked by a CallMethodRule.
+ */
+
+public class CallParamLiteralAction extends AbstractAction {
+
+    /**
+     * The zero-relative index of the parameter we are saving.
+     */
+    protected int paramIndex;
+
+    /**
+     * The literal object to save as a parameter.
+     */
+    protected Object literal;
+
+    // ---------------------------------------------------------
+    // Constructor
+    // ---------------------------------------------------------
+
+    /**
+     * Construct a "call parameter" rule that will save the provided
+     * literal object as the parameter value.
+     *
+     * @param paramIndex The zero-relative parameter number
+     * @param literal The object to be passed to the target method.
+     */
+    public CallParamLiteralAction(int paramIndex, Object literal) {
+        this.paramIndex = paramIndex;
+        this.literal = literal;
+    }
+
+    // ---------------------------------------------------------
+    // Public Methods
+    // ---------------------------------------------------------
+
+    /**
+     * Process the start of this element.
+     *
+     * @param attributes The attribute list for this element
+     */
+    public void begin(
+    Context context,
+    String namespace, String name, Attributes attributes)
+    throws ParseException {
+        Log log = context.getLogger();
+        if (log.isDebugEnabled()) {
+            StringBuffer sb = new StringBuffer("[CallParamLiteralAction]{");
+            sb.append(context.getMatchPath());
+            sb.append("} saving literal value [");
+            sb.append(literal);
+            sb.append("]");
+            log.debug(sb.toString());
+        }
+
+        Parameters params = (Parameters) context.peek(CallMethodAction.PARAM_STACK);
+        params.put(paramIndex, literal);
+    }
+
+    /**
+     * Render a printable version of this Rule.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CallParamLiteralAction[");
+        sb.append("paramIndex=");
+        sb.append(paramIndex);
+        return sb.toString();
+    }
+}

Propchange: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamLiteralAction.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamPathAction.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamPathAction.java?view=auto&rev=153391
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamPathAction.java (added)
+++ jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamPathAction.java Fri Feb 11 04:23:23 2005
@@ -0,0 +1,93 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.digester2.actions;
+
+import org.xml.sax.Attributes;
+
+import org.apache.commons.digester2.ArrayStack;
+import org.apache.commons.logging.Log;
+
+import org.apache.commons.digester2.Context;
+import org.apache.commons.digester2.AbstractAction;
+import org.apache.commons.digester2.ParseException;
+
+/**
+ * Action which fetches an object from the digester object stack to use
+ * as a parameter for the target method invoked by a CallMethodRule.
+ */
+
+public class CallParamPathAction extends AbstractAction {
+
+    /**
+     * The zero-relative index of the parameter we are saving.
+     */
+    protected int paramIndex = 0;
+    
+    // ---------------------------------------------------------
+    // Constructor
+    // ---------------------------------------------------------
+
+    /**
+     * Construct a "call parameter" rule that will pass the
+     * path from the document root to the current element as the
+     * parameter value.
+     *
+     * @param paramIndex The zero-relative parameter number
+     */
+    public CallParamPathAction(int paramIndex) {
+        this.paramIndex = paramIndex;
+    }
+
+    // ---------------------------------------------------------
+    // Public Methods
+    // ---------------------------------------------------------
+
+    /**
+     * Process the start of this element.
+     *
+     * @param attributes The attribute list for this element
+     */
+    public void begin(
+    Context context,
+    String namespace, String name, Attributes attributes)
+    throws ParseException {
+        String paramValue = context.getMatchPath();
+        
+        Log log = context.getLogger();
+        if (log.isDebugEnabled()) {
+            StringBuffer sb = new StringBuffer("[CallParamPathAction]{");
+            sb.append(context.getMatchPath());
+            sb.append("}");
+            log.debug(sb.toString());
+        }
+
+        Parameters params = (Parameters) context.peek(CallMethodAction.PARAM_STACK);
+        params.put(paramIndex, paramValue);
+    }
+
+    /**
+     * Render a printable version of this Rule.
+     */
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CallParamPathAction[");
+        sb.append("paramIndex=");
+        sb.append(paramIndex);
+        return (sb.toString());
+    }
+}

Propchange: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/actions/CallParamPathAction.java
------------------------------------------------------------------------------
    svn:keywords = Id



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org