Skip to content

Commit

Permalink
Migrate to Declarative Services for Adapters
Browse files Browse the repository at this point in the history
Fix #585
  • Loading branch information
laeubi committed Jul 8, 2022
1 parent f4165c0 commit 22a3184
Show file tree
Hide file tree
Showing 14 changed files with 85 additions and 137 deletions.
5 changes: 5 additions & 0 deletions org.eclipse.m2e.pde.ui/.project
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
classpath=true
dsVersion=V1_3
eclipse.preferences.version=1
enabled=true
generateBundleActivationPolicyLazy=true
path=OSGI-INF
validationErrorLevel=error
validationErrorLevel.missingImplicitUnbindMethod=error
8 changes: 6 additions & 2 deletions org.eclipse.m2e.pde.ui/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.19.0",
org.eclipse.core.databinding.property;bundle-version="1.8.100",
org.eclipse.ui.workbench
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.eclipse.m2e.pde.ui.Activator
Bundle-Vendor: Eclipse.org - m2e
Import-Package: aQute.bnd.osgi;version="[5.5.0,6.0.0)"
Import-Package: aQute.bnd.osgi;version="[5.5.0,6.0.0)",
org.slf4j;version="1.7.30"
Service-Component: OSGI-INF/org.eclipse.m2e.pde.ui.target.adapter.DependencyNodeAdapterFactory.xml,
OSGI-INF/org.eclipse.m2e.pde.ui.target.adapter.MavenTargetAdapterFactory.xml,
OSGI-INF/org.eclipse.m2e.pde.ui.target.adapter.MavenTargetBundleAdapterFactory.xml,
OSGI-INF/org.eclipse.m2e.pde.ui.target.adapter.MavenTargetDependencyAdapterFactory.xml
1 change: 1 addition & 0 deletions org.eclipse.m2e.pde.ui/OSGI-INF/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/org.eclipse.m2e.*.xml
3 changes: 2 additions & 1 deletion org.eclipse.m2e.pde.ui/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
icons/
icons/,\
OSGI-INF/
58 changes: 0 additions & 58 deletions org.eclipse.m2e.pde.ui/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,62 +15,4 @@
</locationProvider>

</extension>
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.m2e.pde.target.MavenTargetLocation"
class="org.eclipse.m2e.pde.ui.target.adapter.MavenTargetAdapterFactory">
<adapter
type="org.eclipse.jface.viewers.ILabelProvider">
</adapter>
<adapter
type="org.eclipse.jface.viewers.ITreeContentProvider">
</adapter>
<adapter
type="org.eclipse.pde.ui.target.ITargetLocationHandler">
</adapter>
</factory>
</extension>
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.m2e.pde.target.MavenTargetBundle"
class="org.eclipse.m2e.pde.ui.target.adapter.MavenTargetBundleAdapterFactory">
<adapter
type="org.eclipse.jface.viewers.ILabelProvider">
</adapter>
</factory>
</extension>
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.aether.graph.DependencyNode"
class="org.eclipse.m2e.pde.ui.target.adapter.DependencyNodeAdapterFactory">
<adapter
type="org.eclipse.jface.viewers.ITreeContentProvider">
</adapter>
<adapter
type="org.eclipse.jface.viewers.ILabelProvider">
</adapter>
<adapter
type="org.eclipse.pde.ui.target.ITargetLocationHandler">
</adapter>
</factory>
</extension>
<extension
point="org.eclipse.core.runtime.adapters">
<factory
adaptableType="org.eclipse.m2e.pde.target.MavenTargetDependency"
class="org.eclipse.m2e.pde.ui.target.adapter.MavenTargetDependencyAdapterFactory">
<adapter
type="org.eclipse.jface.viewers.ILabelProvider">
</adapter>
<adapter
type="org.eclipse.jface.viewers.ITreeContentProvider">
</adapter>
<adapter
type="org.eclipse.pde.ui.target.ITargetLocationHandler">
</adapter>
</factory>
</extension>
</plugin>
40 changes: 0 additions & 40 deletions org.eclipse.m2e.pde.ui/src/org/eclipse/m2e/pde/ui/Activator.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,23 @@
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.m2e.pde.ui.Activator;
import org.eclipse.m2e.pde.ui.target.editor.MavenTargetLocationEditor;
import org.eclipse.m2e.pde.ui.target.provider.DependencyNodeLabelProvider;
import org.eclipse.m2e.pde.ui.target.provider.MavenTargetTreeContentProvider;
import org.eclipse.pde.ui.target.ITargetLocationHandler;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;

@Component(service = IAdapterFactory.class, property = {
IAdapterFactory.SERVICE_PROPERTY_ADAPTABLE_CLASS + "=org.eclipse.aether.graph.DependencyNode",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ILabelProvider",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ITreeContentProvider",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.pde.ui.target.ITargetLocationHandler" })
public class DependencyNodeAdapterFactory implements IAdapterFactory {

public static final ITreeContentProvider TREE_CONTENT_PROVIDER = new MavenTargetTreeContentProvider();
public static final ILabelProvider LABEL_PROVIDER = new DependencyNodeLabelProvider();
private static final MavenTargetLocationEditor LOCATION_EDITOR = new MavenTargetLocationEditor();
static {
Activator.runOnBundleStop(TREE_CONTENT_PROVIDER::dispose);
Activator.runOnBundleStop(LABEL_PROVIDER::dispose);
}
private final ITreeContentProvider TREE_CONTENT_PROVIDER = new MavenTargetTreeContentProvider();
private final ILabelProvider LABEL_PROVIDER = new DependencyNodeLabelProvider();
private final MavenTargetLocationEditor LOCATION_EDITOR = new MavenTargetLocationEditor();

@Override
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
Expand All @@ -51,4 +53,10 @@ public Class<?>[] getAdapterList() {
return new Class<?>[] { ITreeContentProvider.class, ILabelProvider.class, ITargetLocationHandler.class };
}

@Deactivate
void dispose() {
TREE_CONTENT_PROVIDER.dispose();
LABEL_PROVIDER.dispose();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,23 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.m2e.pde.target.MavenTargetLocation;
import org.eclipse.m2e.pde.ui.Activator;
import org.eclipse.m2e.pde.ui.target.editor.MavenTargetLocationEditor;
import org.eclipse.m2e.pde.ui.target.provider.MavenTargetLocationLabelProvider;
import org.eclipse.m2e.pde.ui.target.provider.MavenTargetTreeContentProvider;
import org.eclipse.pde.ui.target.ITargetLocationHandler;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;

@Component(service = IAdapterFactory.class, property = {
IAdapterFactory.SERVICE_PROPERTY_ADAPTABLE_CLASS + "=org.eclipse.m2e.pde.target.MavenTargetLocation",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ILabelProvider",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ITreeContentProvider",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.pde.ui.target.ITargetLocationHandler" })
public class MavenTargetAdapterFactory implements IAdapterFactory {

public static final ILabelProvider LABEL_PROVIDER = new MavenTargetLocationLabelProvider();
public static final ITreeContentProvider TREE_CONTENT_PROVIDER = new MavenTargetTreeContentProvider();
private static final MavenTargetLocationEditor LOCATION_EDITOR = new MavenTargetLocationEditor();
static {
Activator.runOnBundleStop(LABEL_PROVIDER::dispose);
Activator.runOnBundleStop(TREE_CONTENT_PROVIDER::dispose);
}
private final ILabelProvider LABEL_PROVIDER = new MavenTargetLocationLabelProvider();
private final ITreeContentProvider TREE_CONTENT_PROVIDER = new MavenTargetTreeContentProvider();
private final MavenTargetLocationEditor LOCATION_EDITOR = new MavenTargetLocationEditor();
@Override
public Class<?>[] getAdapterList() {
return new Class[] { ILabelProvider.class, ITreeContentProvider.class, ITargetLocationHandler.class };
Expand All @@ -50,4 +52,10 @@ public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
return null;
}

@Deactivate
void dispose() {
LABEL_PROVIDER.dispose();
TREE_CONTENT_PROVIDER.dispose();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,16 @@
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.m2e.pde.target.MavenTargetBundle;
import org.eclipse.m2e.pde.ui.Activator;
import org.eclipse.m2e.pde.ui.target.provider.MavenTargetBundleLabelProvider;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;

@Component(service = IAdapterFactory.class, property = {
IAdapterFactory.SERVICE_PROPERTY_ADAPTABLE_CLASS + "=org.eclipse.m2e.pde.target.MavenTargetBundle",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ILabelProvider" })
public class MavenTargetBundleAdapterFactory implements IAdapterFactory {

public static final ILabelProvider LABEL_PROVIDER = new MavenTargetBundleLabelProvider();
static {
Activator.runOnBundleStop(LABEL_PROVIDER::dispose);
}
private final ILabelProvider LABEL_PROVIDER = new MavenTargetBundleLabelProvider();
@Override
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
if (adaptableObject instanceof MavenTargetBundle) {
Expand All @@ -39,4 +40,9 @@ public Class<?>[] getAdapterList() {
return new Class<?>[] { ILabelProvider.class };
}

@Deactivate
void dispose() {
LABEL_PROVIDER.dispose();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,23 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.m2e.pde.target.MavenTargetDependency;
import org.eclipse.m2e.pde.ui.Activator;
import org.eclipse.m2e.pde.ui.target.editor.MavenTargetLocationEditor;
import org.eclipse.m2e.pde.ui.target.provider.MavenTargetDependencyLabelProvider;
import org.eclipse.m2e.pde.ui.target.provider.MavenTargetTreeContentProvider;
import org.eclipse.pde.ui.target.ITargetLocationHandler;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;

@Component(service = IAdapterFactory.class, property = {
IAdapterFactory.SERVICE_PROPERTY_ADAPTABLE_CLASS + "=org.eclipse.m2e.pde.target.MavenTargetDependency",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ILabelProvider",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.jface.viewers.ITreeContentProvider",
IAdapterFactory.SERVICE_PROPERTY_ADAPTER_NAMES + "=org.eclipse.pde.ui.target.ITargetLocationHandler" })
public class MavenTargetDependencyAdapterFactory implements IAdapterFactory {

public static final ILabelProvider LABEL_PROVIDER = new MavenTargetDependencyLabelProvider();
public static final ITreeContentProvider TREE_CONTENT_PROVIDER = new MavenTargetTreeContentProvider();
private static final MavenTargetLocationEditor LOCATION_EDITOR = new MavenTargetLocationEditor();
static {
Activator.runOnBundleStop(LABEL_PROVIDER::dispose);
Activator.runOnBundleStop(TREE_CONTENT_PROVIDER::dispose);
}
private final ILabelProvider LABEL_PROVIDER = new MavenTargetDependencyLabelProvider();
private final ITreeContentProvider TREE_CONTENT_PROVIDER = new MavenTargetTreeContentProvider();
private final MavenTargetLocationEditor LOCATION_EDITOR = new MavenTargetLocationEditor();
@Override
public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
if (adaptableObject instanceof MavenTargetDependency) {
Expand All @@ -50,4 +52,10 @@ public Class<?>[] getAdapterList() {
return new Class[] { ILabelProvider.class, ITreeContentProvider.class, ITargetLocationHandler.class };
}

@Deactivate
void dispose() {
LABEL_PROVIDER.dispose();
TREE_CONTENT_PROVIDER.dispose();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import org.eclipse.m2e.pde.target.MavenTargetDependency;
import org.eclipse.m2e.pde.target.MavenTargetLocation;
import org.eclipse.m2e.pde.target.MissingMetadataMode;
import org.eclipse.m2e.pde.ui.Activator;
import org.eclipse.pde.core.target.ITargetDefinition;
import org.eclipse.pde.core.target.ITargetLocation;
import org.eclipse.pde.ui.target.ITargetLocationHandler;
Expand Down Expand Up @@ -140,7 +139,8 @@ public boolean canUpdate(ITargetDefinition target, TreePath treePath) {
@Override
public IStatus update(ITargetDefinition target, TreePath[] treePaths, IProgressMonitor monitor) {
ITargetLocation[] targetLocations = target.getTargetLocations();
IStatus status = new Status(IStatus.OK, Activator.ID, ITargetLocationHandler.STATUS_CODE_NO_CHANGE, "", null);
IStatus status = new Status(IStatus.OK, "org.eclipse.m2e.pde.ui", ITargetLocationHandler.STATUS_CODE_NO_CHANGE,
"", null);
for (TreePath treePath : treePaths) {
Object segment = treePath.getFirstSegment();
if (segment instanceof MavenTargetLocation) {
Expand Down Expand Up @@ -256,7 +256,7 @@ public IStatus toggle(ITargetDefinition target, TreePath[] treePaths) {
}
}
}
return toggled > 0 ? new Status(IStatus.OK, Activator.class.getPackageName(), STATUS_FORCE_RELOAD, "", null)
return toggled > 0 ? new Status(IStatus.OK, "org.eclipse.m2e.pde.ui", STATUS_FORCE_RELOAD, "", null)
: Status.CANCEL_STATUS;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.eclipse.m2e.pde.target.MavenTargetRepository;
import org.eclipse.m2e.pde.target.MissingMetadataMode;
import org.eclipse.m2e.pde.target.TemplateFeatureModel;
import org.eclipse.m2e.pde.ui.Activator;
import org.eclipse.pde.core.target.ITargetDefinition;
import org.eclipse.pde.core.target.ITargetLocation;
import org.eclipse.pde.ui.target.ITargetLocationWizard;
Expand Down Expand Up @@ -390,7 +389,7 @@ public boolean performFinish() {
featureSpecPage.update(featureModel, iscreate || targetLocation.getFeatureTemplate() == null);
pluginListPage.update(featureModel);
} catch (CoreException e) {
Platform.getLog(Activator.class).log(e.getStatus());
Platform.getLog(MavenTargetLocationWizard.class).log(e.getStatus());
}
featureModel.makeReadOnly();
}
Expand Down

This file was deleted.

0 comments on commit 22a3184

Please sign in to comment.