Author: alexsmirnov
Date: 2011-01-04 19:46:22 -0500 (Tue, 04 Jan 2011)
New Revision: 20884
Modified:
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
branches/RF-9323/cdk/generator/src/test/java/org/richfaces/cdk/model/validator/ModelValidatorTest.java
branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/pom.xml
branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java
Log:
CODING IN PROGRESS - issue RF-9323: CDK annotation @RendererSpecificComponent.attributes
doesn't work
https://issues.jboss.org/browse/RF-9323
Modified:
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java
===================================================================
---
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java 2011-01-04
17:16:29 UTC (rev 20883)
+++
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java 2011-01-05
00:46:22 UTC (rev 20884)
@@ -36,7 +36,6 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.TypeElement;
-import javax.tools.Diagnostic.Kind;
import org.richfaces.cdk.CdkException;
import org.richfaces.cdk.CdkProcessingException;
Modified:
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java
===================================================================
---
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java 2011-01-04
17:16:29 UTC (rev 20883)
+++
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java 2011-01-05
00:46:22 UTC (rev 20884)
@@ -61,7 +61,6 @@
ComponentLibrary.merge(getFacets(), otherComponent.getFacets());
ComponentLibrary.merge(getEvents(), otherComponent.getEvents());
ComponentLibrary.merge(this, otherComponent);
- this.setGenerate(this.getGenerate() || otherComponent.getGenerate());
}
@Override
Modified:
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java
===================================================================
---
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2011-01-04
17:16:29 UTC (rev 20883)
+++
branches/RF-9323/cdk/generator/src/main/java/org/richfaces/cdk/model/validator/ValidatorImpl.java 2011-01-05
00:46:22 UTC (rev 20884)
@@ -45,6 +45,7 @@
import org.richfaces.cdk.model.ClassName;
import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.ComponentModel;
+import org.richfaces.cdk.model.ConverterModel;
import org.richfaces.cdk.model.DescriptionGroup;
import org.richfaces.cdk.model.EventModel;
import org.richfaces.cdk.model.FacesComponent;
@@ -56,6 +57,7 @@
import org.richfaces.cdk.model.RendererModel;
import org.richfaces.cdk.model.TagModel;
import org.richfaces.cdk.model.Taglib;
+import org.richfaces.cdk.model.ValidatorModel;
import org.richfaces.cdk.util.Strings;
import com.google.common.base.Predicate;
@@ -133,7 +135,78 @@
throw new CallbackException("Cannot infer Java class name for behavior
" + this.behavior);
}
}
+
+ private final class ConverterTypeCallback implements NamingConventionsCallback {
+ private final ConverterModel converter;
+
+ public ConverterTypeCallback(ConverterModel converter) {
+ this.converter = converter;
+ }
+ @Override
+ public FacesId inferType(ClassName targetClass) throws CallbackException {
+ // TODO use actual methods
+ return namingConventions.inferComponentType(targetClass);
+ }
+
+ @Override
+ public FacesId inferType() throws CallbackException {
+ throw new CallbackException("Cannot infer type for converter " +
this.converter);
+ }
+
+ @Override
+ public ClassName inferClass(FacesId id) throws CallbackException {
+ throw new CallbackException("Cannot infer target Java class name for
converter " + this.converter);
+ }
+
+ @Override
+ public ClassName getDefaultBaseClass() throws CallbackException {
+ throw new CallbackException("Cannot infer base Java class name for
converter " + this.converter);
+ }
+
+ @Override
+ public ClassName getDefaultClass() throws CallbackException {
+ return ClassName.get(Object.class);
+ }
+
+ }
+
+ private final class ValidatorTypeCallback implements NamingConventionsCallback {
+
+ private final ValidatorModel validator;
+
+ public ValidatorTypeCallback(ValidatorModel validator) {
+ this.validator = validator;
+ }
+
+ @Override
+ public FacesId inferType(ClassName targetClass) throws CallbackException {
+ // TODO use actual methods
+ return namingConventions.inferComponentType(targetClass);
+ }
+
+ @Override
+ public FacesId inferType() throws CallbackException {
+ throw new CallbackException("Cannot infer type for validator " +
this.validator);
+ }
+
+ @Override
+ public ClassName inferClass(FacesId id) throws CallbackException {
+ throw new CallbackException("Cannot infer target Java class name for
validator " + this.validator);
+ }
+
+ @Override
+ public ClassName getDefaultBaseClass() throws CallbackException {
+ throw new CallbackException("Cannot infer default Java class name for
validator " + this.validator);
+ }
+
+ @Override
+ public ClassName getDefaultClass() throws CallbackException {
+ return ClassName.get(Object.class);
+ }
+
+ }
+
private final class RendererTypeCallback implements NamingConventionsCallback {
private final ComponentLibrary library;
private final RendererModel renderer;
@@ -226,8 +299,23 @@
verifyBehaviors(library);
verifyRenderers(library);
verifyTaglib(library);
+ verifyConverters(library);
+ verifyValidators(library);
}
+ private void verifyValidators(ComponentLibrary library) {
+ for (ValidatorModel validator : library.getValidators()) {
+ verifyTypes(validator, new ValidatorTypeCallback(validator));
+ }
+
+ }
+
+ protected void verifyConverters(ComponentLibrary library) {
+ for (ConverterModel converter : library.getConverters()) {
+ verifyTypes(converter, new ConverterTypeCallback(converter));
+ }
+ }
+
protected void verifyEvents(ComponentLibrary library) {
for (EventModel event : library.getEvents()) {
ClassName listenerInterface = event.getListenerInterface();
@@ -246,7 +334,7 @@
if (null == sourceInterface) {
// TODO - infer source interface.
}
- event.setGenerateSource(!sourceUtils.isClassExists(listenerInterface));
+ event.setGenerateSource(!sourceUtils.isClassExists(sourceInterface));
// Propagate event to corresponding components.
for (ComponentModel component : library.getComponents()) {
for (EventModel componentEvent : component.getEvents()) {
@@ -464,14 +552,14 @@
}
}
// Check classes.
- if (Boolean.TRUE.equals(component.getGenerate())) {
- if (null == component.getBaseClass()) {
- component.setBaseClass(callback.getDefaultBaseClass());
- // return;
- }
+ if (null == component.getGenerate()) {
if (null == component.getTargetClass()) {
component.setTargetClass(callback.inferClass(component.getId()));
}
+
component.setGenerate(!sourceUtilsProvider.get().isClassExists(component.getTargetClass()));
+ }
+ if (component.getGenerate()) {
+ verifyGeneratedClasses(component, callback);
} else if (null == component.getTargetClass()) {
if (null == component.getBaseClass()) {
component.setBaseClass(callback.getDefaultClass());
@@ -485,6 +573,16 @@
return true;
}
+ private void verifyGeneratedClasses(FacesComponent component,
NamingConventionsCallback callback) throws CallbackException {
+ if (null == component.getBaseClass()) {
+ component.setBaseClass(callback.getDefaultBaseClass());
+ // return;
+ }
+ if (null == component.getTargetClass()) {
+ component.setTargetClass(callback.inferClass(component.getId()));
+ }
+ }
+
protected void verifyAttribute(PropertyBase attribute, FacesComponent component) {
// Check name.
if (Strings.isEmpty(attribute.getName())) {
Modified:
branches/RF-9323/cdk/generator/src/test/java/org/richfaces/cdk/model/validator/ModelValidatorTest.java
===================================================================
---
branches/RF-9323/cdk/generator/src/test/java/org/richfaces/cdk/model/validator/ModelValidatorTest.java 2011-01-04
17:16:29 UTC (rev 20883)
+++
branches/RF-9323/cdk/generator/src/test/java/org/richfaces/cdk/model/validator/ModelValidatorTest.java 2011-01-05
00:46:22 UTC (rev 20884)
@@ -87,6 +87,7 @@
component.setTargetClass(className);
expect(namiingConventions.inferComponentType(className)).andReturn(type);
expect(namiingConventions.inferUIComponentFamily(type)).andReturn(FOO_BAZ);
+ expect(utils.isClassExists(className)).andReturn(true);
replay(log, utils, namiingConventions);
// Validator should set component type from base class.
validator.verifyComponentType(component);
Modified: branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/pom.xml
===================================================================
--- branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/pom.xml 2011-01-04
17:16:29 UTC (rev 20883)
+++ branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/pom.xml 2011-01-05
00:46:22 UTC (rev 20884)
@@ -31,6 +31,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
<configuration>
<!--
http://maven.apache.org/plugins/maven-compiler-plugin/ -->
<source>1.6</source>
Modified:
branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java
===================================================================
---
branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java 2011-01-04
17:16:29 UTC (rev 20883)
+++
branches/RF-9323/cdk/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java 2011-01-05
00:46:22 UTC (rev 20884)
@@ -68,8 +68,9 @@
renderer=(a)JsfRenderer(type="org.richfaces.cdk.test.HtmlAbbrRenderer")),
@RendererSpecificComponent(type =
"org.richfaces.cdk.test.TestHtmlDfn",
tag=@Tag(name="dfn"),
- generate="org.richfaces.cdk.test.component.html.HtmlTestDfn",
- attributes="html5.xml")
+ generate="org.richfaces.cdk.test.component.html.HtmlTestDfn"
+ /*,
+ attributes="html5.xml"*/)
}
)
public abstract class AbstractTestComponent extends UIComponentBase /*implements
ValueHolder */{