You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shale.apache.org by gv...@apache.org on 2007/02/24 06:12:30 UTC

svn commit: r511214 - in /shale/tools/trunk/tld2claycfg: pom.xml src/main/java/org/apache/shale/clay/util/TldToClayconfig.java src/main/java/org/apache/shale/clay/util/beans/Taglib.java

Author: gvanmatre
Date: Fri Feb 23 21:12:30 2007
New Revision: 511214

URL: http://svn.apache.org/viewvc?view=rev&rev=511214
Log:
Applied two patches to the maven tld2claycfg tool submitted by Hermod Opstvedt (SHALE-408).

Modified:
    shale/tools/trunk/tld2claycfg/pom.xml
    shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/TldToClayconfig.java
    shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/beans/Taglib.java

Modified: shale/tools/trunk/tld2claycfg/pom.xml
URL: http://svn.apache.org/viewvc/shale/tools/trunk/tld2claycfg/pom.xml?view=diff&rev=511214&r1=511213&r2=511214
==============================================================================
--- shale/tools/trunk/tld2claycfg/pom.xml (original)
+++ shale/tools/trunk/tld2claycfg/pom.xml Fri Feb 23 21:12:30 2007
@@ -16,7 +16,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- * $Id:$
+ * $Id$
  */
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
@@ -49,7 +49,7 @@
 		<dependency>
 			<groupId>org.apache.shale</groupId>
 			<artifactId>shale-clay</artifactId>
-			<version>1.0.4-SNAPSHOT</version>
+			<version>1.1.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>javax.servlet</groupId>

Modified: shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/TldToClayconfig.java
URL: http://svn.apache.org/viewvc/shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/TldToClayconfig.java?view=diff&rev=511214&r1=511213&r2=511214
==============================================================================
--- shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/TldToClayconfig.java (original)
+++ shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/TldToClayconfig.java Fri Feb 23 21:12:30 2007
@@ -32,12 +32,14 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugin.logging.SystemStreamLog;
 import org.apache.shale.clay.util.beans.Attribute;
 import org.apache.shale.clay.util.beans.Listener;
 import org.apache.shale.clay.util.beans.Tag;
 import org.apache.shale.clay.util.beans.Taglib;
+import org.apache.shale.clay.util.beans.Validator;
 import org.apache.shale.clay.util.beans.Variable;
 
 public class TldToClayconfig {
@@ -48,6 +50,8 @@
 
     private static final String LISTENER = "listener";
 
+    private static final String VALIDATOR = "validator";
+
     private static final String TAGLIB = "taglib";
 
     private static final String ATTRIBUTE = "attribute";
@@ -88,6 +92,10 @@
 
     private static final String LISTENERCLASS_C = "listenerClass";
 
+    private static final String VALIDATORCLASS = "validator-class";
+
+    private static final String VALIDATORCLASS_C = "validatorClass";
+
     private static final String VIEW = "view";
 
     private static final String COMPONENT = "component";
@@ -96,6 +104,8 @@
 
     private static final String COMPONENTTYPE = "componentType";
 
+    private static final String RENDERERTYPE = "rendererType";
+
     private static final String EXTENDS = "extends";
 
     private static final String BASECOMPONENT = "baseComponent";
@@ -114,12 +124,18 @@
 
     private static final String BINDINGTYPE = "bindingType";
 
+    private static final String VALUE = "value";
+
+    private static final String DESCRIPTION = "description";
+
     private Taglib tagLib;
 
     private Tag tag;
 
     private Listener listener;
 
+    private Validator validator;
+
     private Attribute attribute;
 
     private Variable variable;
@@ -132,8 +148,12 @@
 
     private String mbFilter;
 
+    private String acFilter;
+
     private String[] mbfMap;
 
+    private String[] acMap;
+
     private ClassLoader classloader;
 
     // Public methods
@@ -143,9 +163,8 @@
 
             URL url = findResource();
             if (url == null) {
-                throw new IllegalArgumentException(Messages
-                        .getString("TldToClayconfig.exception.fnfe")
-                        + ": " + filename);
+                throw new IllegalArgumentException(Messages.getString("TldToClayconfig.exception.fnfe") + ": "
+                        + filename);
             }
 
             InputStream is = url.openStream();
@@ -156,8 +175,8 @@
             int attributeCount = 0;
             int variableCount = 0;
             int listenerCount = 0;
-            for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser
-                    .next()) {
+            int validatorCount = 0;
+            for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) {
                 switch (event) {
                 case XMLStreamConstants.START_DOCUMENT:
                     break;
@@ -178,6 +197,11 @@
                         listenerCount++;
                         break;
                     }
+                    if (isValidator(parser.getLocalName())) {
+                        validator = createValidator();
+                        validatorCount++;
+                        break;
+                    }
                     if (isTag(parser.getLocalName())) {
                         tag = createTag();
                         tagCount++;
@@ -187,9 +211,12 @@
                         tagLib = createTagLib();
                         break;
                     }
-                    if (tagCount == 0 && listenerCount == 0) {
+                    if (tagCount == 0 && listenerCount == 0 && validatorCount == 0) {
                         addToTagLib(tagLib, parser);
                         break;
+                    } else if (validatorCount > 0) {
+                        addToValidator(validator, parser);
+                        break;
                     } else if (listenerCount > 0) {
                         addToListener(listener, parser);
                         break;
@@ -225,6 +252,12 @@
                         listenerCount = 0;
                         break;
                     }
+                    if (isValidator(parser.getLocalName())) {
+                        closeValidator(tagLib, validator);
+                        validator = null;
+                        validatorCount = 0;
+                        break;
+                    }
                     if (isTaglib(parser.getLocalName())) {
                         closeTaglib(tagLib);
                         break;
@@ -239,11 +272,11 @@
                 }
             }
             parser.close();
-            writeConfigFile(tagLib, url.getPath().substring(
-                    url.getPath().lastIndexOf("/") + 1,
+            writeConfigFile(tagLib, url.getPath().substring(url.getPath().lastIndexOf("/") + 1,
                     url.getPath().lastIndexOf(".")));
         } catch (Exception e) {
-            throw new Exception(Messages.getString("TldToClayconfig.exception")
+            e.printStackTrace();
+            throw new Exception(Messages.getString("TldToClayconfig.exception: ") + e.toString() + ": "
                     + e.getMessage());
         }
 
@@ -318,8 +351,7 @@
             LOGGER.debug("Looking for: " + filename);
         }
         List urls = new ArrayList();
-        for (Enumeration ui = classloader.getResources(filename); ui
-                .hasMoreElements();) {
+        for (Enumeration ui = classloader.getResources(filename); ui.hasMoreElements();) {
             urls.add(ui.nextElement());
         }
         if (urls.size() > 0) {
@@ -345,11 +377,9 @@
         return new Attribute();
     }
 
-    private void addToAttribute(Attribute attribute, XMLStreamReader parser)
-            throws Exception {
+    private void addToAttribute(Attribute attribute, XMLStreamReader parser) throws Exception {
         String item = coerce(parser.getLocalName());
-        attribute.getClass().getDeclaredField(item).set(attribute,
-                parser.getElementText());
+        attribute.getClass().getDeclaredField(item).set(attribute, parser.getElementText());
     }
 
     private void closeAttribute(Tag tag, Attribute attribute) {
@@ -366,20 +396,23 @@
         tag.getClass().getDeclaredField(item).set(tag, parser.getElementText());
     }
 
-    private void addToTagLib(Taglib tagLib, XMLStreamReader parser)
-            throws Exception {
+    private void addToTagLib(Taglib tagLib, XMLStreamReader parser) throws Exception {
 
         String item = coerce(parser.getLocalName());
-        tagLib.getClass().getDeclaredField(item).set(tagLib,
-                parser.getElementText());
+        tagLib.getClass().getDeclaredField(item).set(tagLib, parser.getElementText());
     }
 
-    private void addToListener(Listener listener, XMLStreamReader parser)
-            throws Exception {
+    private void addToListener(Listener listener, XMLStreamReader parser) throws Exception {
 
         String item = coerce(parser.getLocalName());
-        listener.getClass().getDeclaredField(item).set(listener,
-                parser.getElementText());
+        listener.getClass().getDeclaredField(item).set(listener, parser.getElementText());
+    }
+
+    private void addToValidator(Validator validator, XMLStreamReader parser) throws Exception {
+
+        String item = coerce(parser.getLocalName());
+        String value = parser.getElementText();
+        validator.getClass().getDeclaredField(item).set(validator, clean(value));
     }
 
     private Taglib createTagLib() {
@@ -389,8 +422,7 @@
     private void closeTaglib(Taglib tagLib) {
     }
 
-    private void writeConfigFile(Taglib tagLib, String filename)
-            throws Exception {
+    private void writeConfigFile(Taglib tagLib, String filename) throws Exception {
 
         XMLOutputFactory xof = XMLOutputFactory.newInstance();
         XMLStreamWriter xtw = null;
@@ -405,18 +437,30 @@
         xtw.writeDTD(Messages.getString("TldToClayconfig.doc.dtd"));
         xtw.writeStartElement(VIEW);
         List tags = tagLib.getTags();
+        Validator validator = tagLib.getValidator();
         List attributes = null;
         Tag tag = null;
+        String rt = null;
         Attribute attribute = null;
         for (int i = 0; i < tags.size(); i++) {
             tag = (Tag) tags.get(i);
-            if (isUIComponentTag(tag.getTagClass())) {
+            if (isUIComponentTag(tag.getTagClass()) || isAdditionalComponent(tag.getTagClass())) {
                 xtw.writeStartElement(COMPONENT);
-                xtw.writeAttribute(JSFID, tagLib.getShortName() + ":"
-                        + tag.getName());
-                xtw.writeAttribute(COMPONENTTYPE, getComponentType(tag
-                        .getTagClass()));
+                xtw.writeAttribute(JSFID, tagLib.getShortName() + ":" + tag.getName());
+                if(getComponentType(tag.getTagClass())!=null)
+                {
+                    xtw.writeAttribute(COMPONENTTYPE, getComponentType(tag.getTagClass()));
+                }
+                rt = getRendererType(tag.getTagClass());
+                if (validator != null) {
+                    xtw.writeAttribute(VALIDATOR, validator.getValidatorClass());
+                }
                 xtw.writeAttribute(EXTENDS, BASECOMPONENT);
+                if (!StringUtils.isEmpty(tag.getDescription())) {
+                    xtw.writeStartElement(DESCRIPTION);
+                    xtw.writeCharacters(tag.getDescription());
+                    xtw.writeEndElement();
+                }
                 attributes = tag.getAttributes();
                 if (attributes != null && attributes.size() > 0) {
                     removeBaseActionAttributes(attributes);
@@ -432,6 +476,18 @@
                         } else {
                             xtw.writeAttribute(BINDINGTYPE, MB);
                         }
+                        if (!StringUtils.isEmpty(attribute.getDescription())) {
+                            xtw.writeStartElement(DESCRIPTION);
+                            xtw.writeCharacters(attribute.getDescription());
+                            xtw.writeEndElement();
+                        }
+                        xtw.writeEndElement();
+                    }
+                    if (!StringUtils.isEmpty(rt)) {
+                        xtw.writeStartElement(SET);
+                        xtw.writeAttribute(NAME, RENDERERTYPE);
+                        xtw.writeAttribute(BINDINGTYPE, VB);
+                        xtw.writeAttribute(VALUE, rt);
                         xtw.writeEndElement();
                     }
                     xtw.writeEndElement();
@@ -450,9 +506,7 @@
         Iterator it = dummy.iterator();
         while (it.hasNext()) {
             attribute = (Attribute) it.next();
-            if (attribute != null
-                    && (attribute.getName().equals(RENDERED) || attribute
-                            .getName().equals(BINDING))) {
+            if (attribute != null && (attribute.getName().equals(RENDERED) || attribute.getName().equals(BINDING))) {
                 attributes.remove(attribute);
             }
         }
@@ -468,6 +522,16 @@
         return null;
     }
 
+    private String getRendererType(String clazz) throws Exception {
+
+        clazz = clazz.trim();
+        Object cTag = (Object) classloader.loadClass(clazz).newInstance();
+        if (cTag instanceof UIComponentTag) {
+            return ((UIComponentTag) cTag).getRendererType();
+        }
+        return null;
+    }
+
     private boolean isValueReference(String name) {
 
         for (int i = 0; i < mbfMap.length; i++) {
@@ -479,6 +543,17 @@
 
     }
 
+    private boolean isAdditionalComponent(String name) {
+
+        for (int i = 0; i < acMap.length; i++) {
+            if (name.matches(acMap[i])) {
+                return true;
+            }
+        }
+        return false;
+
+    }
+
     private boolean isUIComponentTag(String clazz) throws Exception {
 
         clazz = clazz.trim();
@@ -497,6 +572,10 @@
         tagLib.setListener(listener);
     }
 
+    private void closeValidator(Taglib tagLib, Validator validator) {
+        tagLib.setValidator(validator);
+    }
+
     private boolean isTag(String name) {
         return name != null ? name.equals(TAG) : false;
     }
@@ -505,6 +584,10 @@
         return name != null ? name.equals(LISTENER) : false;
     }
 
+    private boolean isValidator(String name) {
+        return name != null ? name.equals(VALIDATOR) : false;
+    }
+
     private boolean isTaglib(String name) {
         return name != null ? name.equals(TAGLIB) : false;
     }
@@ -517,6 +600,10 @@
         return new Listener();
     }
 
+    private Validator createValidator() {
+        return new Validator();
+    }
+
     // Take care of non-standard javanames for attributes
     private String coerce(String localName) {
 
@@ -536,11 +623,18 @@
             return DISPLAYNAME_C;
         } else if (localName.equals(LISTENERCLASS)) {
             return LISTENERCLASS_C;
+        } else if (localName.equals(VALIDATORCLASS)) {
+            return VALIDATORCLASS_C;
         }
 
         return localName;
     }
 
+    private String clean(String input) {
+        String temp = input.replace('\n', ' ');
+        return temp.trim();
+    }
+
     // Utility method for running converter as a standalone
     public static void main(String[] args) {
         setLOGGER(new SystemStreamLog());
@@ -550,8 +644,7 @@
         }
 
         try {
-            ClassLoader classloader = Thread.currentThread()
-                    .getContextClassLoader();
+            ClassLoader classloader = Thread.currentThread().getContextClassLoader();
             String fn = args[0];
             String v = args[1];
             String d = args[2];
@@ -568,6 +661,23 @@
             LOGGER.error(Messages.getString("TldToClayconfig.exception"));
             System.exit(0);
         }
+    }
+
+    public String[] getAcMap() {
+        return acMap;
+    }
+
+    public void setAcMap(String[] acMap) {
+        this.acMap = acMap;
+    }
+
+    public String getAcFilter() {
+        return acFilter;
+    }
+
+    public void setAcFilter(String acFilter) {
+        this.acFilter = acFilter;
+        acMap = acFilter.split(",");
     }
 
 }

Modified: shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/beans/Taglib.java
URL: http://svn.apache.org/viewvc/shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/beans/Taglib.java?view=diff&rev=511214&r1=511213&r2=511214
==============================================================================
--- shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/beans/Taglib.java (original)
+++ shale/tools/trunk/tld2claycfg/src/main/java/org/apache/shale/clay/util/beans/Taglib.java Fri Feb 23 21:12:30 2007
@@ -39,7 +39,7 @@
 
     public String largeIcon;
 
-    public String validator;
+    public Validator validator;
 
     public Listener listener;
 
@@ -75,11 +75,11 @@
         this.smallIcon = smallIcon;
     }
 
-    public String getValidator() {
+    public Validator getValidator() {
         return validator;
     }
 
-    public void setValidator(String validator) {
+    public void setValidator(Validator validator) {
         this.validator = validator;
     }