Add getResolutionReportMessage to ResolutionReport
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/Module.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/Module.java
index b84134b..e623ca1 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/Module.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/Module.java
@@ -418,7 +418,7 @@
if (State.ACTIVE.equals(getState()))
return;
if (getState().equals(State.INSTALLED)) {
- String reportMessage = ModuleResolutionReport.getResolutionReport("", getCurrentRevision(), report.getEntries()); //$NON-NLS-1$
+ String reportMessage = report.getResolutionReportMessage(getCurrentRevision());
throw new BundleException(Msg.Module_ResolveError + reportMessage, BundleException.RESOLVE_ERROR, e);
}
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolutionReport.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolutionReport.java
index f5a9d5c..7d447f0 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolutionReport.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolutionReport.java
@@ -13,7 +13,6 @@
import java.util.*;
import org.eclipse.osgi.internal.messages.Msg;
import org.eclipse.osgi.report.resolution.ResolutionReport;
-import org.osgi.framework.Bundle;
import org.osgi.framework.wiring.BundleRevision;
import org.osgi.resource.*;
import org.osgi.service.resolver.ResolutionException;
@@ -84,19 +83,7 @@
return resolutionResult;
}
- /**
- * Returns a message giving an explanation of a resolution report for the specific bundle revision.
- * @param prepend a string to prepend each line in the message. This is useful if you need to indent the message.
- * A value of <code>null</code> is treated as empty string.
- * @param revision The bundle revision to get a report for
- * @param reportEntries The report entries from a resolution report
- * @return The explanation of the resolution report for the specified revision.
- */
- public static String getResolutionReport(String prepend, BundleRevision revision, Map<Resource, List<ResolutionReport.Entry>> reportEntries) {
- return getResolutionReport0(prepend, revision, reportEntries, null);
- }
-
- private static String getResolutionReport0(String prepend, BundleRevision revision, Map<Resource, List<ResolutionReport.Entry>> reportEntries, Set<BundleRevision> visited) {
+ private static String getResolutionReport0(String prepend, ModuleRevision revision, Map<Resource, List<ResolutionReport.Entry>> reportEntries, Set<BundleRevision> visited) {
if (prepend == null) {
prepend = ""; //$NON-NLS-1$
}
@@ -108,15 +95,7 @@
}
visited.add(revision);
StringBuilder result = new StringBuilder();
- String id = null;
- if (revision instanceof ModuleRevision) {
- id = ((ModuleRevision) revision).getRevisions().getModule().getId().toString();
- } else {
- Bundle b = revision.getBundle();
- if (b != null) {
- id = Long.toString(b.getBundleId());
- }
- }
+ String id = revision.getRevisions().getModule().getId().toString();
result.append(prepend).append(revision.getSymbolicName()).append(" [").append(id).append("]").append('\n'); //$NON-NLS-1$ //$NON-NLS-2$
List<ResolutionReport.Entry> revisionEntries = reportEntries.get(revision);
@@ -167,4 +146,9 @@
break;
}
}
+
+ @Override
+ public String getResolutionReportMessage(Resource resource) {
+ return getResolutionReport0(null, (ModuleRevision) resource, getEntries(), null);
+ }
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/SystemModule.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/SystemModule.java
index 66c5066..b99fee2 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/SystemModule.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/SystemModule.java
@@ -10,13 +10,12 @@
*******************************************************************************/
package org.eclipse.osgi.container;
-import org.eclipse.osgi.internal.messages.Msg;
-
import java.util.*;
import java.util.concurrent.TimeUnit;
import org.eclipse.osgi.container.ModuleContainer.ContainerStartLevel;
import org.eclipse.osgi.container.ModuleContainerAdaptor.ContainerEvent;
import org.eclipse.osgi.container.ModuleContainerAdaptor.ModuleEvent;
+import org.eclipse.osgi.internal.messages.Msg;
import org.osgi.framework.*;
import org.osgi.service.resolver.ResolutionException;
@@ -61,7 +60,7 @@
if (ACTIVE_SET.contains(getState()))
return;
if (getState().equals(State.INSTALLED)) {
- String reportMessage = ModuleResolutionReport.getResolutionReport("", getCurrentRevision(), report.getEntries()); //$NON-NLS-1$
+ String reportMessage = report.getResolutionReportMessage(getCurrentRevision());
throw new BundleException(Msg.Module_ResolveError + reportMessage, BundleException.RESOLVE_ERROR);
}
}
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/report/resolution/ResolutionReport.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/report/resolution/ResolutionReport.java
index 1e74fa8..7ae7e1a 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/report/resolution/ResolutionReport.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/report/resolution/ResolutionReport.java
@@ -172,4 +172,14 @@
* no resolution exception.
*/
ResolutionException getResoltuionException();
+
+ /**
+ * Returns a resolution report message for the given resource.
+ * The resource must be included as an {@link #getEntries entry} for this resolution report.
+ * This is a convenience method intended to help display messaged for resolution
+ * errors.
+ * @param resource the resource to get the resolution report message for.
+ * @return a resolution report message.
+ */
+ String getResolutionReportMessage(Resource resource);
}