diff --git a/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java b/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java index cc8ce649..8ada6c8a 100644 --- a/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java +++ b/generator/src/main/java/org/richfaces/cdk/apt/AptModule.java @@ -79,6 +79,6 @@ protected void configure() { bind(LibraryCompiler.class).to(IncrementalLibraryCompiler.class); bind(JavaSourceProcessor.class).in(Singleton.class); bind(LibraryGenerator.class).to(DefaultLibraryGenerator.class); - bind(JavaSourceCache.class).in(Singleton.class); + bind(JavaSourceTracker.class).to(JavaSourceTrackerImpl.class); } } diff --git a/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java b/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java index 2d58b50e..6be8c331 100644 --- a/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java +++ b/generator/src/main/java/org/richfaces/cdk/apt/CdkProcessorImpl.java @@ -72,12 +72,16 @@ public synchronized void init(ProcessingEnvironment processingEnv) { @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { + if (time == null) { + time = new TimeMeasure("java source processing", log).info(true); + } + if (!roundEnv.processingOver()) { if (firstRound) { firstRound = false; compiler.beforeJavaSourceProcessing(); - time = new TimeMeasure("java source processing", log).info(true).start(); + time.start(); } compiler.processJavaSource(processingEnv, roundEnv); } else { diff --git a/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceProcessor.java b/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceProcessor.java index 02eab527..90027bc2 100644 --- a/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceProcessor.java +++ b/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceProcessor.java @@ -10,7 +10,6 @@ import javax.lang.model.element.Element; import javax.lang.model.element.ElementKind; -import org.richfaces.cdk.CdkException; import org.richfaces.cdk.CdkProcessingException; import org.richfaces.cdk.Logger; import org.richfaces.cdk.apt.processors.CdkAnnotationProcessor; @@ -29,7 +28,7 @@ public class JavaSourceProcessor { private ComponentLibrary library; @Inject - private JavaSourceCache sourceCache; + private JavaSourceTracker sourceCache; private ProcessingEnvironment processingEnv; @@ -115,8 +114,4 @@ private void sendError(Element componentElement, Exception e) { // rise error and continue. processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.ERROR, e.getMessage(), componentElement); } - - private void sendError(CdkException e) { - processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.ERROR, e.getMessage()); - } } diff --git a/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceTracker.java b/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceTracker.java new file mode 100644 index 00000000..07bc3d5c --- /dev/null +++ b/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceTracker.java @@ -0,0 +1,11 @@ +package org.richfaces.cdk.apt; + +import javax.lang.model.element.Element; +import javax.tools.JavaFileObject; + +public interface JavaSourceTracker { + + void putChanged(JavaFileObject sourceObject); + + boolean isChanged(Element element); +} diff --git a/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceCache.java b/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceTrackerImpl.java similarity index 93% rename from generator/src/main/java/org/richfaces/cdk/apt/JavaSourceCache.java rename to generator/src/main/java/org/richfaces/cdk/apt/JavaSourceTrackerImpl.java index 4dd43cc7..a0656f0e 100644 --- a/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceCache.java +++ b/generator/src/main/java/org/richfaces/cdk/apt/JavaSourceTrackerImpl.java @@ -14,8 +14,10 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.inject.Singleton; -public class JavaSourceCache { +@Singleton +public class JavaSourceTrackerImpl implements JavaSourceTracker { private List changed = Lists.newLinkedList(); private Map elements = Maps.newHashMap(); diff --git a/generator/src/main/java/org/richfaces/cdk/apt/TaskFactoryImpl.java b/generator/src/main/java/org/richfaces/cdk/apt/TaskFactoryImpl.java index 59471373..c587d14e 100644 --- a/generator/src/main/java/org/richfaces/cdk/apt/TaskFactoryImpl.java +++ b/generator/src/main/java/org/richfaces/cdk/apt/TaskFactoryImpl.java @@ -86,7 +86,7 @@ public class TaskFactoryImpl implements CompilationTaskFactory { private LibraryCache javaCache; @Inject - private JavaSourceCache sourceCache; + private JavaSourceTracker sourceCache; private JavaCompiler javaCompiler; private StandardJavaFileManager fileManager; diff --git a/generator/src/test/java/org/richfaces/cdk/CdkTestBase.java b/generator/src/test/java/org/richfaces/cdk/CdkTestBase.java index 6cbbcf7e..2ff63fed 100644 --- a/generator/src/test/java/org/richfaces/cdk/CdkTestBase.java +++ b/generator/src/test/java/org/richfaces/cdk/CdkTestBase.java @@ -33,10 +33,14 @@ import java.util.Locale; import java.util.logging.LogManager; +import javax.lang.model.element.Element; +import javax.tools.JavaFileObject; + import org.junit.After; import org.junit.Before; import org.richfaces.cdk.annotations.JsfComponent; import org.richfaces.cdk.apt.CacheType; +import org.richfaces.cdk.apt.JavaSourceTracker; import org.richfaces.cdk.apt.LibraryCache; import org.richfaces.cdk.model.ComponentLibrary; @@ -60,6 +64,7 @@ public void configure(Binder binder) { binder.bind(Locale.class).toInstance(Locale.getDefault()); binder.bind(Charset.class).toInstance(Charset.defaultCharset()); + binder.bind(JavaSourceTracker.class).to(TestingJavaSourceTracker.class); for (CacheType cacheType : CacheType.values()) { binder.bind(LibraryCache.class).annotatedWith(new CacheImpl(cacheType)).toInstance(new EmptyLibraryCache()); } @@ -139,6 +144,19 @@ protected File getLibraryFile(String resource) throws Exception { } } + private static class TestingJavaSourceTracker implements JavaSourceTracker { + + @Override + public void putChanged(JavaFileObject sourceObject) { + // do nothing + } + + @Override + public boolean isChanged(Element element) { + return true; + } + } + private static class EmptyLibraryCache implements LibraryCache { @Override