]> source.dussan.org Git - aspectj.git/commitdiff
an additional interface that custom message handlers may choose to implement. Impleme...
authoracolyer <acolyer>
Wed, 18 Jan 2006 14:37:02 +0000 (14:37 +0000)
committeracolyer <acolyer>
Wed, 18 Jan 2006 14:37:02 +0000 (14:37 +0000)
bridge/src/org/aspectj/bridge/ILifecycleAware.java [new file with mode: 0644]
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java

diff --git a/bridge/src/org/aspectj/bridge/ILifecycleAware.java b/bridge/src/org/aspectj/bridge/ILifecycleAware.java
new file mode 100644 (file)
index 0000000..c5ac9b1
--- /dev/null
@@ -0,0 +1,35 @@
+/* *******************************************************************
+ * Copyright (c) 2006 Contributors.
+ * All rights reserved. 
+ * This program and the accompanying materials are made available 
+ * under the terms of the Eclipse Public License v1.0 
+ * which accompanies this distribution and is available at 
+ * http://eclipse.org/legal/epl-v10.html 
+ *  
+ * Contributors: 
+ *   Adrian Colyer                     Initial implementation
+ * ******************************************************************/
+package org.aspectj.bridge;
+
+/**
+ * Interface that can be implemented by MessageHandlers that need to 
+ * perform some additional processing when a build is starting and 
+ * when it has finished.
+ * 
+ * @author Adrian Colyer
+ * @since 1.5.1
+ */
+public interface ILifecycleAware {
+
+       /**
+        * called when a build starts
+        */
+       void buildStarting(boolean isIncremental);
+       
+       /**
+        * called when a batch build finishes
+        *
+        */
+       void buildFinished(boolean wasIncremental);
+       
+}
index 0cbb761db5390b541cd0bd093890c9a5e6afc003..1468bed19ce4387f22f08ce705b939a1e0e43de2 100644 (file)
@@ -52,6 +52,7 @@ import org.aspectj.asm.IProgramElement;
 import org.aspectj.asm.internal.ProgramElement;
 import org.aspectj.bridge.AbortException;
 import org.aspectj.bridge.CountingMessageHandler;
+import org.aspectj.bridge.ILifecycleAware;
 import org.aspectj.bridge.IMessage;
 import org.aspectj.bridge.IMessageHandler;
 import org.aspectj.bridge.IProgressListener;
@@ -172,6 +173,9 @@ public class AjBuildManager implements IOutputClassFileNameProvider,IBinarySourc
         boolean ret = true;
        batchCompile = batch;
        
+       if (baseHandler instanceof ILifecycleAware) {
+               ((ILifecycleAware)baseHandler).buildStarting(!batch);
+       }
        int phase = batch ? CompilationAndWeavingContext.BATCH_BUILD : CompilationAndWeavingContext.INCREMENTAL_BUILD;
        ContextToken ct = CompilationAndWeavingContext.enteringPhase(phase ,buildConfig);
         try {
@@ -311,6 +315,9 @@ public class AjBuildManager implements IOutputClassFileNameProvider,IBinarySourc
                CompilationAndWeavingContext.leavingPhase(ct);
             
         } finally {
+               if (baseHandler instanceof ILifecycleAware) {
+                       ((ILifecycleAware)baseHandler).buildFinished(!batch);
+               }
                if (zos != null) {
                        closeOutputStream(buildConfig.getOutputJar());
                }