Author: alexsmirnov
Date: 2010-05-11 19:45:25 -0400 (Tue, 11 May 2010)
New Revision: 16995
Added:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Taglib.java
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Tag.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/LibraryModelWrapper.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/TagTemplateModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerClassGenerator.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerGeneratorVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RenderKitModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/TagModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/FacesConfigBean.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java
Log:
CODING IN PROGRESS - issue RF-7736: Library model verifier.
https://jira.jboss.org/jira/browse/RF-7736
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Tag.java
===================================================================
---
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Tag.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/Tag.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -46,7 +46,7 @@
*/
public String name() default "";
- public TagType type() default TagType.None;
+ public TagType type() default TagType.Facelets;
public String handler() default "";
Added:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java
===================================================================
---
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java
(rev 0)
+++
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.richfaces.cdk.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation defines taglib for which all tags for JSF components from that
packages belong to
+ *
+ * @author asmirnov
+ * @version $Id$
+ *
+ */
+(a)Retention(RetentionPolicy.SOURCE)
+(a)Target(ElementType.PACKAGE)
+public @interface TagLibrary {
+ public String tlibVersion();
+
+ public String validatorClass();
+
+ public String displayName();
+
+ public String jspVersion();
+
+ public String listenerClass();
+
+ public String shortName();
+
+ public String uri();
+
+}
Property changes on:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/TagLibrary.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -1,35 +1,24 @@
package org.richfaces.cdk.apt.processors;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
+import org.richfaces.cdk.NamingConventions;
import org.richfaces.cdk.annotations.Description;
import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.annotations.TagType;
import org.richfaces.cdk.apt.SourceUtils;
-import org.richfaces.cdk.model.BehaviorModel;
import org.richfaces.cdk.model.ClassName;
-import org.richfaces.cdk.model.ComponentModel;
-import org.richfaces.cdk.model.ConverterModel;
import org.richfaces.cdk.model.DescriptionGroup;
import org.richfaces.cdk.model.ModelElementBase;
import org.richfaces.cdk.model.TagModel;
-import org.richfaces.cdk.model.ValidatorModel;
import org.richfaces.cdk.util.Strings;
-import org.richfaces.cdk.NamingConventions;
-import javax.faces.view.facelets.BehaviorHandler;
-import javax.faces.view.facelets.ComponentHandler;
-import javax.faces.view.facelets.ConverterHandler;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
-import javax.xml.validation.ValidatorHandler;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
public abstract class ProcessorBase {
- private static final String COMPONENT_HANDLER_NAME =
ComponentHandler.class.getName();
- private static final String VALIDATOR_HANDLER_NAME =
ValidatorHandler.class.getName();
- private static final String CONVERTER_HANDLER_NAME =
ConverterHandler.class.getName();
- private static final String BEHAVIOR_HANDLER_NAME = BehaviorHandler.class.getName();
@Inject
private Provider<SourceUtils> sourceUtils;
@@ -52,45 +41,21 @@
if (!TagType.None.equals(tag.type())) {
String name = tag.name();
+ // TODO - move to validator.
if (Strings.isEmpty(name)) {
name = getNamingConventions().inferTagName(model.getId());
}
tagModel.setName(name);
tagModel.setType(tag.type());
tagModel.setTargetClass(ClassName.parseName(tag.handler()));
- tagModel.setBaseClass(ClassName.parseName(getBaseClass(tag, model)));
+ tagModel.setBaseClass(ClassName.parseName(tag.baseClass()));
tagModel.setGenerate(tag.generate());
- // TODO - move refference integrity to model.
- tagModel.setModel(model);
model.getTags().add(tagModel);
}
}
- private String getBaseClass(Tag tag, ModelElementBase model) {
- String baseClass = tag.baseClass();
- if (!Strings.isEmpty(baseClass)) {
- return baseClass;
- }
-
- if (model instanceof ComponentModel) {
- return COMPONENT_HANDLER_NAME;
-
- } else if (model instanceof ValidatorModel) {
- return VALIDATOR_HANDLER_NAME;
-
- } else if (model instanceof ConverterModel) {
- return CONVERTER_HANDLER_NAME;
-
- } else if (model instanceof BehaviorModel) {
- return BEHAVIOR_HANDLER_NAME;
-
- } else {
- throw new IllegalStateException("Unknown model class.");
- }
- }
-
protected void setClassNames(TypeElement componentElement, ModelElementBase
modelElement,
String generatedClass) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/LibraryModelWrapper.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/LibraryModelWrapper.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/LibraryModelWrapper.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -56,10 +56,6 @@
return new ModelElementBaseTemplateModel((ModelElementBase) obj, this);
}
- if (obj instanceof TagModel) {
- return new TagTemplateModel((TagModel) obj, this);
- }
-
return super.wrap(obj);
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/TagTemplateModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/TagTemplateModel.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/freemarker/TagTemplateModel.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -22,27 +22,37 @@
package org.richfaces.cdk.generate.freemarker;
+import org.richfaces.cdk.model.BehaviorModel;
+import org.richfaces.cdk.model.ComponentModel;
+import org.richfaces.cdk.model.ConverterModel;
+import org.richfaces.cdk.model.EventName;
+import org.richfaces.cdk.model.ModelElementBase;
+import org.richfaces.cdk.model.PropertyBase;
+import org.richfaces.cdk.model.TagModel;
+import org.richfaces.cdk.model.ValidatorModel;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+
import freemarker.ext.beans.BeanModel;
import freemarker.ext.beans.BeansWrapper;
import freemarker.template.TemplateModel;
import freemarker.template.TemplateModelException;
-import org.richfaces.cdk.model.*;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
/**
* @author akolonitsky
* @since Feb 23, 2010
*/
public class TagTemplateModel extends BeanModel implements TemplateModel{
- private final TagModel model;
+// private final TagModel tagModel;
private Set<EventName> eventNames;
+ private final ModelElementBase model;
/**
* <p class="changed_added_4_0">
@@ -51,9 +61,10 @@
* @param object
* @param wrapper
*/
- public TagTemplateModel(TagModel object, BeansWrapper wrapper) {
+ public TagTemplateModel(ModelElementBase model,TagModel object, BeansWrapper wrapper)
{
super(object, wrapper);
- model = object;
+ this.model = model;
+// this.tagModel = object;
}
@Override
@@ -70,13 +81,15 @@
return defaultEvent();
} else if ("objectType".equals(key)) {
return getObjectType();
+ } else if ("model".equals(key)) {
+ return wrapper.wrap(model);
}
return super.get(key);
}
private TemplateModel getObjectType() throws TemplateModelException {
- ModelElementBase modelElementBase = this.model.getModel();
+ ModelElementBase modelElementBase = this.model;
if (modelElementBase instanceof ComponentModel) {
return wrapper.wrap("Component");
}
@@ -121,7 +134,7 @@
if (null == eventNames) {
eventNames = Sets.newHashSet();
- for (PropertyBase property : model.getModel().getAttributes()) {
+ for (PropertyBase property : this.model.getAttributes()) {
eventNames.addAll(property.getEventNames());
}
}
@@ -130,7 +143,7 @@
}
private TemplateModel requiredAttributes() throws TemplateModelException {
- Collection<PropertyBase> attributes = model.getModel().getAttributes();
+ Collection<PropertyBase> attributes = this.model.getAttributes();
Collection<PropertyModel> models = new
ArrayList<PropertyModel>(attributes.size());
for (PropertyBase entry : attributes) {
if (entry.isGenerate() && entry.isRequired()) {
@@ -142,7 +155,7 @@
}
private TemplateModel generatedAttributes() throws TemplateModelException {
- Collection<PropertyBase> attributes = model.getModel().getAttributes();
+ Collection<PropertyBase> attributes = this.model.getAttributes();
Collection<PropertyModel> models = new
ArrayList<PropertyModel>(attributes.size());
for (PropertyBase entry : attributes) {
if (entry.isGenerate() && entry.isBindingAttribute()) {
@@ -153,7 +166,7 @@
return wrapper.wrap(models);
}
private TemplateModel attributes() throws TemplateModelException {
- Collection<PropertyBase> attributes = model.getModel().getAttributes();
+ Collection<PropertyBase> attributes = this.model.getAttributes();
Collection<PropertyModel> models = new
ArrayList<PropertyModel>(attributes.size());
for (PropertyBase entry : attributes) {
models.add(new PropertyModel(entry, wrapper));
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerClassGenerator.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerClassGenerator.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerClassGenerator.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -23,13 +23,18 @@
package org.richfaces.cdk.generate.java.taghandler;
import com.google.inject.Inject;
+
+import freemarker.ext.beans.BeansWrapper;
import freemarker.template.Configuration;
+import freemarker.template.ObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.richfaces.cdk.CdkException;
import org.richfaces.cdk.FileManager;
import org.richfaces.cdk.Output;
import org.richfaces.cdk.Outputs;
+import org.richfaces.cdk.generate.freemarker.TagTemplateModel;
+import org.richfaces.cdk.model.ModelElementBase;
import org.richfaces.cdk.model.TagModel;
import org.richfaces.cdk.model.Trackable;
@@ -49,11 +54,13 @@
private final FileManager output;
+ private final Configuration configuration;
+
@Inject
public TagHandlerClassGenerator(Configuration configuration,
@Output(Outputs.JAVA_CLASSES) FileManager output) {
+ this.configuration = configuration;
this.output = output;
-
try {
template = configuration.getTemplate(TAGHANDLER_TEMPLATE);
} catch (IOException e) {
@@ -61,11 +68,10 @@
}
}
- public boolean process(TagModel tag) throws CdkException {
+ public boolean process(ModelElementBase model, TagModel tag) throws CdkException {
try {
- Writer writer = getOutput(tag);
-
- template.process(tag, writer);
+ Writer writer = getOutput(tag);
+ template.process(new TagTemplateModel(model, tag, (BeansWrapper)
configuration.getObjectWrapper()), writer);
writer.close();
} catch (IOException e) {
throw new CdkException(e);
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerGeneratorVisitor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerGeneratorVisitor.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerGeneratorVisitor.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -38,11 +38,11 @@
*/
public class TagHandlerGeneratorVisitor extends EmptyVisitor {
- private Injector injector;
+ private final TagHandlerClassGenerator tagGenerator;
@Inject
- public TagHandlerGeneratorVisitor(Injector injector) {
- this.injector = injector;
+ public TagHandlerGeneratorVisitor(TagHandlerClassGenerator tagGenerator) {
+ this.tagGenerator = tagGenerator;
}
public void visitComponent(ComponentModel model) {
@@ -64,13 +64,9 @@
private void generateTagHandler(ModelElementBase model) {
for (TagModel tag : model.getTags()) {
if (tag.isGenerate()) {
- generateTagHandler(tag);
+ tagGenerator.process(model,tag);
}
}
}
- private void generateTagHandler(TagModel model) {
- TagHandlerClassGenerator generator =
injector.getInstance(TagHandlerClassGenerator.class);
- generator.process(model);
- }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -77,6 +77,7 @@
protected Writer getOutput() throws CdkException {
try {
+ // TODO - use short name from the library.
return output.createOutput("META-INF/" + generator.getNamespace() +
".taglib.xml", library.lastModified());
} catch (IOException e) {
throw new CdkException(e);
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -86,6 +86,10 @@
private final ModelCollection<BehaviorModel> behaviors =
ModelCollection.<BehaviorModel> create();
private ConfigExtension extension;
+
+ private String prefix;
+
+ private Taglib taglib;
private boolean metadataComplete;
@@ -316,6 +320,22 @@
this.metadataComplete = metadataComplete;
}
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public Taglib getTaglib() {
+ return taglib;
+ }
+
+ public void setTaglib(Taglib taglib) {
+ this.taglib = taglib;
+ }
+
@Override
public long lastModified() {
return lastModified;
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RenderKitModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RenderKitModel.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RenderKitModel.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -25,6 +25,8 @@
package org.richfaces.cdk.model;
+import org.richfaces.cdk.util.ComparatorUtils;
+
import java.util.Collection;
import javax.faces.render.RenderKitFactory;
@@ -114,7 +116,11 @@
@Override
public boolean same(RenderKitModel other) {
- return null != getRenderKitClass() &&
getRenderKitClass().equals(other.getRenderKitClass());
+ if(null != getId() && null != other.getId()){
+ return getId().equals(other.getId());
+ } else {
+ return ComparatorUtils.nullSafeEquals(getRenderKitClass(),
other.getRenderKitClass());
+ }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/TagModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/TagModel.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/TagModel.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -37,12 +37,6 @@
private static final long serialVersionUID = 3875718626199223087L;
- /**
- * <p class="changed_added_4_0">Component that the tag creates. This
in bidirectional one to one relation.</p>
- * TODO - tag should also works with {@code FacesListener}
- */
- private ModelElementBase model;
-
private ClassName targetClass;
private ClassName baseClass;
@@ -56,14 +50,6 @@
private String name;
- public ModelElementBase getModel() {
- return model;
- }
-
- public void setModel(ModelElementBase model) {
- this.model = model;
- }
-
public String getName() {
return name;
}
Added: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Taglib.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Taglib.java
(rev 0)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Taglib.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -0,0 +1,163 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+
+
+package org.richfaces.cdk.model;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * This class contains information about tag library.
+ * @author asmirnov
+ *
+ */
+@XmlType(name = "taflib-configType", namespace =
ComponentLibrary.CDK_EXTENSIONS_NAMESPACE)
+(a)XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
+public class Taglib {
+ private String tlibVersion = null;
+ private ClassName validatorClass = null;
+ private String displayName;
+ private String jspVersion;
+ private ClassName listenerClass;
+ private String shortName;
+ private String taglib;
+ private String uri;
+
+ /**
+ * @return the displayName
+ */
+ public String getDisplayName() {
+ return this.displayName;
+ }
+
+ /**
+ * @param displayName the displayName to set
+ */
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ /**
+ * @return the listenerClass
+ */
+ public ClassName getListenerClass() {
+ return this.listenerClass;
+ }
+
+ /**
+ * @param listenerClass the listenerClass to set
+ */
+ public void setListenerClass(ClassName listenerClass) {
+ this.listenerClass = listenerClass;
+ }
+
+ /**
+ * @return the shortName
+ */
+ public String getShortName() {
+ return this.shortName;
+ }
+
+ /**
+ * @param shortName the shortName to set
+ */
+ public void setShortName(String shortName) {
+ this.shortName = shortName;
+ }
+
+ /**
+ * @return the taglib
+ */
+ public String getTaglib() {
+ return this.taglib;
+ }
+
+ /**
+ * @param taglib the taglib to set
+ */
+ public void setTaglib(String taglib) {
+ this.taglib = taglib;
+ }
+
+ /**
+ * @return the uri
+ */
+ public String getUri() {
+ return this.uri;
+ }
+
+ /**
+ * @param uri the uri to set
+ */
+ public void setUri(String uri) {
+ this.uri = uri;
+ }
+
+ /**
+ * @return the jspVersion
+ */
+ public String getJspVersion() {
+ return this.jspVersion;
+ }
+
+ /**
+ * @param jspVersion the jspVersion to set
+ */
+ public void setJspVersion(String jspVersion) {
+ this.jspVersion = jspVersion;
+ }
+
+ /**
+ * @return the tlibVersion
+ */
+ public String getTlibVersion() {
+ return this.tlibVersion;
+ }
+
+ /**
+ * @param tlibVersion the tlibVersion to set
+ */
+ public void setTlibVersion(String tlibVersion) {
+ this.tlibVersion = tlibVersion;
+ }
+
+ /**
+ * @return the validatorClass
+ */
+ public ClassName getValidatorClass() {
+ return this.validatorClass;
+ }
+
+ /**
+ * @param validatorClass the validatorClass to set
+ */
+ public void setValidatorClass(ClassName validatorClass) {
+ this.validatorClass = validatorClass;
+ }
+
+ @Override
+ public String toString() {
+ return "Lib: " + getShortName() + ", URL: " + getUri();
+ }
+}
Property changes on:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Taglib.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -23,10 +23,6 @@
package org.richfaces.cdk.model.validator;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.NoSuchElementException;
-
import org.richfaces.cdk.CdkException;
import org.richfaces.cdk.Logger;
import org.richfaces.cdk.ModelValidator;
@@ -44,8 +40,18 @@
import org.richfaces.cdk.model.PropertyBase;
import org.richfaces.cdk.model.RenderKitModel;
import org.richfaces.cdk.model.RendererModel;
+import org.richfaces.cdk.model.TagModel;
import org.richfaces.cdk.util.Strings;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.NoSuchElementException;
+
+import javax.faces.view.facelets.BehaviorHandler;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.ConverterHandler;
+import javax.xml.validation.ValidatorHandler;
+
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
@@ -60,6 +66,10 @@
*/
public class ValidatorImpl implements ModelValidator {
+ public static final ClassName DEFAULT_COMPONENT_HANDLER = new
ClassName(ComponentHandler.class);
+ public static final ClassName DEFAULT_VALIDATOR_HANDLER = new
ClassName(ValidatorHandler.class);
+ public static final ClassName DEFAULT_CONVERTER_HANDLER = new
ClassName(ConverterHandler.class);
+ public static final ClassName DEFAULT_BEHAVIOR_HANDLER = new
ClassName(BehaviorHandler.class);
/**
* <p class="changed_added_4_0">
* </p>
@@ -123,6 +133,10 @@
return namingConventions.inferBehaviorClass(id);
}
});
+ for(TagModel tag : behavior.getTags()){
+ verifyTag(tag, behavior.getId(), DEFAULT_BEHAVIOR_HANDLER);
+ }
+
}
}
@@ -206,6 +220,9 @@
// compact(component.getAttributes());
// Check renderers.
// Check Tag
+ for(TagModel tag : component.getTags()){
+ verifyTag(tag, component.getId(), DEFAULT_COMPONENT_HANDLER);
+ }
verifyDescription(component);
for (FacetModel facet : component.getFacets()) {
verifyDescription(facet);
@@ -213,6 +230,23 @@
}
}
+ protected void verifyTag(TagModel tag, FacesId id, ClassName handler) {
+ if(Strings.isEmpty(tag.getName())){
+ String defaultTagName = namingConventions.inferTagName(id);
+ tag.setName(defaultTagName);
+ }
+ if(tag.isGenerate()){
+ if(null == tag.getBaseClass()){
+ // TODO - choose default handler class by tag type.
+ tag.setBaseClass(handler);
+ }
+ if(null == tag.getTargetClass()){
+ namingConventions.inferTagHandlerClass(id, tag.getType().toString());//
TODO - get markup somethere.
+ }
+ }
+ // TODO - copy component description to tag, if it has no description.
+ }
+
/**
* <p class="changed_added_4_0">
* </p>
@@ -235,7 +269,7 @@
}
}) && null == component.getFamily()) {
// Check family.
-
component.setFamily(namingConventions.inferUIComponentFamily(component.getType()));
+
component.setFamily(namingConventions.inferUIComponentFamily(component.getId()));
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/FacesConfigBean.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/FacesConfigBean.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/FacesConfigBean.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -39,6 +39,7 @@
import org.richfaces.cdk.model.EventModel;
import org.richfaces.cdk.model.Extensible;
import org.richfaces.cdk.model.RenderKitModel;
+import org.richfaces.cdk.model.Taglib;
import org.richfaces.cdk.model.ValidatorModel;
import com.google.common.collect.Lists;
@@ -193,6 +194,11 @@
}
public static final class FacesConfigExtension extends ConfigExtension {
+
+ private String prefix;
+
+ private Taglib taglib;
+
private List<EventModel> events = Lists.newArrayList();
@XmlElement(name = "faces-event", namespace =
ComponentLibrary.CDK_EXTENSIONS_NAMESPACE)
@@ -209,5 +215,23 @@
public void setEvents(List<EventModel> events) {
this.events = events;
}
+
+ @XmlElement(name = "prefix", namespace =
ComponentLibrary.CDK_EXTENSIONS_NAMESPACE)
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ @XmlElement(name = "taglib", namespace =
ComponentLibrary.CDK_EXTENSIONS_NAMESPACE)
+ public void setTaglib(Taglib taglib) {
+ this.taglib = taglib;
+ }
+
+ public Taglib getTaglib() {
+ return taglib;
+ }
}
}
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -65,11 +65,10 @@
TagModel tagModel = new TagModel();
tagModel.setName("mytag");
- tagModel.setModel(model);
tagModel.setTargetClass(ClassName.parseName("org.richfaces.cdk.generate.java.GeneratedTagHandler"));
tagModel.setBaseClass(ClassName.parseName(ComponentHandler.class.getName()));
- generator.process(tagModel);
+ generator.process(model,tagModel);
log.debug(outputWriter.toString());
verify(output);
Modified: root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml
===================================================================
--- root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml 2010-05-11
19:23:53 UTC (rev 16994)
+++ root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/pom.xml 2010-05-11
23:45:25 UTC (rev 16995)
@@ -49,8 +49,8 @@
<version>4.0.0-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.richfaces.framework</groupId>
- <artifactId>richfaces-commons</artifactId>
+ <groupId>org.richfaces.commons</groupId>
+ <artifactId>commons-api</artifactId>
<version>4.0.0-SNAPSHOT</version>
</dependency>
<dependency>
Modified:
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java
===================================================================
---
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java 2010-05-11
19:23:53 UTC (rev 16994)
+++
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java 2010-05-11
23:45:25 UTC (rev 16995)
@@ -35,6 +35,7 @@
import org.apache.maven.model.FileSet;
import org.apache.maven.model.Resource;
+import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
@@ -56,7 +57,7 @@
* @requiresDependencyResolution compile
* @phase generate-sources
*/
-public class GenerateMojo extends AbstractCDKMojo {
+public class GenerateMojo extends AbstractMojo {
private static final String[] JAVA_INCLUDES = new String[]{"**/*.java"};
private static final String MAIN_CONFIG = "src/main/config";
private static final String MAIN_TEMPLATES = "src/main/templates";
@@ -96,6 +97,11 @@
protected Map<String, String> options;
/**
+ * @parameter
+ */
+ protected Library library;
+
+ /**
* The directory for compiled classes.
*
* @parameter expression="${project.build.outputDirectory}"