Author: alexsmirnov
Date: 2009-07-28 20:53:17 -0400 (Tue, 28 Jul 2009)
New Revision: 15027
Added:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCdkContext.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/CdkContext.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/VirtualFileManagerTest.java
root/cdk/trunk/plugins/generator/src/test/resources/source.properties
Removed:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCompilationContext.java
Modified:
root/cdk/trunk/plugins/generator/pom.xml
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/LibraryBuilder.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptException.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkCompiler.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/VirtualFileManager.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/ProcessorTest.java
Log:
create and test annotation processing classes.
Modified: root/cdk/trunk/plugins/generator/pom.xml
===================================================================
--- root/cdk/trunk/plugins/generator/pom.xml 2009-07-28 14:52:49 UTC (rev 15026)
+++ root/cdk/trunk/plugins/generator/pom.xml 2009-07-29 00:53:17 UTC (rev 15027)
@@ -87,5 +87,11 @@
<artifactId>dtdparser</artifactId>
<version>1.21</version>
</dependency>
+
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>2.5.1</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Copied:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCdkContext.java
(from rev 15026,
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCompilationContext.java)
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCdkContext.java
(rev 0)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCdkContext.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -0,0 +1,129 @@
+/*
+ * $Id$
+ *
+ * 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.cdk;
+
+import java.io.File;
+
+import org.richfaces.cdk.model.ComponentLibrary;
+
+/**
+ * <p class="changed_added_4_0">Base CDK context class. Particular build
tool ( Ant, Maven ) should extend that class with
+ * tool-specific methods.</p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public class AbstractCdkContext implements CdkContext {
+
+ private final ClassLoader loader;
+
+ private File javaSource;
+
+ private File javaSourceOutput;
+
+ private File resourceOutput;
+
+ private ComponentLibrary library;
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the javaSource
+ */
+ @Override
+ public File getJavaSource() {
+ return javaSource;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param javaSource the javaSource to set
+ */
+ public void setJavaSource(File javaSource) {
+ this.javaSource = javaSource;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the javaSourceOutput
+ */
+ @Override
+ public File getJavaSourceOutput() {
+ return javaSourceOutput;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param javaSourceOutput the javaSourceOutput to set
+ */
+ public void setJavaSourceOutput(File javaSourceOutput) {
+ this.javaSourceOutput = javaSourceOutput;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the resourceOutput
+ */
+ @Override
+ public File getResourceOutput() {
+ return resourceOutput;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param resourceOutput the resourceOutput to set
+ */
+ public void setResourceOutput(File resourceOutput) {
+ this.resourceOutput = resourceOutput;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the library
+ */
+ @Override
+ public ComponentLibrary getLibrary() {
+ return library;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param library the library to set
+ */
+ @Override
+ public void setLibrary(ComponentLibrary library) {
+ this.library = library;
+ }
+
+ public AbstractCdkContext(ClassLoader loader) {
+ this.loader = loader;
+ // TODO Auto-generated constructor stub
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.CdkContext#getLoader()
+ */
+ public ClassLoader getLoader() {
+ return loader;
+ }
+
+}
Property changes on:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCdkContext.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCompilationContext.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCompilationContext.java 2009-07-28
14:52:49 UTC (rev 15026)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/AbstractCompilationContext.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -1,37 +0,0 @@
-/*
- * $Id$
- *
- * 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.cdk;
-
-/**
- * <p class="changed_added_4_0"></p>
- * @author asmirnov(a)exadel.com
- *
- */
-public class AbstractCompilationContext {
-
- public AbstractCompilationContext(ClassLoader loader) {
- // TODO Auto-generated constructor stub
- }
-
-}
Added: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/CdkContext.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/CdkContext.java
(rev 0)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/CdkContext.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -0,0 +1,30 @@
+package org.richfaces.cdk;
+
+import java.io.File;
+
+import org.richfaces.cdk.model.ComponentLibrary;
+
+/**
+ * <p class="changed_added_4_0">That interface defines context for all
CDK operations</p>
+ * @author asmirnov(a)exadel.com
+ *
+ */
+public interface CdkContext {
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the loader
+ */
+ public ClassLoader getLoader();
+
+ public abstract void setLibrary(ComponentLibrary library);
+
+ public abstract ComponentLibrary getLibrary();
+
+ public abstract File getResourceOutput();
+
+ public abstract File getJavaSourceOutput();
+
+ public abstract File getJavaSource();
+
+}
\ No newline at end of file
Property changes on:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/CdkContext.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/LibraryBuilder.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/LibraryBuilder.java 2009-07-28
14:52:49 UTC (rev 15026)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/LibraryBuilder.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -23,11 +23,49 @@
package org.richfaces.cdk;
+import java.io.File;
+
+import org.richfaces.cdk.apt.CdkCompiler;
+import org.richfaces.cdk.apt.CdkProcessor;
+import org.richfaces.cdk.model.ComponentLibrary;
+
/**
* <p class="changed_added_4_0">That class builds JSF library model from
different sources</p>
* @author asmirnov(a)exadel.com
*
*/
public class LibraryBuilder {
+
+ public static LibraryBuilder createInstance() {
+ return new LibraryBuilder();
+ }
+
+ /**
+ * <p class="changed_added_4_0">Parse source files for annotations and
populate CDK-related information into model.</p>
+ * @param context
+ * @param sources
+ * @throws CdkException
+ */
+ public void buildModelFromAnnotations(CdkContext context,Iterable<File> sources)
throws CdkException {
+ CdkCompiler compiler = CdkCompiler.create(context);
+ ComponentLibrary componentLibrary = context.getLibrary();
+ if (null == componentLibrary) {
+ componentLibrary = createLibrary();
+ context.setLibrary(componentLibrary);
+ }
+ compiler.process(sources, new CdkProcessor());
+ }
+ public void buildModelFromFacesConfig(CdkContext context,Iterable<File> configs)
throws CdkException {
+
+ }
+
+
+ /**
+ * <p class="changed_added_4_0">Builder method that creates new library
instance.</p>
+ * @return
+ */
+ protected ComponentLibrary createLibrary(){
+ return new ComponentLibrary();
+ }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptException.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptException.java 2009-07-28
14:52:49 UTC (rev 15026)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/AptException.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -23,12 +23,14 @@
package org.richfaces.cdk.apt;
+import org.richfaces.cdk.CdkException;
+
/**
* <p class="changed_added_4_0"></p>
* @author asmirnov(a)exadel.com
*
*/
-public class AptException extends Exception {
+public class AptException extends CdkException {
/**
* <p class="changed_added_4_0"></p>
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkCompiler.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkCompiler.java 2009-07-28
14:52:49 UTC (rev 15026)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/CdkCompiler.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -24,68 +24,139 @@
package org.richfaces.cdk.apt;
import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import javax.annotation.processing.Processor;
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticListener;
import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
+import javax.tools.JavaCompiler.CompilationTask;
+import org.richfaces.cdk.CdkContext;
+import org.richfaces.cdk.Logger;
+import org.richfaces.cdk.LoggerFactory;
+
/**
- * <p class="changed_added_4_0">That class compiles files from sources
and process annotations</p>
+ * <p class="changed_added_4_0">
+ * That class compiles files from sources and process annotations
+ * </p>
+ *
* @author asmirnov(a)exadel.com
- *
+ *
*/
public class CdkCompiler {
- private File outputDirectory;
-
+ private static final Logger log = LoggerFactory.getLogger();
+
+ private VirtualFileManager fileManager;
+
private Iterable<String> options;
-
- private final JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
-
- public void process(Iterable<File> sources) throws AptException {
- ;
- }
+ private JavaCompiler javaCompiler;
-
/**
- * <p class="changed_added_4_0"></p>
- * @return the outputDirectory
+ * <p class="changed_added_4_0">Builder method that creates and
initializes compiler instance.
+ * That instance can be reused for consecuence processing.</p>
+ * @param context
+ * @return
*/
- public File getOutputDirectory() {
- return outputDirectory;
+ public static CdkCompiler create(CdkContext context) {
+ CdkCompiler compiler = new CdkCompiler();
+ JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
+ compiler.setJavaCompiler(javaCompiler);
+ StandardJavaFileManager stdFileManager = javaCompiler
+ .getStandardFileManager(null, null, null);
+ VirtualFileManager fileManager = new VirtualFileManager(stdFileManager,
+ context.getLoader());
+ fileManager.setJavaSourceDirectory(context.getJavaSource());
+ compiler.setFileManager(fileManager);
+ ArrayList<String> options = new ArrayList<String>();
+ options.add("-proc:only");
+ options.add("-implicit:none");
+ options.add("-verbose");
+ compiler.setOptions(options);
+ return compiler;
}
-
/**
- * <p class="changed_added_4_0"></p>
- * @param outputDirectory the outputDirectory to set
+ * <p class="changed_added_4_0">That method process source files and
call appropriate annotation processors</p>
+ * @param sources
+ * @param processors
+ * @throws AptException
*/
- public void setOutputDirectory(File outputDirectory) {
- this.outputDirectory = outputDirectory;
+ public void process(Iterable<File> sources, Processor...processors) throws
AptException {
+ DiagnosticListener<JavaFileObject> listener = new
DiagnosticListener<JavaFileObject>() {
+
+ @Override
+ public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+ log.debug("LOG: " + diagnostic.getMessage(null));
+ }
+
+ };
+ ArrayList<VirtualJavaFileObject> sourceObjects = new
ArrayList<VirtualJavaFileObject>();
+ for (File file : sources) {
+ VirtualJavaFileObject sourceObject = new VirtualJavaFileObject(file);
+ sourceObjects.add(sourceObject);
+ }
+ CompilationTask task = getJavaCompiler().getTask(null, getFileManager(), listener,
getOptions(), null, sourceObjects);
+ task.setProcessors(Arrays.asList(processors));
}
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @return the options
*/
public Iterable<String> getOptions() {
return options;
}
-
/**
- * <p class="changed_added_4_0"></p>
- * @param options the options to set
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param options
+ * the options to set
*/
public void setOptions(Iterable<String> options) {
this.options = options;
}
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the fileManager
+ */
+ protected VirtualFileManager getFileManager() {
+ return fileManager;
+ }
/**
* <p class="changed_added_4_0"></p>
+ * @param fileManager the fileManager to set
+ */
+ protected void setFileManager(VirtualFileManager fileManager) {
+ this.fileManager = fileManager;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param javaCompiler the javaCompiler to set
+ */
+ protected void setJavaCompiler(JavaCompiler javaCompiler) {
+ this.javaCompiler = javaCompiler;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @return the javaCompiler
*/
public JavaCompiler getJavaCompiler() {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/VirtualFileManager.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/VirtualFileManager.java 2009-07-28
14:52:49 UTC (rev 15026)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/VirtualFileManager.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -34,6 +34,7 @@
import javax.tools.FileObject;
import javax.tools.ForwardingJavaFileManager;
+import javax.tools.JavaFileManager;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.StandardLocation;
@@ -50,7 +51,7 @@
*
*/
final class VirtualFileManager extends
- ForwardingJavaFileManager<StandardJavaFileManager> {
+ ForwardingJavaFileManager<JavaFileManager> {
private static final Logger log = LoggerFactory.getLogger();
@@ -67,7 +68,7 @@
*
* @param fileManager
*/
- public VirtualFileManager(StandardJavaFileManager fileManager,
+ public VirtualFileManager(JavaFileManager fileManager,
ClassLoader classPathLoader) {
super(fileManager);
this.classPathLoader = classPathLoader;
@@ -108,12 +109,14 @@
return null;
}
} else if (StandardLocation.SOURCE_PATH.equals(location)) {
- String fileName = className.replace('.', '/');
- for (JavaFileObject source : getSources()) {
- if (source.isNameCompatible(fileName, kind)) {
- return source;
+ String fileName = className.replace('.', File.separatorChar)+ kind.extension;
+ if(null != javaSourceDirectory){
+ File resource = new File(javaSourceDirectory, fileName);
+ if(resource.exists()){
+ return new VirtualJavaFileObject(resource, kind);
}
}
+ return null;
}
return super.getJavaFileForInput(location, className, kind);
}
@@ -222,6 +225,28 @@
if(log.isDebugEnabled()){
log.debug("VirtualFileManager.getFileForInput("+String.valueOf(location)+","+packageName+","+relativeName+")");
}
+ if (StandardLocation.CLASS_PATH.equals(location)) {
+ String fileName = packageName.replace('.', '/') +
'/'+relativeName;
+ URL resource = getClassPathLoader().getResource(fileName);
+ if (null != resource) {
+ try {
+ return new VirtualJavaFileObject(resource, Kind.OTHER);
+ } catch (URISyntaxException e) {
+ // ignore
+ }
+
+ }
+ return null;
+ } else if (StandardLocation.SOURCE_PATH.equals(location)) {
+ String fileName = packageName.replace('.',
File.separatorChar)+File.separator+relativeName;
+ if(null != javaSourceDirectory){
+ File resource = new File(javaSourceDirectory, fileName);
+ if(resource.exists()){
+ return new VirtualJavaFileObject(resource, Kind.OTHER);
+ }
+ }
+ return null;
+ }
return super.getFileForInput(location, packageName, relativeName);
}
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/ProcessorTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/ProcessorTest.java 2009-07-28
14:52:49 UTC (rev 15026)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/ProcessorTest.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -23,6 +23,10 @@
package org.richfaces.cdk.apt;
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.*;
+
import java.io.File;
import java.io.FileInputStream;
import java.net.URI;
@@ -53,9 +57,11 @@
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.JavaFileObject.Kind;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
import org.richfaces.cdk.LoggerFactory;
-import junit.framework.TestCase;
/**
* <p class="changed_added_4_0"></p>
@@ -63,7 +69,7 @@
* @author asmirnov(a)exadel.com
*
*/
-public class ProcessorTest extends TestCase {
+public class ProcessorTest {
private static final String INTERFACE_JAVA =
"org/richfaces/cdk/apt/TestInterface.java";
private static final String SUB_CLASS_JAVA =
"org/richfaces/cdk/apt/TestSubClass.java";
@@ -72,24 +78,18 @@
Arrays.asList(TestAnnotation.class.getName(), TestAnnotation2.class
.getName(), TestMethodAnnotation.class.getName(),
TestInterfaceAnnotation.class.getName()));
+
+ private File javaSourceDirectory;
- /*
- * (non-Javadoc)
- *
- * @see junit.framework.TestCase#setUp()
- */
- protected void setUp() throws Exception {
- super.setUp();
- Logger.getLogger(LoggerFactory.CDK_LOG).setLevel(Level.ALL);
+ @Before
+ public void setUp() throws Exception{
+ URL url = this.getClass().getResource("source.properties");
+ final File classFile = new File(url.toURI());
+ javaSourceDirectory = classFile.getParentFile();
}
- /*
- * (non-Javadoc)
- *
- * @see junit.framework.TestCase#tearDown()
- */
- protected void tearDown() throws Exception {
- super.tearDown();
+ @After
+ public void tearDown() {
}
/**
@@ -99,6 +99,7 @@
*
* @throws Exception
*/
+ @Test
public void testProcessSetRoundEnvironment() throws Exception {
JavaFileObject classFile = getJavaFileObject(CLASS_JAVA);
JavaFileObject subClassFile = getJavaFileObject(SUB_CLASS_JAVA);
Added:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/VirtualFileManagerTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/VirtualFileManagerTest.java
(rev 0)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/VirtualFileManagerTest.java 2009-07-29
00:53:17 UTC (rev 15027)
@@ -0,0 +1,93 @@
+package org.richfaces.cdk.apt;
+
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.*;
+
+import java.io.File;
+import java.net.URL;
+
+
+import javax.tools.FileObject;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardLocation;
+import javax.tools.JavaFileObject.Kind;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VirtualFileManagerTest {
+
+ private static final String TEST_PACKAGE = "org.richfaces.cdk.apt";
+ private static final String TEST_CLASS = "TestClass";
+ private static final String TEST_CLASS_NAME = TEST_PACKAGE + "." +
TEST_CLASS;
+ private JavaFileManager mockFileManager;
+ private File javaSourceDirectory;
+
+ @Before
+ public void setUp() throws Exception{
+ mockFileManager = createMock(JavaFileManager.class);
+ URL url = this.getClass().getResource(TEST_CLASS+".java");
+ final File classFile = new File(url.toURI());
+ javaSourceDirectory = classFile.getParentFile().getParentFile();
+ }
+
+ @After
+ public void tearDown() {
+ mockFileManager = null;
+ }
+
+ @Test
+ public void testGetJavaFileForInputClass() throws Exception {
+ VirtualFileManager fileManager = new
VirtualFileManager(mockFileManager,this.getClass().getClassLoader());
+ replay(mockFileManager);
+ JavaFileObject fileObject =
fileManager.getJavaFileForInput(StandardLocation.CLASS_PATH, TEST_CLASS_NAME,
Kind.SOURCE);
+ assertNotNull(fileObject);
+ assertThat(fileObject,instanceOf(VirtualJavaFileObject.class) );
+ }
+
+ @Test
+ public void testGetJavaFileForInputSource() throws Exception {
+ VirtualFileManager fileManager = new
VirtualFileManager(mockFileManager,this.getClass().getClassLoader());
+ fileManager.setJavaSourceDirectory(javaSourceDirectory);
+ replay(mockFileManager);
+ JavaFileObject fileObject =
fileManager.getJavaFileForInput(StandardLocation.SOURCE_PATH, "apt."+TEST_CLASS,
Kind.SOURCE);
+ assertNotNull(fileObject);
+ assertThat(fileObject,instanceOf(VirtualJavaFileObject.class) );
+ }
+
+ @Test
+ public void testHasLocationLocation() {
+ VirtualFileManager fileManager = new
VirtualFileManager(mockFileManager,this.getClass().getClassLoader());
+ fileManager.setJavaSourceDirectory(javaSourceDirectory);
+ replay(mockFileManager);
+ assertTrue(fileManager.hasLocation(StandardLocation.SOURCE_PATH));
+ }
+
+ @Test
+ public void testListLocationStringSetOfKindBoolean() {
+// fail("Not yet implemented");
+ }
+
+ @Test
+ public void testGetFileForInputLocationStringString() throws Exception {
+ VirtualFileManager fileManager = new
VirtualFileManager(mockFileManager,this.getClass().getClassLoader());
+ replay(mockFileManager);
+ FileObject fileObject = fileManager.getFileForInput(StandardLocation.CLASS_PATH,
TEST_PACKAGE, TEST_CLASS+".java");
+ assertNotNull(fileObject);
+ assertThat(fileObject,instanceOf(VirtualJavaFileObject.class) );
+ }
+
+ @Test
+ public void testGetFileForInputLocationFromSource() throws Exception {
+ VirtualFileManager fileManager = new
VirtualFileManager(mockFileManager,this.getClass().getClassLoader());
+ fileManager.setJavaSourceDirectory(javaSourceDirectory);
+ replay(mockFileManager);
+ FileObject fileObject = fileManager.getFileForInput(StandardLocation.SOURCE_PATH,
"apt", TEST_CLASS+".java");
+ assertNotNull(fileObject);
+ assertThat(fileObject,instanceOf(VirtualJavaFileObject.class) );
+ }
+
+}
Property changes on:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/apt/VirtualFileManagerTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: root/cdk/trunk/plugins/generator/src/test/resources/source.properties
===================================================================
Property changes on:
root/cdk/trunk/plugins/generator/src/test/resources/source.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain