Author: craigmcc
Date: Fri Apr 29 18:43:57 2005
New Revision: 165370

URL: http://svn.apache.org/viewcvs?rev=165370&view=rev
Log:
Add four new source files included in this patch.

PR: Bugzilla #34496
Submitted By:  Gary VanMatre <gvanmatre AT comcast.net>

Added:
    
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/InputTextareaBuilder.java
    
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
    
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java
    
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java

Added: 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/InputTextareaBuilder.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/InputTextareaBuilder.java?rev=165370&view=auto
==============================================================================
--- 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/InputTextareaBuilder.java
 (added)
+++ 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/InputTextareaBuilder.java
 Fri Apr 29 18:43:57 2005
@@ -0,0 +1,87 @@
+/*
+ * 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.
+ *
+ * $Id$
+ */
+
+package org.apache.shale.clay.parser.builder;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.shale.clay.config.Globals;
+import org.apache.shale.clay.config.beans.ElementBean;
+import org.apache.shale.clay.parser.Node;
+
+/**
+ * <p>
+ * Builds a [EMAIL PROTECTED] ElementBean} from a HTML [EMAIL PROTECTED] Node} 
where the
+ * [EMAIL PROTECTED] 
org.apache.shale.clay.parser.builder.chain.TextareaBuilderRule}
+ * handles the mapping
+ * </p>
+ */
+public class InputTextareaBuilder extends Builder {
+
+    /**
+     * <p>
+     * Common logger utility class
+     * </p>
+     */
+    private static Log log;
+    static {
+        log = LogFactory.getLog(InputTextareaBuilder.class);
+    }
+
+    /**
+     * <p>
+     * The default for this builder is that builder will handle the children
+     * html nodes meaning that the default should be <code>true</code>. The
+     * default can be overridden by the "allowBody" attribute in the component
+     * metadata.
+     * </p>
+     */
+    protected boolean getBuildNodeBody(Node node, ElementBean target) {
+        // if override attribute then let the super sort it out
+        if (target != null
+                && target.getAttributes().containsKey(
+                        Globals.COMPONENT_ATTRIBUTE_ALLOW_BODY))
+            return super.getBuildNodeBody(node, target);
+        else {
+            // default for this HTML element is to let the node build
+            // the body and not each child's builder
+            return true;
+        }
+    }
+
+    /**
+     * <p>
+     * Returns the <code>jsfid</code> used to populate the [EMAIL PROTECTED] 
ElementBean}
+     * </p>
+     */
+    protected String getJsfid(Node node) {
+        return "inputTextarea";
+    }
+
+    /**
+     * <p>
+     * Returns the JSF componentType of
+     * <code>javax.faces.HtmlInputTextarea</code> used to define the
+     * [EMAIL PROTECTED] ElementBean} from the HTML [EMAIL PROTECTED] Node}
+     * </p>
+     */
+    protected String getComponentType(Node node) {
+        return "javax.faces.HtmlInputTextarea";
+    }
+
+}
\ No newline at end of file

Added: 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java?rev=165370&view=auto
==============================================================================
--- 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
 (added)
+++ 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/OutputLinkBuilder.java
 Fri Apr 29 18:43:57 2005
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ *
+ * $Id$
+ */
+
+package org.apache.shale.clay.parser.builder;
+
+/**
+ * <p>
+ * This [EMAIL PROTECTED] Builder} will create a target [EMAIL PROTECTED] 
ElementBean} for a "<a>"
+ * [EMAIL PROTECTED] Node}. The mapping between the html and the builder is 
handled by the
+ * [EMAIL PROTECTED] AnchorBuilderRule}.
+ * </p>
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.shale.clay.parser.Node;
+
+public class OutputLinkBuilder extends Builder {
+
+    /**
+     * <p>
+     * Common logger utility class
+     * </p>
+     */
+    private static Log log;
+    static {
+        log = LogFactory.getLog(OutputLinkBuilder.class);
+    }
+
+    /**
+     * <p>
+     * Returns a jsf component type of <code>javax.faces.HtmlOutputLink</code>
+     * </p>
+     */
+    protected String getComponentType(Node node) {
+        return "javax.faces.HtmlOutputLink";
+    }
+
+    /**
+     * <p>
+     * Returns a <code>jsfid</code> that will populate the target
+     * [EMAIL PROTECTED] org.apache.shale.clay.config.beans.ElementBean}
+     * </p>
+     */
+    protected String getJsfid(Node node) {
+        return "outputLink";
+    }
+
+    /**
+     * <p>
+     * Returns <code>true</code> meaning that the target JSF component can
+     * have children
+     * </p>
+     */
+    public boolean isChildrenAllowed() {
+        return true;
+    }
+
+}

Added: 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java?rev=165370&view=auto
==============================================================================
--- 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java
 (added)
+++ 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/AnchorBuilderRule.java
 Fri Apr 29 18:43:57 2005
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ *
+ * $Id$
+ */
+
+package org.apache.shale.clay.parser.builder.chain;
+
+/**
+ * <p>
+ * This is a <code>Command</code> implementation that will 
+ * match a HTML [EMAIL PROTECTED] Node} with a matching [EMAIL PROTECTED] 
Builder} 
+ * implementation.  If the html node is an anchored tag, a 
+ * [EMAIL PROTECTED] OutputLinkBuilder} will be returned and the 
+ * chain terminated.  The [EMAIL PROTECTED] BuilderFactory} runs this 
+ * command rule as part of the <code>Globals.BUILDER_CATALOG_NAME</code>
+ * found in the <code>Globals.BUILDER_RESOURCE_NAME</code> and 
+ * invoking the <code>Globals.FIND_BUILDER_COMMAND_NAME</code>
+ * </p>
+ */
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.shale.clay.parser.Node;
+import org.apache.shale.clay.parser.builder.Builder;
+import org.apache.shale.clay.parser.builder.OutputLinkBuilder;
+
+/**
+ * 
+ * 
+ */
+public class AnchorBuilderRule implements Command {
+
+    /**
+     * <p>
+     * Static instance of the builder
+     * </p>
+     */
+    private static final Builder builder = new OutputLinkBuilder();
+
+    /**
+     * <p>
+     * Uses the [EMAIL PROTECTED] BuilderRuleContext} to find the current html 
[EMAIL PROTECTED] Node}.
+     * If the node is an anchored element, return an instance if the builder 
and
+     * stop the chain.
+     * </p>
+     */
+    public boolean execute(Context context) throws Exception {
+
+        boolean isFinal = false;
+
+        BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
+        Node node = builderRuleContext.getNode();
+        if (node.getName() != null && node.getName().equalsIgnoreCase("a")) {
+            builderRuleContext.setBuilder(builder);
+            isFinal = true;
+
+        }
+
+        return isFinal;
+    }
+
+}

Added: 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java?rev=165370&view=auto
==============================================================================
--- 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java
 (added)
+++ 
struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/parser/builder/chain/TextareaBuilderRule.java
 Fri Apr 29 18:43:57 2005
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ *
+ * $Id$
+ */
+
+package org.apache.shale.clay.parser.builder.chain;
+
+/**
+ * <p>
+ * This <code>Command</code> rule will map an html textarea [EMAIL PROTECTED] 
Node} to a
+ * [EMAIL PROTECTED] InputTextareaBuilder}.
+ * </p>
+ */
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.shale.clay.parser.Node;
+import org.apache.shale.clay.parser.builder.Builder;
+import org.apache.shale.clay.parser.builder.InputTextareaBuilder;
+
+public class TextareaBuilderRule implements Command {
+
+    /**
+     * <p>
+     * Instance of the target
+     * [EMAIL PROTECTED] 
org.apache.shale.clay.parser.builder.InputTextareaBuilder}
+     * </p>
+     */
+    private static final Builder builder = new InputTextareaBuilder();
+
+    /**
+     * <p>
+     * Returns <code>false</code> if the html [EMAIL PROTECTED] Node} was not 
a textarea.
+     * The [EMAIL PROTECTED] BuilderRuleContext} will be passed as a 
parameter. If a match
+     * is found, a <code>true</code> value is returned completing the chain.
+     * </p>
+     */
+    public boolean execute(Context context) throws Exception {
+
+        boolean isFinal = false;
+
+        BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
+        Node node = builderRuleContext.getNode();
+        if (node.getName() != null
+                && node.getName().equalsIgnoreCase("textarea")) {
+            builderRuleContext.setBuilder(builder);
+            isFinal = true;
+
+        }
+
+        return isFinal;
+    }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to