());
static BndPreferences prefs = new BndPreferences();
- static {
- CnfWatcher.install();
- }
-
private BuildLogger buildLog;
private boolean postponed;
/**
* Called from Eclipse when it thinks this project should be build. We're
- * proposed to figure out if we've changed and then build as quickly as
+ * supposed to figure out if we've changed and then build as quickly as
* possible.
*
* We ensure we're called in proper order defined by bnd, if not we will
@@ -89,8 +94,8 @@ public class BndtoolsBuilder extends IncrementalProjectBuilder {
*/
@Override
protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException {
-
IProject myProject = getProject();
+
buildLog = new BuildLogger(prefs.getBuildLogging(), myProject.getName(), kind);
BuildListeners listeners = new BuildListeners();
@@ -171,7 +176,7 @@ protected IProject[] build(int kind, Map args, IProgressMonitor
return null;
}
- boolean force = kind == FULL_BUILD;
+ boolean force = kind == IncrementalProjectBuilder.FULL_BUILD;
model.clear();
DeltaWrapper delta = new DeltaWrapper(model, getDelta(myProject), buildLog);
@@ -317,7 +322,7 @@ protected IProject[] build(int kind, Map args, IProgressMonitor
} catch (
Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, PLUGIN_ID, 0, "Build Error!", e));
+ throw new CoreException(new Status(IStatus.ERROR, BuilderPlugin.PLUGIN_ID, 0, "Build Error!", e));
} finally {
if (buildLog.isActive())
logger.logInfo(buildLog.format(), null);
@@ -368,7 +373,7 @@ protected void clean(IProgressMonitor monitor) throws CoreException {
// Tell Eclipse what we did...
Central.refreshFile(model.getTarget(), monitor, true);
} catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, PLUGIN_ID, 0, "Build Error!", e));
+ throw new CoreException(new Status(IStatus.ERROR, BuilderPlugin.PLUGIN_ID, 0, "Build Error!", e));
} finally {
if (buildLog.isActive())
logger.logInfo(buildLog.format(), null);
diff --git a/bndtools.builder/src/org/bndtools/builder/BndtoolsDynamicReferenceProvider.java b/org.bndtools.builder/src/org/bndtools/builder/impl/BndtoolsDynamicReferenceProvider.java
similarity index 84%
rename from bndtools.builder/src/org/bndtools/builder/BndtoolsDynamicReferenceProvider.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/BndtoolsDynamicReferenceProvider.java
index a1cd99be135..9ef057bad06 100644
--- a/bndtools.builder/src/org/bndtools/builder/BndtoolsDynamicReferenceProvider.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/BndtoolsDynamicReferenceProvider.java
@@ -1,9 +1,10 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.bndtools.api.central.ICentral;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IDynamicReferenceProvider;
import org.eclipse.core.resources.IProject;
@@ -11,15 +12,23 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Status;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import aQute.bnd.build.Project;
import aQute.bnd.build.Workspace;
import bndtools.central.Central;
+@Component
public class BndtoolsDynamicReferenceProvider implements IDynamicReferenceProvider {
+
private static IWorkspaceRoot eclipse = ResourcesPlugin.getWorkspace()
.getRoot();
+ // This reference forces it to wait until Central is initialized
+ @Reference
+ ICentral central;
+
@Override
public List getDependentProjects(IBuildConfiguration buildConfiguration) throws CoreException {
try {
diff --git a/bndtools.builder/src/org/bndtools/builder/BndtoolsMarkerResolutionGenerator.java b/org.bndtools.builder/src/org/bndtools/builder/impl/BndtoolsMarkerResolutionGenerator.java
similarity index 92%
rename from bndtools.builder/src/org/bndtools/builder/BndtoolsMarkerResolutionGenerator.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/BndtoolsMarkerResolutionGenerator.java
index 0675719de24..f12e18711c1 100644
--- a/bndtools.builder/src/org/bndtools/builder/BndtoolsMarkerResolutionGenerator.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/BndtoolsMarkerResolutionGenerator.java
@@ -1,8 +1,8 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.util.List;
-import org.bndtools.build.api.BuildErrorDetailsHandler;
+import org.bndtools.api.builder.BuildErrorDetailsHandler;
import org.bndtools.build.api.BuildErrorDetailsHandlers;
import org.eclipse.core.resources.IMarker;
import org.eclipse.ui.IMarkerResolution;
diff --git a/bndtools.builder/src/org/bndtools/builder/BuildListeners.java b/org.bndtools.builder/src/org/bndtools/builder/impl/BuildListeners.java
similarity index 96%
rename from bndtools.builder/src/org/bndtools/builder/BuildListeners.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/BuildListeners.java
index 0ee65e06717..3866b419c9a 100644
--- a/bndtools.builder/src/org/bndtools/builder/BuildListeners.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/BuildListeners.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.io.File;
import java.util.ArrayList;
@@ -8,8 +8,8 @@
import org.bndtools.api.BndtoolsConstants;
import org.bndtools.api.ILogger;
import org.bndtools.api.Logger;
-import org.bndtools.build.api.BuildListener;
-import org.bndtools.build.api.BuildListener.BuildState;
+import org.bndtools.api.builder.BuildListener;
+import org.bndtools.api.builder.BuildListener.BuildState;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IPath;
diff --git a/bndtools.builder/src/org/bndtools/builder/BuildLogger.java b/org.bndtools.builder/src/org/bndtools/builder/impl/BuildLogger.java
similarity index 91%
rename from bndtools.builder/src/org/bndtools/builder/BuildLogger.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/BuildLogger.java
index 4b87fbe176a..eaf91ab7ded 100644
--- a/bndtools.builder/src/org/bndtools/builder/BuildLogger.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/BuildLogger.java
@@ -1,4 +1,9 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
+
+
+import static org.bndtools.api.builder.BuildLoggerConstants.LOG_BASIC;
+import static org.bndtools.api.builder.BuildLoggerConstants.LOG_FULL;
+import static org.bndtools.api.builder.BuildLoggerConstants.LOG_NONE;
import java.util.Formatter;
import java.util.concurrent.TimeUnit;
@@ -6,9 +11,6 @@
import org.eclipse.core.resources.IncrementalProjectBuilder;
public class BuildLogger {
- public static final int LOG_FULL = 2;
- public static final int LOG_BASIC = 1;
- public static final int LOG_NONE = 0;
private final int level;
private final String name;
private final int kind;
diff --git a/bndtools.builder/src/org/bndtools/builder/ClasspathContainerFilter.java b/org.bndtools.builder/src/org/bndtools/builder/impl/ClasspathContainerFilter.java
similarity index 95%
rename from bndtools.builder/src/org/bndtools/builder/ClasspathContainerFilter.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/ClasspathContainerFilter.java
index 5427629a046..d5160f8a736 100644
--- a/bndtools.builder/src/org/bndtools/builder/ClasspathContainerFilter.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/ClasspathContainerFilter.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import org.bndtools.api.BndtoolsConstants;
import org.eclipse.jdt.core.IClasspathContainer;
diff --git a/bndtools.builder/src/org/bndtools/builder/CnfWatcher.java b/org.bndtools.builder/src/org/bndtools/builder/impl/CnfWatcher.java
similarity index 73%
rename from bndtools.builder/src/org/bndtools/builder/CnfWatcher.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/CnfWatcher.java
index 228f9fc9707..30ac8dd5d38 100644
--- a/bndtools.builder/src/org/bndtools/builder/CnfWatcher.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/CnfWatcher.java
@@ -1,10 +1,11 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.util.Collection;
import org.bndtools.api.BndtoolsConstants;
import org.bndtools.api.ILogger;
import org.bndtools.api.Logger;
+import org.bndtools.api.builder.BuildLoggerConstants;
import org.bndtools.utils.workspace.WorkspaceUtils;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResourceChangeEvent;
@@ -16,22 +17,38 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ServiceScope;
import aQute.bnd.build.Project;
import aQute.bnd.build.Workspace;
import bndtools.central.Central;
+@Component(immediate = true, scope = ServiceScope.SINGLETON)
public class CnfWatcher implements IResourceChangeListener {
+ public static final String PLUGIN_ID = "bndtools.builder";
+
private static final ILogger logger = Logger.getLogger(CnfWatcher.class);
- private static final CnfWatcher INSTANCE = new CnfWatcher();
+ static final org.slf4j.Logger consoleLog = org.slf4j.LoggerFactory.getLogger(CnfWatcher.class);
+
+ @Reference
+ BndtoolsBuilder builder;
- static CnfWatcher install() {
+ @Activate
+ void activate() {
+ consoleLog.debug("Activating CnfWatcher");
ResourcesPlugin.getWorkspace()
- .addResourceChangeListener(INSTANCE, IResourceChangeEvent.POST_CHANGE);
- return INSTANCE;
+ .addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
}
- private CnfWatcher() {}
+ @Deactivate
+ void deactivate() {
+ ResourcesPlugin.getWorkspace()
+ .removeResourceChangeListener(this);
+ }
@Override
public void resourceChanged(final IResourceChangeEvent event) {
@@ -68,7 +85,7 @@ private void processEvent(IResourceChangeEvent event) {
Project p = allProjects.iterator()
.next();
- DeltaWrapper dw = new DeltaWrapper(p, delta, new BuildLogger(BuildLogger.LOG_NONE, "", 0));
+ DeltaWrapper dw = new DeltaWrapper(p, delta, new BuildLogger(BuildLoggerConstants.LOG_NONE, "", 0));
if (dw.hasCnfChanged()) {
WorkspaceJob j = new WorkspaceJob("Refreshing workspace for cnf change") {
@Override
@@ -83,7 +100,7 @@ public IStatus runInWorkspace(IProgressMonitor arg0) throws CoreException {
ms.deleteMarkers("*");
ms.setMarkers(workspace, BndtoolsConstants.MARKER_BND_WORKSPACE_PROBLEM);
} catch (Exception e) {
- return new Status(IStatus.ERROR, BndtoolsBuilder.PLUGIN_ID,
+ return new Status(IStatus.ERROR, PLUGIN_ID,
"error during workspace refresh",
e);
}
diff --git a/bndtools.builder/src/org/bndtools/builder/CompositeResourceDeltaVisitor.java b/org.bndtools.builder/src/org/bndtools/builder/impl/CompositeResourceDeltaVisitor.java
similarity index 95%
rename from bndtools.builder/src/org/bndtools/builder/CompositeResourceDeltaVisitor.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/CompositeResourceDeltaVisitor.java
index 056f69133af..123a311ad01 100644
--- a/bndtools.builder/src/org/bndtools/builder/CompositeResourceDeltaVisitor.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/CompositeResourceDeltaVisitor.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.util.LinkedList;
import java.util.List;
diff --git a/bndtools.builder/src/org/bndtools/builder/CompositeResourceProxyVisitor.java b/org.bndtools.builder/src/org/bndtools/builder/impl/CompositeResourceProxyVisitor.java
similarity index 95%
rename from bndtools.builder/src/org/bndtools/builder/CompositeResourceProxyVisitor.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/CompositeResourceProxyVisitor.java
index 908681744a9..a51724f9df1 100644
--- a/bndtools.builder/src/org/bndtools/builder/CompositeResourceProxyVisitor.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/CompositeResourceProxyVisitor.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.util.LinkedList;
import java.util.List;
diff --git a/bndtools.builder/src/org/bndtools/builder/DeltaWrapper.java b/org.bndtools.builder/src/org/bndtools/builder/impl/DeltaWrapper.java
similarity index 97%
rename from bndtools.builder/src/org/bndtools/builder/DeltaWrapper.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/DeltaWrapper.java
index fd31f2cad74..720cfcca3b0 100644
--- a/bndtools.builder/src/org/bndtools/builder/DeltaWrapper.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/DeltaWrapper.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import static java.util.stream.Collectors.toSet;
@@ -26,7 +26,7 @@
import aQute.lib.strings.Strings;
import bndtools.central.Central;
-class DeltaWrapper {
+public class DeltaWrapper {
private static final IPath EXT = new Path("/cnf/ext");
private final Project model;
@@ -40,13 +40,13 @@ class DeltaWrapper {
Constants.DEFAULT_PROP_TARGET_DIR
};
- DeltaWrapper(Project model, IResourceDelta delta, BuildLogger log) {
+ public DeltaWrapper(Project model, IResourceDelta delta, BuildLogger log) {
this.model = model;
this.delta = delta;
this.log = log;
}
- boolean hasCnfChanged() throws Exception {
+ public boolean hasCnfChanged() throws Exception {
if (delta == null) {
log.basic("Full build because delta for cnf is null");
return true;
diff --git a/bndtools.builder/src/org/bndtools/builder/ExportedBundle.java b/org.bndtools.builder/src/org/bndtools/builder/impl/ExportedBundle.java
similarity index 97%
rename from bndtools.builder/src/org/bndtools/builder/ExportedBundle.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/ExportedBundle.java
index 7c636635afa..fb83e748af5 100644
--- a/bndtools.builder/src/org/bndtools/builder/ExportedBundle.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/ExportedBundle.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import org.eclipse.core.runtime.IPath;
diff --git a/bndtools.builder/src/org/bndtools/builder/MarkerSupport.java b/org.bndtools.builder/src/org/bndtools/builder/impl/MarkerSupport.java
similarity index 97%
rename from bndtools.builder/src/org/bndtools/builder/MarkerSupport.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/MarkerSupport.java
index 57e90a48828..568ce1b9e33 100644
--- a/bndtools.builder/src/org/bndtools/builder/MarkerSupport.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/MarkerSupport.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import static org.bndtools.api.BndtoolsConstants.BNDTOOLS_MARKER_CONTEXT_ATTR;
import static org.bndtools.api.BndtoolsConstants.BNDTOOLS_MARKER_FILE_ATTR;
@@ -23,10 +23,10 @@
import org.bndtools.api.IProjectValidator;
import org.bndtools.api.IValidator;
import org.bndtools.api.Logger;
+import org.bndtools.api.builder.BuildErrorDetailsHandler;
+import org.bndtools.api.builder.MarkerData;
import org.bndtools.build.api.AbstractBuildErrorDetailsHandler;
-import org.bndtools.build.api.BuildErrorDetailsHandler;
import org.bndtools.build.api.BuildErrorDetailsHandlers;
-import org.bndtools.build.api.MarkerData;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -47,7 +47,7 @@
import aQute.service.reporter.Reporter.SetLocation;
class MarkerSupport {
- private static final ILogger logger = Logger.getLogger(BndtoolsBuilder.class);
+ private static final ILogger logger = Logger.getLogger(MarkerSupport.class);
private final IProject project;
private static final org.slf4j.Logger consoleLogger = LoggerFactory.getLogger(MarkerSupport.class);
diff --git a/bndtools.builder/src/org/bndtools/builder/WorkingSetTracker.java b/org.bndtools.builder/src/org/bndtools/builder/impl/WorkingSetTracker.java
similarity index 99%
rename from bndtools.builder/src/org/bndtools/builder/WorkingSetTracker.java
rename to org.bndtools.builder/src/org/bndtools/builder/impl/WorkingSetTracker.java
index c95e1e31284..b766c71102f 100644
--- a/bndtools.builder/src/org/bndtools/builder/WorkingSetTracker.java
+++ b/org.bndtools.builder/src/org/bndtools/builder/impl/WorkingSetTracker.java
@@ -1,4 +1,4 @@
-package org.bndtools.builder;
+package org.bndtools.builder.impl;
import java.util.Iterator;
import java.util.List;
diff --git a/org.bndtools.launch/src/bndtools/launch/UpdateGuard.java b/org.bndtools.launch/src/bndtools/launch/UpdateGuard.java
index 23d5e321d26..aabaebff1d3 100644
--- a/org.bndtools.launch/src/bndtools/launch/UpdateGuard.java
+++ b/org.bndtools.launch/src/bndtools/launch/UpdateGuard.java
@@ -6,7 +6,7 @@
import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicBoolean;
-import org.bndtools.build.api.BuildListener;
+import org.bndtools.api.builder.BuildListener;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.osgi.framework.BundleContext;