[richfaces-svn-commits] JBoss Rich Faces SVN: r18607 - in branches/cdk-8570/cdk/generator/src/main: resources/META-INF/templates and 1 other directory.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Thu Aug 12 19:43:13 EDT 2010
Author: alexsmirnov
Date: 2010-08-12 19:43:13 -0400 (Thu, 12 Aug 2010)
New Revision: 18607
Modified:
branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/generate/freemarker/ModelElementBaseTemplateModel.java
branches/cdk-8570/cdk/generator/src/main/resources/META-INF/templates/taghandler.ftl
Log:
complete - task : Optimise generated TagHandler imports
Modified: branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/generate/freemarker/ModelElementBaseTemplateModel.java
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/generate/freemarker/ModelElementBaseTemplateModel.java 2010-08-12 22:55:41 UTC (rev 18606)
+++ branches/cdk-8570/cdk/generator/src/main/java/org/richfaces/cdk/generate/freemarker/ModelElementBaseTemplateModel.java 2010-08-12 23:43:13 UTC (rev 18607)
@@ -32,6 +32,7 @@
import org.richfaces.cdk.model.ConverterModel;
import org.richfaces.cdk.model.EventModel;
import org.richfaces.cdk.model.EventName;
+import org.richfaces.cdk.model.MethodSignature;
import org.richfaces.cdk.model.ModelElementBase;
import org.richfaces.cdk.model.PropertyBase;
import org.richfaces.cdk.model.ValidatorModel;
@@ -110,6 +111,10 @@
return getImportClasses();
} else if ("implemented".equals(key)) {
return getImplementedInterfaces();
+ } else if ("tagImports".equals(key)) {
+ return getTagImports();
+ } else if ("hasBindingAttribute".equals(key)) {
+ return hasBindingAttribute();
}
return super.get(key);
@@ -136,6 +141,36 @@
return this.wrapper.wrap(result);
}
+ public TemplateModel getTagImports() throws TemplateModelException {
+ Set<ClassName> result = Sets.newTreeSet();
+
+ for (PropertyBase entry : model.getAttributes()) {
+ if (!(entry.isHidden()||entry.isReadOnly()||null == entry.getSignature())) {
+ MethodSignature methodSignature = entry.getSignature();
+ if(!isPredefined(methodSignature.getReturnType())){
+ result.add(methodSignature.getReturnType());
+ }
+ for (ClassName className : methodSignature.getParameters()) {
+ if(!isPredefined(className)){
+ result.add(className);
+ }
+
+ }
+ }
+ }
+ return this.wrapper.wrap(result);
+ }
+
+ public TemplateModel hasBindingAttribute() throws TemplateModelException {
+ return wrapper.wrap(Iterables.any(model.getAttributes(), new Predicate<PropertyBase>() {
+
+ @Override
+ public boolean apply(PropertyBase input) {
+ return input.isBindingAttribute();
+ }
+ }));
+ }
+
public TemplateModel getImplementedInterfaces() throws TemplateModelException {
Set<ClassName> result = Sets.newTreeSet();
if(getEventNames().size()>0){
@@ -154,11 +189,11 @@
}
public boolean isPredefined(PropertyBase property) {
- return property.isPrimitive() || isFromJavaLang(property.getType());
+ return isPredefined(property.getType());
}
- public boolean isFromJavaLang(ClassName type) {
- return "java.lang".equals(type.getPackage());
+ public boolean isPredefined(ClassName type) {
+ return type.isPrimitive() ||"java.lang".equals(type.getPackage());
}
private TemplateModel eventNames() throws TemplateModelException {
Modified: branches/cdk-8570/cdk/generator/src/main/resources/META-INF/templates/taghandler.ftl
===================================================================
--- branches/cdk-8570/cdk/generator/src/main/resources/META-INF/templates/taghandler.ftl 2010-08-12 22:55:41 UTC (rev 18606)
+++ branches/cdk-8570/cdk/generator/src/main/resources/META-INF/templates/taghandler.ftl 2010-08-12 23:43:13 UTC (rev 18607)
@@ -3,6 +3,7 @@
package ${tag.targetClass.package};
import java.io.Serializable;
+<#if model.hasBindingAttribute=true>
import javax.el.MethodExpression;
import javax.el.ELException;
import javax.el.MethodExpression;
@@ -15,13 +16,14 @@
import javax.faces.view.facelets.MetaRuleset;
import javax.faces.view.facelets.Metadata;
import javax.faces.view.facelets.MetadataTarget;
+import javax.faces.view.facelets.TagAttribute;
+</#if>
import javax.faces.view.facelets.${model}Config;
-import javax.faces.view.facelets.TagAttribute;
import ${model.targetClass};
import ${tag.baseClass};
-<#assign useMetaRule=false />
-<#list model.tagAttributes as prop><#if prop.signature?exists><#list prop.signature.parameters as class>import ${class.name};
-</#list></#if><#if (prop.binding || prop.bindingAttribute)><#assign useMetaRule=true /></#if></#list>
+<#list model.tagImports as importedClass>import ${importedClass.name};
+</#list>
+
public class ${tag.targetClass.simpleName} extends ${tag.baseClass.simpleName} {
@@ -32,7 +34,7 @@
}
-<#if useMetaRule=true>
+<#if model.hasBindingAttribute=true>
<#assign useMethodBinding=false />
private static final MetaRule META_RULE = new MetaRule(){
More information about the richfaces-svn-commits
mailing list