Author: gvanmatre
Date: Tue Sep 12 19:26:16 2006
New Revision: 442798

URL: http://svn.apache.org/viewvc?view=rev&rev=442798
Log:
The clay template prefix to define namespaces no longer need to be identical to 
the prefix used to define the component definition (SHALE-279).

Modified:
    
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java
    
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/chain/JsfDefaultBuilderRule.java
    
shale/framework/trunk/shale-clay/src/main/resources/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml

Modified: 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java?view=diff&rev=442798&r1=442797&r2=442798
==============================================================================
--- 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java
 (original)
+++ 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/JsfDefaultBuilder.java
 Tue Sep 12 19:26:16 2006
@@ -49,6 +49,33 @@
      */
     private Tags tagsUtil = new Tags();
 
+    /**
+     * <p>Contains the namespace prefix that should be used to locate
+     * clay configurations.  This allows the page to use any prefix
+     * but still find the config element.</p>
+     */
+    private String prefix = null;
+
+    /**
+     * <p>Returns the namespace prefix that will be added to the
+     * node name when resolving the clay config.</p>
+     *
+     * @return URI prefix
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * <p>Sets the namespace preix that will override the template
+     * nodeds qname.</p>
+     *
+     * @param prefix URI prefix
+     */
+    public void setPrefix(String prefix) {
+        this.prefix = prefix;
+    }
+
 
     /**
      * <p>Factory method that creates a [EMAIL PROTECTED] ElementBean} from a 
[EMAIL PROTECTED] Node}.</p>
@@ -98,7 +125,11 @@
     protected void addConverter(Node node, ElementBean target) {
         ConverterBean targetConverter = new ConverterBean();
 
-        String jsfid = getJsfid(node);
+        //make sure we have the correct jsfid based on the namespace prefix
+        Builder tmpBuilder = node.getBuilder();
+        ElementBean tmp = tmpBuilder.createElement(node);
+
+        String jsfid = tmp.getJsfid();
         targetConverter.setJsfid(jsfid);
 
         String converterId = (String) node.getAttributes().get("converterId");
@@ -158,7 +189,11 @@
     protected void addValidator(Node node, ElementBean target) {
         ValidatorBean targetValidator = new ValidatorBean();
 
-        String jsfid = getJsfid(node);
+        //make sure we have the correct jsfid based on the namespace prefix
+        Builder tmpBuilder = node.getBuilder();
+        ElementBean tmp = tmpBuilder.createElement(node);
+
+        String jsfid = tmp.getJsfid();
         targetValidator.setJsfid(jsfid);
 
         String validatorId = (String) node.getAttributes().get("validatorId");
@@ -195,7 +230,11 @@
     protected void addActionListener(Node node, ElementBean target) {
         ActionListenerBean targetActionListener = new ActionListenerBean();
 
-        String jsfid = getJsfid(node);
+        //make sure we have the correct jsfid based on the namespace prefix
+        Builder tmpBuilder = node.getBuilder();
+        ElementBean tmp = tmpBuilder.createElement(node);
+
+        String jsfid = tmp.getJsfid();
         targetActionListener.setJsfid(jsfid);
 
         String type = (String) node.getAttributes().get("type");
@@ -220,7 +259,11 @@
     protected void addValueChangeListener(Node node, ElementBean target) {
         ValueChangeListenerBean targetValueChangeListener = new 
ValueChangeListenerBean();
 
-        String jsfid = getJsfid(node);
+        //make sure we have the correct jsfid based on the namespace prefix
+        Builder tmpBuilder = node.getBuilder();
+        ElementBean tmp = tmpBuilder.createElement(node);
+
+        String jsfid = tmp.getJsfid();
         targetValueChangeListener.setJsfid(jsfid);
 
         String type = (String) node.getAttributes().get("type");
@@ -383,9 +426,12 @@
         } else {
             jsfid.append(node.getName());
 
-            if (node.getQname() != null) {
+            //override the node prefix with the one
+            //assigned to the uri.  the prefix will
+            //match the config beans
+            if (getPrefix() != null) {
                 jsfid.insert(0, ':');
-                jsfid.insert(0, node.getQname());
+                jsfid.insert(0, getPrefix());
             }
         }
 

Modified: 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/chain/JsfDefaultBuilderRule.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/chain/JsfDefaultBuilderRule.java?view=diff&rev=442798&r1=442797&r2=442798
==============================================================================
--- 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/chain/JsfDefaultBuilderRule.java
 (original)
+++ 
shale/framework/trunk/shale-clay/src/main/java/org/apache/shale/clay/parser/builder/chain/JsfDefaultBuilderRule.java
 Tue Sep 12 19:26:16 2006
@@ -37,7 +37,7 @@
     /**
      * <p>Generic [EMAIL PROTECTED] Builder} that handles JSP style of 
markup's.</p>
      */
-    private static final Builder[] BUILDERS = {new JsfDefaultBuilder()};
+    private final JsfDefaultBuilder builder = new JsfDefaultBuilder();
 
     /**
      * <p>Assigns handling of the markup to [EMAIL PROTECTED] 
org.apache.shale.clay.parser.builder.JsfDefaultBuilder}
@@ -49,9 +49,29 @@
     public boolean execute(Context context) {
 
         BuilderRuleContext builderRuleContext = (BuilderRuleContext) context;
-        builderRuleContext.setBuilder(BUILDERS[0]);
+        builderRuleContext.setBuilder(builder);
 
         return true;
+    }
+
+    /**
+     * <p>Returns the namespace prefix that will be added to the
+     * node name when resolving the clay config.</p>
+     *
+     * @return URI prefix
+     */
+    public String getPrefix() {
+        return builder.getPrefix();
+    }
+
+    /**
+     * <p>Sets the namespace preix that will override the template
+     * nodeds qname.</p>
+     *
+     * @param prefix URI prefix
+     */
+    public void setPrefix(String prefix) {
+        builder.setPrefix(prefix);
     }
 
 }

Modified: 
shale/framework/trunk/shale-clay/src/main/resources/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/main/resources/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml?view=diff&rev=442798&r1=442797&r2=442798
==============================================================================
--- 
shale/framework/trunk/shale-clay/src/main/resources/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml
 (original)
+++ 
shale/framework/trunk/shale-clay/src/main/resources/org/apache/shale/clay/parser/builder/chain/shale-builder-config.xml
 Tue Sep 12 19:26:16 2006
@@ -40,15 +40,15 @@
   </chain>
 
   <chain           name="http://java.sun.com/jsf/core";>
-    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule"/>
+    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule" 
prefix="f"/>
   </chain>
 
   <chain           name="http://java.sun.com/jsf/html";>
-    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule"/>
+    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule" 
prefix="h"/>
   </chain>
 
   <chain           name="http://shale.apache.org/core";>
-    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule"/>
+    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule" 
prefix="s"/>
   </chain>
 
   <chain           name="http://shale.apache.org/xml/clay";>
@@ -56,11 +56,11 @@
   </chain>
 
   <chain           name="http://shale.apache.org/clay";>
-    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule"/>
+    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule" 
prefix="clay"/>
   </chain>
 

   <chain           name="http://myfaces.apache.org/tomahawk";>

-    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule"/>

+    <command  
className="org.apache.shale.clay.parser.builder.chain.JsfDefaultBuilderRule" 
prefix="t"/>

   </chain>

 
 


Reply via email to