[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