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