Author: alexsmirnov
Date: 2009-08-28 03:18:17 -0400 (Fri, 28 Aug 2009)
New Revision: 15386
Added:
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/AbstractGenerateMojo.java
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/RendererClassGenerator.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/StandardOutputs.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/freemarker/ComponentTemplateModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventName.java
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/component.ftl
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/ComponentClassGeneratorTest.java
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java
Log:
Integration test passed
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/RendererClassGenerator.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/RendererClassGenerator.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/builder/templates/RendererClassGenerator.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -38,15 +38,19 @@
import org.richfaces.cdk.model.RenderKit;
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @author asmirnov(a)exadel.com
- *
+ *
*/
public class RendererClassGenerator implements CdkWriter {
private CdkContext context;
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.richfaces.cdk.CdkWriter#init(org.richfaces.cdk.CdkContext)
*/
@Override
@@ -56,8 +60,12 @@
}
- /* (non-Javadoc)
- * @see org.richfaces.cdk.CdkWriter#render(org.richfaces.cdk.model.ComponentLibrary)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.richfaces.cdk.CdkWriter#render(org.richfaces.cdk.model.ComponentLibrary
+ * )
*/
@Override
public void render(ComponentLibrary library) throws CdkException {
@@ -65,22 +73,20 @@
for (Renderer renderer : renderKit.getRenderers()) {
JavaClass javaClass = renderer.getTemplate();
String fullName = javaClass.getFullName();
-
- File outFile = new File(context.getOutputFolder(StandardOutputs.RENDERER_CLASSES),
- fullName.replace('.', '/') + ".java");
-
- if (outFile.exists()) {
- outFile.delete();
- }
- outFile.getParentFile().mkdirs();
-
- try {
- new JavaClassRenderer().render(javaClass, new PrintWriter(outFile));
- } catch (FileNotFoundException e) {
- throw new CdkException(e);
+ File outFile = context.createOutputFile(
+ StandardOutputs.RENDERER_CLASSES, fullName.replace('.',
+ '/')
+ + ".java", library.lastModified());
+ if (null != outFile) {
+ try {
+ new JavaClassRenderer().render(javaClass,
+ new PrintWriter(outFile));
+ } catch (FileNotFoundException e) {
+ throw new CdkException(e);
+ }
+
}
-
}
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/StandardOutputs.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/StandardOutputs.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/StandardOutputs.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -39,7 +39,8 @@
FACES_CONFIG(StandardOutputFolders.RESOURCES),
TAG_LIBRARY(StandardOutputFolders.RESOURCES),
JBDS_RENDERERS(StandardOutputFolders.JAVA_CLASSES),
- XML_SCHEMA(StandardOutputFolders.RESOURCES);
+ XML_SCHEMA(StandardOutputFolders.RESOURCES),
+ COMPONENT_TEST(StandardOutputFolders.TEST_JAVA_CLASSES);
private final OutputType folderType;
/**
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessor.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -269,7 +269,7 @@
// exception ?
continue;
}
- exists = method.getModifiers().contains(Modifier.ABSTRACT);
+ exists = !method.getModifiers().contains(Modifier.ABSTRACT);
// List<? extends TypeParameterElement> typeParameters =
method.getTypeParameters();
} else if (ElementKind.FIELD
.equals(childElement.getKind())) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/ComponentProcessor.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -266,14 +266,14 @@
if (null != generate) {
component.setComponentClass(new ClassDescription(generate.value()));
component.setBaseClass(baseClass);
- component.setGenerate(false);
+ component.setGenerate(true);
} else if (componentElement.getModifiers().contains(Modifier.ABSTRACT)) {
// Final component class will be set by validator.
component.setBaseClass(baseClass);
- component.setGenerate(false);
+ component.setGenerate(true);
} else {
component.setComponentClass(baseClass);
- component.setGenerate(true);
+ component.setGenerate(false);
}
}
@@ -342,7 +342,7 @@
attribute.setSuggestedValue(suggestedValue.value());
}
// Flags.
- attribute.setGenerate(!beanProperty.isExists());
+ attribute.setGenerate(!beanProperty.isExists()||null !=
beanProperty.getAnnotation(Generate.class));
}
// Process XML files with standard attributes definitions.
Attributes attributes = componentElement
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/freemarker/ComponentTemplateModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/freemarker/ComponentTemplateModel.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/freemarker/ComponentTemplateModel.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -23,11 +23,17 @@
package org.richfaces.cdk.freemarker;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
import org.richfaces.cdk.model.Component;
+import org.richfaces.cdk.model.EventName;
import org.richfaces.cdk.model.Property;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
import freemarker.ext.beans.BeanModel;
import freemarker.ext.beans.BeansWrapper;
@@ -35,16 +41,21 @@
import freemarker.template.TemplateModelException;
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @author asmirnov(a)exadel.com
- *
+ *
*/
public class ComponentTemplateModel extends BeanModel implements TemplateModel {
private final Component component;
+ private Set<EventName> eventNames;
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @param object
* @param wrapper
*/
@@ -55,19 +66,54 @@
@Override
public TemplateModel get(String key) throws TemplateModelException {
- if("generatedAttributes".equals(key)){
+ if ("generatedAttributes".equals(key)) {
return generatedAttributes();
+ } else if ("eventNames".equals(key)) {
+ return eventNames();
+ } else if ("defaultEvent".equals(key)) {
+ return defaultEvent();
}
return super.get(key);
}
- private TemplateModel generatedAttributes() throws TemplateModelException {
- return wrapper.wrap(Collections2.filter(component.getAttributes(), new
Predicate<Property>() {
+ private TemplateModel eventNames() throws TemplateModelException {
+ Set<EventName> eventNames = getEventNames();
+ return wrapper.wrap(eventNames);
+ }
+ private TemplateModel defaultEvent() throws TemplateModelException {
+ Set<EventName> names = getEventNames();
+ try{
+ EventName defaultEvent = Iterables.find(names, new Predicate<EventName>() {
+
@Override
- public boolean apply(Property input) {
- return input.isGenerate();
+ public boolean apply(EventName event) {
+ return event.isDefaultEvent();
}
- }));
+ });
+ return wrapper.wrap(defaultEvent);
+ } catch(NoSuchElementException e){
+ return wrapper.wrap(null);
+ }
}
+ private Set<EventName> getEventNames() {
+ if (null == eventNames) {
+ eventNames = Sets.newHashSet();
+ for (Property property : component.getAttributes()) {
+ eventNames.addAll(property.getEventNames());
+ }
+ }
+ return eventNames;
+ }
+
+ private TemplateModel generatedAttributes() throws TemplateModelException {
+ return wrapper.wrap(Collections2.filter(component.getAttributes(),
+ new Predicate<Property>() {
+
+ @Override
+ public boolean apply(Property input) {
+ return input.isGenerate();
+ }
+ }));
+ }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventName.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventName.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/EventName.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -74,6 +74,10 @@
this.defaultEvent = defaultEvent;
}
+ @Override
+ public String toString() {
+ return name;
+ }
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
Modified:
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/component.ftl
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/component.ftl 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/component.ftl 2009-08-28
07:18:17 UTC (rev 15386)
@@ -29,28 +29,51 @@
// Import declarations
import javax.annotation.Generated;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import javax.faces.context.FacesContext;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+
/**
* ${description!}
**/
@Generated({"RicFaces CDK","4.0.0-SNAPSHOT"})
-public class ${componentClass.simpleName} extends ${baseClass} {
+public class ${componentClass.simpleName} extends ${baseClass} <#if (eventNames?size
> 0)>implements ClientBehaviorHolder</#if> {
public static final String COMPONENT_TYPE="${type}";
<#if family?exists>
public static final String COMPONENT_FAMILY="${family}";
+
+ @Override
+ public String getFamily() {
+ return (COMPONENT_FAMILY);
+ }
</#if>
+
+ <#if (eventNames?size > 0)>
+ private static final Collection<String> EVENT_NAMES =
Collections.unmodifiableCollection(
+ <@concat seq=eventNames ; event>"${event.name}"</@concat>
+ );
+ public Collection<String> getEventNames() {
+ return EVENT_NAMES; }
+
+
+ public String getDefaultEventName() {
+ return <#if
defaultEvent?exists>"${defaultEvent.name}"<#else>null</#if>;
+ }
+ </#if>
protected enum Properties {
<@concat seq=generatedAttributes ; attribute>${attribute.name}</@concat>
;
- String toString;
- Properties(String toString) { this.toString = toString; }
- Properties() { }
- public String toString() {
- return ((toString != null) ? toString : super.toString());
- }
}
<#list generatedAttributes as attribute>
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 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/generate/java/ComponentClassGeneratorTest.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -28,6 +28,7 @@
import java.io.StringWriter;
import java.io.Writer;
+import java.util.Set;
import javax.faces.component.UIOutput;
@@ -41,6 +42,7 @@
import org.richfaces.cdk.model.ClassDescription;
import org.richfaces.cdk.model.Component;
import org.richfaces.cdk.model.ComponentLibrary;
+import org.richfaces.cdk.model.EventName;
import org.richfaces.cdk.model.Property;
/**
@@ -50,13 +52,6 @@
*/
public class ComponentClassGeneratorTest extends CdkTestBase {
- /**
- * Test method for {@link
org.richfaces.cdk.generate.java.ComponentClassGenerator#isMyComponent(org.richfaces.cdk.model.Visitable)}.
- */
- @Test
- public void testIsMyComponent() {
- fail("Not yet implemented");
- }
/**
* Test method for {@link
org.richfaces.cdk.generate.java.ComponentClassGenerator#getOutputFile(org.richfaces.cdk.model.Component)}.
@@ -86,10 +81,19 @@
attribute.setGenerate(true);
attribute = component.findOrCreateAttribute("id");
attribute.setType(new ClassDescription(String.class));
+ Set<EventName> eventNames = attribute.getEventNames();
+ EventName event = new EventName();
+ event.setName("id");
+ eventNames.add(event);
+ event = new EventName();
+ event.setName("action");
+ event.setDefaultEvent(true);
+ eventNames.add(event);
attribute.setGenerate(false);
generator.visit(component, library);
System.out.println(output);
verify(mockContext);
+ // TODO - check generated file.
}
private CdkContext createMockContext() {
Modified:
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java
===================================================================
---
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/annotated-component/src/main/java/org/richfaces/cdk/test/component/AbstractTestComponent.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -25,10 +25,11 @@
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.Component;
+import org.richfaces.cdk.annotations.Family;
import org.richfaces.cdk.annotations.Generate;
import java.util.List;
-import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
import javax.faces.component.ValueHolder;
/**
@@ -38,8 +39,8 @@
*/
@Component("org.richfaces.cdk.test.TestComponent")
@Generate("org.richfaces.cdk.test.UITestComponent")
-public abstract class AbstractTestComponent extends UIComponent implements
- ValueHolder {
+(a)Family("org.richfaces.cdk.test.Test")
+public abstract class AbstractTestComponent extends UIComponentBase {
@Attribute
private int foo;
@@ -54,5 +55,5 @@
* Bar Attribute
*/
@Attribute
- public abstract <M> void setBarValue(List<M> bar);
+ public abstract void setBarValue(List<Object> bar);
}
Added:
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/AbstractGenerateMojo.java
===================================================================
---
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/AbstractGenerateMojo.java
(rev 0)
+++
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/AbstractGenerateMojo.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -0,0 +1,220 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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 library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.builder.mojo;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.velocity.VelocityComponent;
+
+/**
+ * @author shura
+ *
+ */
+public abstract class AbstractGenerateMojo extends AbstractMojo {
+
+ /**
+ * Top maven project.
+ *
+ * @parameter expression="${project}"
+ * @readonly
+ */
+ protected MavenProject project;
+ /**
+ *
+ * @parameter
+ */
+ protected String key;
+ /**
+ * Place for component configuration XML files. All '*.xml' files wil be
+ * parsed as components config. All '*.ent' files will be processed as
+ * include configurations.
+ *
+ * @parameter expression="src/main/config/component"
+ */
+ protected File componentConfigDirectory;
+ /**
+ * Place for validator configuration XML files. All '*.xml' files wil be
+ * parsed as component config. All '*.ent' files will be processed as
+ * include configurations.
+ *
+ * @parameter expression="src/main/config/validator"
+ */
+ protected File validatorConfigDirectory;
+
+ /**
+ * Place for converter configuration XML files. All '*.xml' files wil be
+ * parsed as components config. All '*.ent' files will be processed as
+ * include configurations.
+ *
+ * @parameter expression="src/main/config/converter"
+ */
+ protected File converterConfigDirectory;
+
+ /**
+ * Place for faces configuration XML files
+ *
+ * @parameter expression="src/main/config/faces"
+ */
+ protected File facesConfigInclude;
+ /**
+ * Place for component configuration XML files
+ *
+ * @parameter expression="src/main/config/taglib"
+ */
+ protected File taglibInclude;
+ /**
+ * Place for component configuration XML files
+ *
+ * @parameter expression="src/main/config/resources"
+ */
+ protected File resourcesInclude;
+ /**
+ *
+ * @parameter expression="src/main/templates"
+ */
+ protected File templatesDirectory;
+ /**
+ * Directory where the output Java Files will be located.
+ *
+ * @parameter
expression="${project.build.directory}/generated-component/java"
+ */
+ protected File outputJavaDirectory;
+
+ /**
+ * @parameter
expression="${project.build.directory}/generated-component/test"
+ */
+ protected File outputTestsDirectory;
+
+ /**
+ * Directory where the output Java Files will be located.
+ *
+ * @parameter
expression="${project.build.directory}/generated-component/resources"
+ */
+ protected File outputResourcesDirectory;
+
+ /**
+ * @parameter
expression="${project.build.directory}/generated-component/test-resources"
+ */
+ protected File outputTestsResourcesDirectory;
+
+
+ /**
+ * @parameter
+ */
+ protected Library library;
+ /**
+ * The source directories containing the sources to be compiled.
+ *
+ * @parameter expression="${project.compileSourceRoots}"
+ * @required
+ * @readonly
+ */
+ protected List<String> compileSourceRoots;
+ /**
+ * Project classpath.
+ *
+ * @parameter expression="${project.compileClasspathElements}"
+ * @required
+ * @readonly
+ */
+ protected List<String> classpathElements;
+ /**
+ * The directory for compiled classes.
+ *
+ * @parameter expression="${project.build.outputDirectory}"
+ * @required
+ * @readonly
+ */
+ protected File outputDirectory;
+
+
+ protected ClassLoader createProjectClassLoader(MavenProject project, boolean useCCL) {
+ ClassLoader classLoader = Thread.currentThread()
+ .getContextClassLoader();
+ try {
+ URL[] urls = new URL[classpathElements.size() + 1];
+ int i = 0;
+ urls[i++] = outputDirectory.toURI().toURL();
+ for (Iterator<?> iter = classpathElements.iterator(); iter
+ .hasNext();) {
+ String element = (String) iter.next();
+ urls[i++] = new File(element).toURI().toURL();
+ }
+
+ if (useCCL) {
+ classLoader = new URLClassLoader(urls, classLoader);
+ } else {
+ classLoader = new URLClassLoader(urls);
+ }
+ } catch (MalformedURLException e) {
+ getLog().error("Bad URL in classpath", e);
+ }
+
+ return classLoader;
+ }
+
+ protected ClassLoader createProjectClassLoader(MavenProject project) {
+ return createProjectClassLoader(project, true);
+ }
+
+ protected String[] doScan(String[] includes, String[] excludes, File rootFolder)
+ throws MojoExecutionException {
+ try {
+ DirectoryScanner directoryScanner = new DirectoryScanner();
+ directoryScanner.setFollowSymlinks(true);
+ directoryScanner.setBasedir(rootFolder);
+ directoryScanner.setExcludes(excludes);
+ directoryScanner.setIncludes(includes);
+ directoryScanner.addDefaultExcludes();
+
+ directoryScanner.scan();
+
+ return directoryScanner.getIncludedFiles();
+ } catch (IllegalStateException e) {
+ throw new MojoExecutionException(
+ "Error scanning source root: \'" + rootFolder + "\'", e
);
+ }
+ }
+
+}
Property changes on:
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/AbstractGenerateMojo.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
Modified:
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java
===================================================================
---
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java 2009-08-28
00:57:53 UTC (rev 15385)
+++
root/cdk/trunk/plugins/maven-cdk-plugin/src/main/java/org/richfaces/builder/mojo/GenerateMojo.java 2009-08-28
07:18:17 UTC (rev 15386)
@@ -28,6 +28,7 @@
import java.util.HashSet;
import java.util.Set;
+import org.apache.maven.model.Resource;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.richfaces.cdk.CdkContextBase;
@@ -82,6 +83,10 @@
context.setOutputFolder(StandardOutputs.FACES_CONFIG, outputResourcesDirectory);
context.setOutputFolder(StandardOutputs.TAG_LIBRARY, outputResourcesDirectory);
context.setOutputFolder(StandardOutputs.XML_SCHEMA, outputResourcesDirectory);
+ if(!outputTestsDirectory.exists()){
+ outputTestsDirectory.mkdirs();
+ }
+ context.setOutputFolder(StandardOutputs.COMPONENT_TEST, outputTestsDirectory);
// TODO - configure.
context.addWorker(NamingConventions.class, new RichFacesConventions(library
.getPrefix()));
@@ -91,10 +96,16 @@
findTemplateFiles());
context.addSources(StandardSources.FACES_CONFIGS,
findFacesConfigFiles());
+
try {
LibraryBuilder builder = LibraryBuilder.createInstance(context);
ComponentLibrary model = builder.buildModel();
builder.generate(model);
+ project.addCompileSourceRoot(outputJavaDirectory.getAbsolutePath());
+ Resource resource = new Resource();
+ resource.setDirectory(outputResourcesDirectory.getAbsolutePath());
+ project.addResource(resource);
+ project.addTestCompileSourceRoot(outputTestsDirectory.getAbsolutePath());
} catch (CdkException e) {
throw new MojoExecutionException("CDK build error", e);
}