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; }