Author: alexsmirnov
Date: 2010-05-20 19:27:53 -0400 (Thu, 20 May 2010)
New Revision: 17171
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/TagHandlerWriter.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.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/BehaviorModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorRenderer.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/ComponentModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ConverterModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EmptyVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FacetModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FunctionModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ListenerModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/PropertyBase.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/RendererModel.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/ValidatorModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitable.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/ModelBean.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java
Log:
RESOLVED - issue RF-8669: CDK: template renderers are not registered in generated
faces-config.xml if enforcer is used
https://jira.jboss.org/browse/RF-8669
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-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerGeneratorVisitor.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -36,7 +36,7 @@
* @author akolonitsky
* @since Feb 22, 2010
*/
-public class TagHandlerGeneratorVisitor extends EmptyVisitor {
+public class TagHandlerGeneratorVisitor extends EmptyVisitor<Boolean,Boolean> {
private final TagHandlerClassGenerator tagGenerator;
@@ -45,20 +45,28 @@
this.tagGenerator = tagGenerator;
}
- public void visitComponent(ComponentModel model) {
+ @Override
+ public Boolean visitComponent(ComponentModel model,Boolean data) {
generateTagHandler(model);
+ return null;
}
- public void visitConverter(ConverterModel model) {
+ @Override
+ public Boolean visitConverter(ConverterModel model,Boolean data) {
generateTagHandler(model);
+ return null;
}
- public void visitValidator(ValidatorModel model) {
+ @Override
+ public Boolean visitValidator(ValidatorModel model,Boolean data) {
generateTagHandler(model);
+ return null;
}
- public void visitBehavior(BehaviorModel model) {
+ @Override
+ public Boolean visitBehavior(BehaviorModel model,Boolean data) {
generateTagHandler(model);
+ return null;
}
private void generateTagHandler(ModelElementBase model) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerWriter.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerWriter.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerWriter.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -22,8 +22,6 @@
package org.richfaces.cdk.generate.java.taghandler;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
import org.richfaces.cdk.CdkException;
import org.richfaces.cdk.CdkWriter;
import org.richfaces.cdk.FileManager;
@@ -31,6 +29,8 @@
import org.richfaces.cdk.Outputs;
import org.richfaces.cdk.model.ComponentLibrary;
+import com.google.inject.Inject;
+
/**
* @author akolonitsky
* @since Feb 22, 2010
@@ -45,12 +45,11 @@
private FileManager output;
@Inject
- private Injector injector;
+ private TagHandlerGeneratorVisitor tagHandlerGeneratorVisitor;
@Override
public void render() throws CdkException {
- TagHandlerGeneratorVisitor tagHandlerGeneratorVisitor =
injector.getInstance(TagHandlerGeneratorVisitor.class);
- library.accept(tagHandlerGeneratorVisitor);
+ library.accept(tagHandlerGeneratorVisitor,null);
}
public ComponentLibrary getLibrary() {
@@ -68,12 +67,4 @@
public void setOutput(FileManager output) {
this.output = output;
}
-
- public Injector getInjector() {
- return injector;
- }
-
- public void setInjector(Injector injector) {
- this.injector = injector;
- }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -34,23 +34,17 @@
import org.richfaces.cdk.model.DescriptionGroup;
import org.richfaces.cdk.model.EmptyVisitor;
import org.richfaces.cdk.model.FunctionModel;
-import org.richfaces.cdk.model.ListenerModel;
-import org.richfaces.cdk.model.ModelElement;
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.model.ValidatorModel;
import org.richfaces.cdk.model.RendererModel.Type;
import org.richfaces.cdk.util.Strings;
-import java.util.List;
-
/**
* @author akolonitsky
* @since Feb 3, 2010
*/
-public class TaglibGeneratorVisitor extends EmptyVisitor {
+public class TaglibGeneratorVisitor extends EmptyVisitor<Boolean,ComponentLibrary>
{
private static final String COMPONENT = "component";
private static final String COMPONENT_TYPE = "component-type";
private static final String RENDERER_TYPE = "renderer-type";
@@ -60,7 +54,6 @@
private Element faceletTaglib;
- private ComponentLibrary componentLibrary;
public TaglibGeneratorVisitor() {
@@ -74,8 +67,8 @@
this.document = document;
}
- public void visitComponentLibrary(ComponentLibrary model) {
- this.componentLibrary = model;
+ @Override
+ public Boolean visitComponentLibrary(ComponentLibrary model,ComponentLibrary
componentLibrary) {
faceletTaglib = document.addElement("facelet-taglib",
"http://java.sun.com/xml/ns/javaee");
faceletTaglib.addAttribute("xmlns:xsi",
"http://www.w3.org/2001/XMLSchema-instance");
@@ -85,10 +78,11 @@
faceletTaglib.addAttribute("id",
componentLibrary.getTaglib().getShortName());
faceletTaglib.addElement("namespace").addText(componentLibrary.getTaglib().getUri());
+ return null;
}
@Override
- public void visitComponent(ComponentModel model) {
+ public Boolean visitComponent(ComponentModel model,ComponentLibrary componentLibrary)
{
for (TagModel tagModel : model.getTags()) {
if (TagType.Facelets != tagModel.getType()
&& TagType.All != tagModel.getType()) {
@@ -109,6 +103,7 @@
addTagHandler(component, tagModel);
appendAttributs(tag, model);
}
+ return null;
}
/**
@@ -128,8 +123,8 @@
-
- public void visitConverter(ConverterModel model) {
+ @Override
+ public Boolean visitConverter(ConverterModel model,ComponentLibrary componentLibrary)
{
for (TagModel tagModel : model.getTags()) {
if (TagType.Facelets.equals(tagModel.getType())) {
Element tag = createTag(tagModel.getName());
@@ -139,6 +134,7 @@
appendAttributs(tag, model);
}
}
+ return null;
}
/**
@@ -157,7 +153,7 @@
* <pre>
*
* */
- public void visitValidator(ValidatorModel model) {
+ public Boolean visitValidator(ValidatorModel model,ComponentLibrary componentLibrary)
{
for (TagModel tagModel : model.getTags()) {
if (TagType.Facelets.equals(tagModel.getType())) {
Element tag = createTag(tagModel.getName());
@@ -167,6 +163,7 @@
appendAttributs(tag, model);
}
}
+ return null;
}
@@ -212,7 +209,8 @@
return tag;
}
- public void visitBehavior(BehaviorModel model) {
+ @Override
+ public Boolean visitBehavior(BehaviorModel model,ComponentLibrary componentLibrary)
{
for (TagModel tagModel : model.getTags()) {
if (TagType.Facelets.equals(tagModel.getType())) {
Element tag = createTag(tagModel.getName());
@@ -222,46 +220,12 @@
appendAttributs(tag, model);
}
}
- }
-
- public void visitRenderKit(RenderKitModel model) {
- for (RendererModel renderer : model.getRenderers()) {
- visitRender(renderer);
- }
- }
-
- public void visitRender(RendererModel model) {
- if (true) {
- return; // TODO remove when renderer annotation will be implemented
- }
-
- Element component = findComponent(model.getFamily());
- if (component == null) {
- return;
- }
-
- component.addElement(RENDERER_TYPE, model.getType().getType());
- }
-
- private Element findComponent(String family) {
- // TODO rewrite method by XPath
- List<Element> tags = faceletTaglib.elements("tag");
- for (Element tag : tags) {
- Element component = tag.element(COMPONENT);
- if (component != null) {
- // TODO find by family instead type
- Element type = component.element(COMPONENT_TYPE);
- if (type != null && type.getTextTrim().equals(family)) {
- return component;
- }
- }
- }
-
return null;
}
+
@Override
- public void visitFunction(FunctionModel model) {
+ public Boolean visitFunction(FunctionModel model,ComponentLibrary componentLibrary)
{
if(TagType.Facelets.equals(model.getType())||TagType.All.equals(model.getType())){
Element functionElement = faceletTaglib.addElement("function");
addDescription(functionElement, model);
@@ -269,6 +233,7 @@
functionElement.addElement("function-class").addText(model.getFunctionClass().toString());
functionElement.addElement("function-signature").addText(model.getSignature());
}
+ return false;
}
/**
@@ -294,11 +259,5 @@
}
}
- public void visitListener(ListenerModel model) {
- // TODO
- }
-
- public void visit(ModelElement model) {
- // TODO do default implementation for new classes
- }
+
}
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-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibWriter.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -56,7 +56,7 @@
@Override
public void render() throws CdkException {
TaglibGeneratorVisitor visitor = new TaglibGeneratorVisitor();
- library.accept(visitor);
+ library.accept(visitor,library);
Document document = visitor.getDocument();
if (document.getRootElement().elements().isEmpty()) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -41,8 +41,8 @@
setId(behaviorId);
}
- public void accept(Visitor visitor) {
- visitor.visitBehavior(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitBehavior(this,data);
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorRenderer.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorRenderer.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/BehaviorRenderer.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -117,8 +117,8 @@
}
@Override
- public void accept(Visitor visitor) {
- visitor.visitBehaviorRenderer(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitBehaviorRenderer(this,data);
}
@Override
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-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -103,17 +103,18 @@
public ComponentLibrary() {
}
- public void accept(Visitor visitor) {
- visitor.visitComponentLibrary(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ R result = visitor.visitComponentLibrary(this,data);
- renderKits.accept(visitor);
- components.accept(visitor);
- converters.accept(visitor);
- validators.accept(visitor);
- listeners.accept(visitor);
- events.accept(visitor);
- behaviors.accept(visitor);
- functions.accept(visitor);
+ result = renderKits.accept(result,visitor,data);
+ result = components.accept(result,visitor,data);
+ result = converters.accept(result,visitor,data);
+ result = validators.accept(result,visitor,data);
+ result = listeners.accept(result,visitor,data);
+ result = events.accept(result,visitor,data);
+ result = behaviors.accept(result,visitor,data);
+ result = functions.accept(result,visitor,data);
+ return result;
}
/**
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -46,8 +46,8 @@
}
- public void accept(Visitor visitor) {
- visitor.visitComponent(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitComponent(this,data);
// TODO ??? see at render kit
// for (RendererModel rendererType : renderers) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ConverterModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ConverterModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ConverterModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -51,8 +51,8 @@
this.converterForClass = converterForClass;
}
- public void accept(Visitor visitor) {
- visitor.visitConverter(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitConverter(this,data);
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EmptyVisitor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EmptyVisitor.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EmptyVisitor.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -28,62 +28,64 @@
* @author akolonitsky
* @since Feb 22, 2010
*/
-public abstract class EmptyVisitor implements Visitor{
- public void visitComponentLibrary(ComponentLibrary model) {
- // Do nothing.
+public abstract class EmptyVisitor<R,D> implements Visitor<R,D>{
+
+ public R visitComponentLibrary(ComponentLibrary model, D param) {
+ return null;
}
- public void visitComponent(ComponentModel model) {
- // Do nothing.
+ public R visitComponent(ComponentModel model, D param) {
+ return null;
}
- public void visitConverter(ConverterModel model) {
- // Do nothing.
+ public R visitConverter(ConverterModel model, D param) {
+ return null;
}
- public void visitValidator(ValidatorModel model) {
- // Do nothing.
+ public R visitValidator(ValidatorModel model, D param) {
+ return null;
}
- public void visitBehavior(BehaviorModel model) {
- // Do nothing.
+ public R visitBehavior(BehaviorModel model, D param) {
+ return null;
}
- public void visitFacet(FacetModel model) {
- // Do nothing.
+ public R visitFacet(FacetModel model, D param) {
+ return null;
}
- public void visitEvent(EventModel model) {
- // Do nothing.
+ public R visitEvent(EventModel model, D param) {
+ return null;
}
- public void visitBehaviorRenderer(BehaviorRenderer model) {
- // Do nothing.
+ public R visitBehaviorRenderer(BehaviorRenderer model, D param) {
+ return null;
}
- public void visitProperty(PropertyBase model) {
- // Do nothing.
+ public R visitProperty(PropertyBase model, D param) {
+ return null;
}
- public void visitRenderKit(RenderKitModel model) {
- // Do nothing.
+ public R visitRenderKit(RenderKitModel model, D param) {
+ return null;
}
- public void visitRender(RendererModel model) {
- // Do nothing.
+ public R visitRender(RendererModel model, D param) {
+ return null;
}
- public void visitListener(ListenerModel model) {
- // Do nothing.
+ public R visitListener(ListenerModel model, D param) {
+ return null;
}
@Override
- public void visitFunction(FunctionModel model) {
+ public R visitFunction(FunctionModel model, D param) {
// Do nothing
+ return null;
}
@SuppressWarnings("unchecked")
- public void visit(ModelElement model) {
- // Do nothing.
+ public R visit(ModelElement model, D param) {
+ return null;
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -130,8 +130,8 @@
ComponentLibrary.merge(this, other);
}
- public void accept(Visitor visitor) {
- visitor.visitEvent(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitEvent(this,data);
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FacetModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FacetModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FacetModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -62,8 +62,8 @@
ComponentLibrary.merge(this, other);
}
- public void accept(Visitor visitor) {
- visitor.visitFacet(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitFacet(this,data);
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FunctionModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FunctionModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/FunctionModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -151,8 +151,8 @@
}
@Override
- public void accept(Visitor visitor) {
- visitor.visitFunction(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitFunction(this,data);
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ListenerModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ListenerModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ListenerModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -45,8 +45,8 @@
public ListenerModel() {
}
- public void accept(Visitor visitor) {
- visitor.visitListener(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitListener(this,data);
}
/*
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -196,10 +196,18 @@
return elements.toArray(a);
}
- public void accept(Visitor visitor) {
+ public <R,D> R accept(R result, Visitor<R,D> visitor, D data) {
+ return null==result?accept(visitor, data):result;
+ }
+
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
for (ModelElement element : elements) {
- element.accept(visitor);
+ R result = element.accept(visitor,data);
+ if(null != result){
+ return result;
+ }
}
+ return null;
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/PropertyBase.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/PropertyBase.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/PropertyBase.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -299,8 +299,8 @@
setGenerate(generate || other.isGenerate());
}
- public void accept(Visitor visitor) {
- visitor.visitProperty(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitProperty(this,data);
}
@Override
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-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RenderKitModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -98,11 +98,12 @@
return behaviorRenderers;
}
- public void accept(Visitor visitor) {
- visitor.visitRenderKit(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ R result = visitor.visitRenderKit(this,data);
- renderers.accept(visitor);
- behaviorRenderers.accept(visitor);
+ result = renderers.accept(result,visitor,data);
+ result = behaviorRenderers.accept(result,visitor,data);
+ return result;
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -119,8 +119,8 @@
this.templatePath = templatePath;
}
- public void accept(Visitor visitor) {
- visitor.visitRender(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitRender(this,data);
}
@Override
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-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/TagModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -145,8 +145,8 @@
}
@Override
- public void accept(Visitor visitor) {
- visitor.visit(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visit(this,data);
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ValidatorModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ValidatorModel.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ValidatorModel.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -38,8 +38,8 @@
setId(validatorId);
}
- public void accept(Visitor visitor) {
- visitor.visitValidator(this);
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
+ return visitor.visitValidator(this,data);
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitable.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitable.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitable.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -1,6 +1,12 @@
package org.richfaces.cdk.model;
-public interface Visitable<V> {
+/**
+ * <p class="changed_added_4_0"></p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public interface Visitable {
- public void accept(Visitor visitor);
+ public <R,D> R accept(Visitor<R,D> visitor, D data);
+
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitor.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Visitor.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -23,35 +23,40 @@
package org.richfaces.cdk.model;
/**
+ * <p class="changed_added_4_0"></p>
* @author akolonitsky
* @since Jan 23, 2010
+ *
+ * @param <R> type of result returned by visitXXX method.
+ * @param <D> type of parameter for visit methods.
*/
-public interface Visitor {
- void visitComponentLibrary(ComponentLibrary model);
+public interface Visitor<R,D> {
+
+ R visitComponentLibrary(ComponentLibrary model, D param);
- void visitComponent(ComponentModel model);
+ R visitComponent(ComponentModel model, D param);
- void visitConverter(ConverterModel model);
+ R visitConverter(ConverterModel model, D param);
- void visitValidator(ValidatorModel model);
+ R visitValidator(ValidatorModel model, D param);
- void visitBehavior(BehaviorModel model);
+ R visitBehavior(BehaviorModel model, D param);
- void visitFacet(FacetModel model);
+ R visitFacet(FacetModel model, D param);
- void visitEvent(EventModel model);
+ R visitEvent(EventModel model, D param);
- void visitBehaviorRenderer(BehaviorRenderer model);
+ R visitBehaviorRenderer(BehaviorRenderer model, D param);
- void visitProperty(PropertyBase model);
+ R visitProperty(PropertyBase model, D param);
- void visitRenderKit(RenderKitModel model);
+ R visitRenderKit(RenderKitModel model, D param);
- void visitRender(RendererModel model);
+ R visitRender(RendererModel model, D param);
- void visitListener(ListenerModel model);
+ R visitListener(ListenerModel model, D param);
- void visitFunction(FunctionModel model);
+ R visitFunction(FunctionModel model, D param);
- void visit(ModelElement model);
+ R visit(ModelElement model, D param);
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -36,6 +36,7 @@
import org.richfaces.cdk.Sources;
import org.richfaces.cdk.model.ClassName;
import org.richfaces.cdk.model.ComponentLibrary;
+import org.richfaces.cdk.model.EmptyVisitor;
import org.richfaces.cdk.model.EventName;
import org.richfaces.cdk.model.PropertyModel;
import org.richfaces.cdk.model.PropertyBase;
@@ -165,22 +166,29 @@
public void build(File file, RendererModel rendererModel) {
log.debug("RendererTemplateParser.build");
- log.debug(" - file = " + file.getAbsolutePath());
+ final String absolutePath = file.getAbsolutePath();
+ log.debug(" - file = " + absolutePath);
log.debug(" - renderer = " + rendererModel);
- if (PROCESSED_TEMPLATES.containsKey(file.getAbsolutePath())) {
+ RendererModel existedModel = library.accept(new
EmptyVisitor<RendererModel,String>() {
+ @Override
+ public RendererModel visitRender(RendererModel model,String absolutePath) {
+ Template template = model.getTemplate();
+ if(null != template &&
absolutePath.equals(template.getTemplatePath())){
+ return model;
+ } else {
+ return null;
+ }
+ }
+ },absolutePath);
+ if (null != existedModel) {
log.debug(" - Template was already processed.");
return;
}
Template template = parseTemplate(file);
- PROCESSED_TEMPLATES.put(file.getAbsolutePath(), template);
- // TODO rewrite it
- final String defaultTemplate = "src\\main\\templates";
- String path = file.getPath();
- String templateRelativePath = path.substring(path.indexOf(defaultTemplate) +
defaultTemplate.length());
- template.setTemplatePath(templateRelativePath);
+ template.setTemplatePath(absolutePath);
mergeTemplateIntoModel(template, rendererModel);
}
@@ -190,6 +198,8 @@
if (renderer == null) {
renderer = new RendererModel();
+ RenderKitModel renderKit =
library.addRenderKit(compositeInterface.getRenderKitId());
+ renderKit.getRenderers().add(renderer);
}
renderer.setTemplate(template);
setRendererType(template, compositeInterface, renderer);
@@ -197,8 +207,6 @@
setRendererClass(compositeInterface, renderer);
setRendererBaseClass(compositeInterface, renderer);
- RenderKitModel renderKit =
library.addRenderKit(compositeInterface.getRenderKitId());
- renderKit.getRenderers().add(renderer);
Boolean rendersChildren = compositeInterface.getRendersChildren();
if (rendersChildren != null) {
@@ -294,10 +302,6 @@
renderer.setType(new RendererModel.Type(type));
}
- protected Template parseTemplate(String templateLocation) throws CdkException {
- return jaxbBinding.unmarshal(templateLocation,
"http://richfaces.org/cdk/cdk-template.xsd", Template.class);
- }
-
protected Template parseTemplate(File file) throws CdkException {
return jaxbBinding.unmarshal(file,
"http://richfaces.org/cdk/cdk-template.xsd", Template.class);
}
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/ModelBean.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/ModelBean.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/ModelBean.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -166,10 +166,10 @@
ComponentLibrary.merge(this, other);
}
- public void accept(Visitor visitor) {
+ public <R,D> R accept(Visitor<R,D> visitor, D data) {
vizited = true;
- visitor.visit(this);
+ return visitor.visit(this,data);
}
@Override
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java 2010-05-20
19:17:03 UTC (rev 17170)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/xmlconfig/TaglibGeneratorVisitorTest.java 2010-05-20
23:27:53 UTC (rev 17171)
@@ -61,7 +61,7 @@
taglib.setUri("http://foo.bar/a4j");
library.setTaglib(taglib);
TaglibGeneratorVisitor visitor = new TaglibGeneratorVisitor();
- library.accept(visitor);
+ library.accept(visitor,library);
// visitor.generate();
// TODO validate result