Author: Alex.Kolonitsky
Date: 2010-04-02 09:36:47 -0400 (Fri, 02 Apr 2010)
New Revision: 16707
Modified:
root/cdk/trunk/plugins/generator/pom.xml
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptSourceUtils.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/SourceUtils.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessorImpl.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessorImpl.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/java/taghandler/TagHandlerGeneratorVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerModule.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/model/PropertyBase.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/VisitorFactoryImpl.java
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/processors/ComponentProcessorTest.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/ComponentClassGeneratorTest.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/generate/java/GeneratedTagHandler.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/UIRepeat.java
Log:
RF-7826 "Migrate A1 components to new CDK now"
Modified: root/cdk/trunk/plugins/generator/pom.xml
===================================================================
--- root/cdk/trunk/plugins/generator/pom.xml 2010-04-02 07:02:13 UTC (rev 16706)
+++ root/cdk/trunk/plugins/generator/pom.xml 2010-04-02 13:36:47 UTC (rev 16707)
@@ -31,6 +31,20 @@
<build>
<plugins>
<plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>guice-maven-plugin</artifactId>
+ <!--<configuration>-->
+
<!--<mainClass>mypackage.boot.camel.CamelStartup</mainClass>-->
+ <!--</configuration>-->
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-guice</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0</version>
@@ -107,6 +121,11 @@
</build>
<dependencies>
<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-guice</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
@@ -242,6 +261,11 @@
<artifactId>guice-multibindings</artifactId>
<version>2.0</version>
</dependency>
+<!-- <dependency>
+ <groupId>com.google.inject.extensions</groupId>
+ <artifactId>guice-grapher</artifactId>
+ <version>2.0</version>
+ </dependency>-->
<!-- <dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assisted-inject</artifactId>
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -27,12 +27,16 @@
import com.google.inject.Singleton;
import com.google.inject.multibindings.Multibinder;
import org.richfaces.cdk.LibraryBuilder;
+import org.richfaces.cdk.apt.processors.AttributesProcessor;
+import org.richfaces.cdk.apt.processors.AttributesProcessorImpl;
+import org.richfaces.cdk.apt.processors.BehaviorProcessor;
+import org.richfaces.cdk.apt.processors.CdkAnnotationProcessor;
import org.richfaces.cdk.apt.processors.ComponentProcessor;
+import org.richfaces.cdk.apt.processors.ConverterProcessor;
+import org.richfaces.cdk.apt.processors.DescriptionProcessor;
+import org.richfaces.cdk.apt.processors.DescriptionProcessorImpl;
+import org.richfaces.cdk.apt.processors.RendererProcessor;
import org.richfaces.cdk.apt.processors.ValidatorProcessor;
-import org.richfaces.cdk.apt.processors.RendererProcessor;
-import org.richfaces.cdk.apt.processors.ConverterProcessor;
-import org.richfaces.cdk.apt.processors.BehaviorProcessor;
-import org.richfaces.cdk.apt.processors.CdkAnnotationProcessor;
import javax.annotation.processing.Processor;
@@ -56,6 +60,8 @@
setBinder.addBinding().to(ValidatorProcessor.class);
bind(Processor.class).to(CdkProcessor.class);
+ bind(AttributesProcessor.class).to(AttributesProcessorImpl.class);
+ bind(DescriptionProcessor.class).to(DescriptionProcessorImpl.class);
bind(CompilationTaskFactory.class).to(TaskFactoryImpl.class);
bind(LibraryBuilder.class).to(AptBuilder.class);
bind(SourceUtilsProvider.class).in(Singleton.class);
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptSourceUtils.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptSourceUtils.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptSourceUtils.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -13,6 +13,7 @@
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
+import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.ElementFilter;
@@ -348,6 +349,9 @@
return exists;
}
+ public List<? extends AnnotationMirror> getAnnotationMirrors() {
+ return element.getAnnotationMirrors();
+ }
public <T extends Annotation> T getAnnotation(Class<T>
annotationType) {
return element.getAnnotation(annotationType);
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/SourceUtils.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/SourceUtils.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/SourceUtils.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -26,8 +26,10 @@
import com.google.inject.ProvidedBy;
import org.richfaces.cdk.model.ClassName;
+import javax.lang.model.element.AnnotationMirror;
import java.lang.annotation.Annotation;
import java.util.Set;
+import java.util.List;
/**
* <p class="changed_added_4_0">This class provides utility methods to
analayze java classes. This implementation uses APT API to get
@@ -80,7 +82,9 @@
* @return the exists
*/
public boolean isExists();
-
+
+ public List<? extends AnnotationMirror> getAnnotationMirrors();
+
public <T extends Annotation> T getAnnotation(Class<T>
annotationType);
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessor.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessor.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -23,13 +23,10 @@
package org.richfaces.cdk.apt.processors;
-import java.util.Collection;
+import org.richfaces.cdk.model.BeanModelBase;
import javax.lang.model.element.TypeElement;
-import org.richfaces.cdk.model.BeanModelBase;
-import org.richfaces.cdk.model.PropertyBase;
-
/**
* <p class="changed_added_4_0">
* </p>
@@ -48,7 +45,7 @@
* relative URL to the fragment file.
* @return properties defined by that fragment.
*/
- public void processXmlFragment(BeanModelBase component,String ...attributesConfig);
+ public void processXmlFragment(BeanModelBase component, String ...attributesConfig);
/**
* <p class="changed_added_4_0">
@@ -60,6 +57,6 @@
* @param element
* @return
*/
- public void processType(BeanModelBase component,TypeElement element);
+ public void processType(BeanModelBase component, TypeElement element);
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessorImpl.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessorImpl.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributesProcessorImpl.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -1,33 +1,11 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright , 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.apt.processors;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.inject.Inject;
import com.google.inject.Provider;
-
import org.richfaces.cdk.CdkException;
+import org.richfaces.cdk.Logger;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.Signature;
@@ -41,34 +19,42 @@
import org.richfaces.cdk.xmlconfig.CdkEntityResolver;
import org.richfaces.cdk.xmlconfig.FragmentParser;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.AnnotationValue;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Name;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.MirroredTypeException;
import javax.lang.model.type.MirroredTypesException;
import javax.lang.model.type.TypeMirror;
-
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Set;
-/**
- * @author akolonitsky
- * @since Mar 23, 2010
- */
public class AttributesProcessorImpl implements AttributesProcessor {
private static final String SIGNATURE_NONE_CLASS_NAME =
Signature.NONE.class.getName().replace('$', '.');
+
private static final String STRING_NAME = String.class.getName();
+ @Inject
+ private Logger log;
+
private final DescriptionProcessor descriptionProcessor;
+
private final Provider<SourceUtils> utilsProvider;
+
private final FragmentParser parser;
/**
* <p class="changed_added_4_0"></p>
* @param descriptionProcessor
+ * @param utilsProvider
+ * @param parser
*/
@Inject
- public AttributesProcessorImpl(DescriptionProcessor
descriptionProcessor,Provider<SourceUtils> utilsProvider,FragmentParser parser) {
+ public AttributesProcessorImpl(DescriptionProcessor descriptionProcessor,
Provider<SourceUtils> utilsProvider, FragmentParser parser) {
this.descriptionProcessor = descriptionProcessor;
this.utilsProvider = utilsProvider;
this.parser = parser;
@@ -107,15 +93,28 @@
}
// MethodExpression call signature.
- attribute.setSignature(getSignature(attributeAnnotarion.signature()));
+ AnnotationValue signatureMirror = null;
+ List<? extends AnnotationMirror> mirrors =
beanProperty.getAnnotationMirrors();
+ for (AnnotationMirror mirror : mirrors) {
+ if
(Attribute.class.getName().equals(mirror.getAnnotationType().toString())) {
+ for (Map.Entry<? extends ExecutableElement, ? extends
AnnotationValue> entry : mirror.getElementValues().entrySet()) {
+ Name simpleName = entry.getKey().getSimpleName();
+ if ("signature".equals(simpleName.toString())) {
+ signatureMirror = entry.getValue();
+ }
+ }
+ }
+ }
+ attribute.setSignature(getSignature(attributeAnnotarion.signature(),
signatureMirror));
+
for (EventName event : attributeAnnotarion.events()) {
setBehaviorEvent(attribute, event);
}
}
}
- private List<ClassName> getSignature(Signature signature) {
+ private List<ClassName> getSignature(Signature signature, AnnotationValue
signatureMirror) {
if (signature == null) {
return null;
}
@@ -129,27 +128,64 @@
}
if (signature != null && SIGNATURE_NONE_CLASS_NAME.equals(returnType)) {
- List<ClassName> parameters = Lists.newArrayList();
+ return getSignatureParams(signature, signatureMirror);
+ // signature parameters always should be replaced.
+ // TODO - set method return type.
- try {
- for (Class<?> parameterType : signature.parameters()) {
- parameters.add(new ClassName(parameterType.getName()));
+ }
+
+ return null;
+ }
+
+ private List<ClassName> getSignatureParams(Signature signature, AnnotationValue
signatureMirror) {
+ List<ClassName> parameters = Lists.newArrayList();
+
+ try {
+ for (Class<?> parameterType : signature.parameters()) {
+ parameters.add(new ClassName(parameterType.getName()));
+ }
+ } catch (MirroredTypeException e) {
+ AnnotationValue params = signatureMirror.accept(new
EmptyAnnotationValueVisitor<AnnotationValue>() {
+ @Override
+ public AnnotationValue visitAnnotation(AnnotationMirror a, Object o) {
+ log.debug("-14- AttributeProcessor.visit(" + a + ",
" + o + ")");
+ for (Map.Entry<? extends ExecutableElement, ? extends
AnnotationValue> entry : a.getElementValues().entrySet()) {
+ if
("parameters".equals(entry.getKey().getSimpleName().toString())) {
+ return entry.getValue();
+ }
+ }
+ return null;
}
- } catch (MirroredTypeException e) {
- TypeMirror parameterType = e.getTypeMirror();
- parameters.add(new ClassName(parameterType.toString()));
- } catch (MirroredTypesException e) {
- for (TypeMirror parameterType : e.getTypeMirrors()) {
- parameters.add(new ClassName(parameterType.toString()));
+ }, null);
+
+ List<? extends AnnotationValue> o = params.accept(new
EmptyAnnotationValueVisitor<List<? extends AnnotationValue>>(){
+ @Override
+ public List<? extends AnnotationValue> visitArray(List<? extends
AnnotationValue> vals, Object o) {
+ log.debug("-15- AttributeProcessor.visit(" + vals + ",
" + o + ")");
+ return vals;
}
+ }, null);
+
+ for (AnnotationValue annotationValue : o) {
+ parameters.add(annotationValue.accept(new
EmptyAnnotationValueVisitor<ClassName>() {
+ @Override
+ public ClassName visitType(TypeMirror t, Object o) {
+ log.debug("-12- AttributeProcessor.visit(" + t +
", " + o + ")");
+ return new ClassName(t.toString());
+ }
+ }, null));
}
-
- return parameters;
- // signature parameters always should be replaced.
- // TODO - set method return type.
+// TypeMirror parameterType = e.getTypeMirror();
+// parameters.add(new ClassName(parameterType.toString()));
+ } catch (MirroredTypesException e) {
+ for (TypeMirror parameterType : e.getTypeMirrors()) {
+ parameters.add(new ClassName(parameterType.toString()));
+ }
}
- return null;
+ return parameters;
+ // signature parameters always should be replaced.
+ // TODO - set method return type.
}
private void setBehaviorEvent(PropertyBase attribute, EventName eventName) {
@@ -163,7 +199,7 @@
}
@Override
- public void processType(final BeanModelBase component,TypeElement element) throws
CdkException {
+ public void processType(final BeanModelBase component, TypeElement element) throws
CdkException {
// Process XML files with standard attributes definitions.
SourceUtils sourceUtils = getSourceUtils();
@@ -202,7 +238,7 @@
@Override
- public void processXmlFragment(BeanModelBase component,String ...attributesConfig) {
+ public void processXmlFragment(BeanModelBase component, String ...attributesConfig)
{
// Process all files from @Jsf.. attributes property.
for (String attributes : attributesConfig) {
try {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessor.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessor.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -39,12 +39,12 @@
* @param description
* @param docComment JavaDoc comment associated with described element.
*/
- public void processDescription(DescriptionGroup model,Description description,String
docComment);
+ public void processDescription(DescriptionGroup model, Description description,
String docComment);
/**
* <p class="changed_added_4_0">process {@link Description}
annotation and set information from it into model.</p>
* @param model
* @param description
*/
- public void processDescription(DescriptionGroup model,Description description);
+ public void processDescription(DescriptionGroup model, Description description);
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessorImpl.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessorImpl.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/DescriptionProcessorImpl.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -33,18 +33,12 @@
*/
public class DescriptionProcessorImpl implements DescriptionProcessor {
- /* (non-Javadoc)
- * @see
org.richfaces.cdk.apt.processors.DescriptionProcessor#processDescription(org.richfaces.cdk.model.DescriptionGroup,
org.richfaces.cdk.annotations.Description, java.lang.String)
- */
@Override
public void processDescription(DescriptionGroup model, Description description,
String docComment) {
// TODO Auto-generated method stub
}
- /* (non-Javadoc)
- * @see
org.richfaces.cdk.apt.processors.DescriptionProcessor#processDescription(org.richfaces.cdk.model.DescriptionGroup,
org.richfaces.cdk.annotations.Description)
- */
@Override
public void processDescription(DescriptionGroup model, Description description) {
// TODO Auto-generated method stub
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-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -1,29 +1,39 @@
package org.richfaces.cdk.apt.processors;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.TypeElement;
-
+import com.google.inject.Inject;
+import com.google.inject.Provider;
import org.richfaces.cdk.annotations.Description;
import org.richfaces.cdk.annotations.Tag;
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 com.google.inject.Inject;
-import com.google.inject.Provider;
+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;
public abstract class ProcessorBase {
@Inject
private Provider<SourceUtils> sourceUtils;
-
@Inject
private AttributesProcessor attributeProcessor;
+ @Inject
+ private NamingConventions namingConventions;
+
public SourceUtils getSourceUtils() {
return this.sourceUtils.get();
}
@@ -32,17 +42,43 @@
TagModel tagModel = new TagModel();
String name = tag.name();
- if (!Strings.isEmpty(name)) {
- tagModel.setName(name);
+ if (Strings.isEmpty(name)) {
+ name = getNamingConventions().inferTagName(model.getId());
}
+ tagModel.setName(name);
+ tagModel.setType(tag.type());
tagModel.setTargetClass(ClassName.parseName(tag.handler()));
- tagModel.setType(tag.type());
- tagModel.setBaseClass(ClassName.parseName(tag.baseClass()));
+ tagModel.setBaseClass(ClassName.parseName(getBaseClass(tag, model)));
+ 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 ComponentHandler.class.getName();
+
+ } else if (model instanceof ValidatorModel) {
+ return ValidatorHandler.class.getName();
+
+ } else if (model instanceof ConverterModel) {
+ return ConverterHandler.class.getName();
+
+ } else if (model instanceof BehaviorModel) {
+ return BehaviorHandler.class.getName();
+
+ } else {
+ throw new IllegalStateException("Unknown model class.");
+ }
+ }
+
protected void setIcon(DescriptionGroup component, Description icon) {
if (null != icon && (!Strings.isEmpty(icon.smallIcon()) ||
!Strings.isEmpty(icon.largeIcon()))) {
DescriptionGroup.Icon iconValue = new DescriptionGroup.Icon();
@@ -104,4 +140,11 @@
return this.attributeProcessor;
}
+ public NamingConventions getNamingConventions() {
+ return namingConventions;
+ }
+
+ public void setNamingConventions(NamingConventions namingConventions) {
+ this.namingConventions = namingConventions;
+ }
}
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-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerGeneratorVisitor.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -22,9 +22,15 @@
package org.richfaces.cdk.generate.java.taghandler;
-import org.richfaces.cdk.model.*;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import org.richfaces.cdk.model.BehaviorModel;
+import org.richfaces.cdk.model.ComponentModel;
+import org.richfaces.cdk.model.ConverterModel;
+import org.richfaces.cdk.model.EmptyVisitor;
+import org.richfaces.cdk.model.ModelElementBase;
+import org.richfaces.cdk.model.TagModel;
+import org.richfaces.cdk.model.ValidatorModel;
/**
* @author akolonitsky
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerModule.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerModule.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerModule.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -23,8 +23,6 @@
package org.richfaces.cdk.generate.java.taghandler;
import com.google.inject.AbstractModule;
-import com.google.inject.multibindings.Multibinder;
-import org.richfaces.cdk.CdkWriter;
/**
* @author akolonitsky
@@ -34,7 +32,9 @@
@Override
protected void configure() {
+/*
Multibinder.newSetBinder(binder(), CdkWriter.class)
.addBinding().to(TagHandlerWriter.class);
+*/
}
}
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-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/java/taghandler/TagHandlerWriter.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -24,7 +24,11 @@
import com.google.inject.Inject;
import com.google.inject.Injector;
-import org.richfaces.cdk.*;
+import org.richfaces.cdk.CdkException;
+import org.richfaces.cdk.CdkWriter;
+import org.richfaces.cdk.FileManager;
+import org.richfaces.cdk.Output;
+import org.richfaces.cdk.Outputs;
import org.richfaces.cdk.model.ComponentLibrary;
/**
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-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -178,6 +178,9 @@
}
private Element createTag(String tagName) {
+ if (tagName == null) {
+ System.out.println("tagName == null");
+ }
Element tag = faceletTaglib.addElement("tag");
tag.addElement("tag-name").addText(tagName);
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-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/PropertyBase.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -334,5 +334,8 @@
this.binding = binding;
}
-
+ @Override
+ public String toString() {
+ return "Property {name: " + getName() + ", type: " +
getType().getName() + "}";
+ }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/VisitorFactoryImpl.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/VisitorFactoryImpl.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/VisitorFactoryImpl.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -60,8 +60,8 @@
* @see
org.richfaces.cdk.templatecompiler.TemplateVisitorFactory#createVisitor(org.richfaces.cdk.templatecompiler.model.CompositeInterface)
*/
@Override
- public RendererClassVisitor createVisitor(CompositeInterface
composite,Collection<PropertyBase> attributes) {
- return new RendererClassVisitor(composite, attributes,classLoader, jaxbBinding,
log);
+ public RendererClassVisitor createVisitor(CompositeInterface composite,
Collection<PropertyBase> attributes) {
+ return new RendererClassVisitor(composite, attributes, classLoader, jaxbBinding,
log);
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/taghandler.ftl 2010-04-02
13:36:47 UTC (rev 16707)
@@ -5,10 +5,12 @@
import javax.faces.view.facelets.*;
import org.richfaces.MethodMetadata;
import ${model.targetClass};
+<#list generatedAttributes as prop><#if (!prop.signature.empty)><#list
prop.signature as class>import ${class.name};
+</#list></#if></#list>
public class ${targetClass.simpleName} extends ${baseClass.simpleName} {
- private static final ${targetClass.simpleName}MetaRule metaRule = new
${targetClass.simpleName}MetaRule();
+ private static final ${targetClass.simpleName}MetaRule META_RULE = new
${targetClass.simpleName}MetaRule();
public ${targetClass.simpleName}(${objectType}Config config) {
@@ -17,7 +19,7 @@
protected MetaRuleset createMetaRuleset(Class type) {
MetaRuleset m = super.createMetaRuleset(type);
- m.addRule(metaRule);
+ m.addRule(META_RULE);
return m;
}
@@ -27,7 +29,7 @@
if (meta.isTargetInstanceOf(${model.targetClass.simpleName}.class)) {
<#list generatedAttributes as prop>
if ("${prop.name}".equals(name)) {
- return new MethodMetadata(attribute) {
+ return new MethodMetadata(attribute<#if
(!prop.signature.empty)><#list prop.signature as class>,
${class.simpleName}.class</#list></#if>) {
public void applyMetadata(FaceletContext ctx, Object instance) {
((${model.targetClass.simpleName})
instance).${prop.setterName}(<#if
(prop.isBinging)>getMethodBinding(ctx));<#else>getMethodExpression(ctx));</#if>
}
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/processors/ComponentProcessorTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/processors/ComponentProcessorTest.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/processors/ComponentProcessorTest.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -84,6 +84,9 @@
@Inject
private ComponentProcessor processor;
+ @Mock
+ private AttributesProcessor attributesProcessor;
+
@Inject
private ComponentLibrary library;
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/ComponentClassGeneratorTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/ComponentClassGeneratorTest.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/ComponentClassGeneratorTest.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -43,6 +43,7 @@
import javax.faces.el.MethodBinding;
import java.io.StringWriter;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Set;
/**
@@ -107,6 +108,7 @@
attribute.setType(new ClassName(MethodExpression.class));
attribute.setGenerate(true);
attribute.setBindingAttribute(true);
+ attribute.setSignature(Arrays.asList(new ClassName(String.class), new
ClassName(Integer.class)));
attribute = component.getOrCreateAttribute("id");
attribute.setType(new ClassName(String.class));
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-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/TagHandlerClassGeneratorTest.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -31,6 +31,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.richfaces.cdk.CdkTestRunner;
+import org.richfaces.cdk.Logger;
import org.richfaces.cdk.generate.java.taghandler.TagHandlerClassGenerator;
import org.richfaces.cdk.model.ClassName;
import org.richfaces.cdk.model.ComponentModel;
@@ -47,6 +48,9 @@
public class TagHandlerClassGeneratorTest extends AbstractClassGeneratorTest {
@Inject
+ private Logger log;
+
+ @Inject
private TagHandlerClassGenerator generator;
@Test
@@ -67,7 +71,7 @@
generator.process(tagModel);
-// System.out.println(outputWriter);
+ log.debug(outputWriter.toString());
verify(output);
compare(outputWriter, "GeneratedTagHandler.java");
Modified:
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/generate/java/GeneratedTagHandler.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/generate/java/GeneratedTagHandler.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/cdk/trunk/plugins/generator/src/test/resources/org/richfaces/cdk/generate/java/GeneratedTagHandler.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -24,10 +24,12 @@
import javax.faces.view.facelets.*;
import org.richfaces.MethodMetadata;
import org.richfaces.cdk.generate.java.GeneratedComponent;
+import java.lang.String;
+import java.lang.Integer;
public class GeneratedTagHandler extends ComponentHandler {
- private static final GeneratedTagHandlerMetaRule metaRule = new
GeneratedTagHandlerMetaRule();
+ private static final GeneratedTagHandlerMetaRule META_RULE = new
GeneratedTagHandlerMetaRule();
public GeneratedTagHandler(ComponentConfig config) {
@@ -36,7 +38,7 @@
protected MetaRuleset createMetaRuleset(Class type) {
MetaRuleset m = super.createMetaRuleset(type);
- m.addRule(metaRule);
+ m.addRule(META_RULE);
return m;
}
@@ -53,7 +55,7 @@
}
if ("testExpr".equals(name)) {
- return new MethodMetadata(attribute) {
+ return new MethodMetadata(attribute, String.class, Integer.class) {
public void applyMetadata(FaceletContext ctx, Object instance) {
((GeneratedComponent)
instance).setTestExpr(getMethodExpression(ctx));
}
@@ -64,4 +66,4 @@
return null;
}
}
-}
+}
\ No newline at end of file
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -39,15 +39,15 @@
import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
import javax.faces.el.MethodBinding;
+import java.util.Date;
import java.io.OutputStream;
-import java.util.Date;
/**
* @author shura
*
*/
@JsfComponent(
- tag = @Tag(handler =
"org.richfaces.taglib.html.facelets.MediaOutputHandler")
+ tag = @Tag(generate = true, handler =
"org.richfaces.taglib.html.facelets.MediaOutputHandler")
)
public abstract class AbstractMediaOutput extends UIOutput implements ResourceComponent2
{
@@ -86,9 +86,7 @@
*
* @return MethodBinding to createContent
*/
- @Attribute(
- generate = false,
- signature = @Signature(parameters = {OutputStream.class, Object.class}))
+ @Attribute(signature = @Signature(parameters = {OutputStream.class, Object.class}))
public MethodBinding getCreateContent() {
MethodBinding result = null;
MethodExpression me = getCreateContentExpression();
@@ -162,6 +160,13 @@
public abstract void setCoords(String coords);
+ /**
+ * TODO original implemenattion
+ *
+ * public MethodExpression getCreateContentExpression() {
+ * return (MethodExpression)
getStateHelper().get(PropertyKeys.createContentExpression);
+ * }
+ * */
public abstract MethodExpression getCreateContentExpression();
public abstract String getDeclare();
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -45,7 +45,7 @@
*
*/
@JsfComponent(
- tag = @Tag(handler =
"org.richfaces.taglib.html.facelets.AjaxPushHandler")
+ tag = @Tag(generate = true, handler =
"org.richfaces.taglib.html.facelets.AjaxPushHandler")
)
public abstract class AbstractPush extends UICommand {
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/UIRepeat.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/UIRepeat.java 2010-04-02
07:02:13 UTC (rev 16706)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/UIRepeat.java 2010-04-02
13:36:47 UTC (rev 16707)
@@ -28,7 +28,7 @@
* @author Nick Belaevski
*
*/
-(a)JsfComponent(type=UIRepeat.COMPONENT_TYPE, generate = "", tag = @Tag(name =
"repeat"))
+@JsfComponent(generate = "", tag = @Tag(name = "repeat"))
public class UIRepeat extends UISequence {
public static final String COMPONENT_TYPE = "org.richfaces.Repeat";