Search in sources :

Example 21 with BundleDescription

use of org.eclipse.osgi.service.resolver.BundleDescription in project rt.equinox.framework by eclipse.

the class StateResolverTest method testComplexResolution.

public void testComplexResolution() throws BundleException {
    State state = buildComplexState();
    StateDelta delta = state.resolve();
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription b1 = state.getBundle("org.eclipse.b1", Version.parseVersion("1.0"));
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription b2 = state.getBundle("org.eclipse.b2", Version.parseVersion("2.0"));
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription b3 = state.getBundle("org.eclipse.b3", Version.parseVersion("2.0"));
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription b4 = state.getBundle("org.eclipse.b4", Version.parseVersion("2.0"));
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription b5 = state.getBundle("org.eclipse.b5", Version.parseVersion("1.0"));
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription b6 = state.getBundle("org.eclipse.b6", Version.parseVersion("1.0"));
    // $NON-NLS-1$
    assertNotNull("0.1", b1);
    // $NON-NLS-1$
    assertNotNull("0.2", b2);
    // $NON-NLS-1$
    assertNotNull("0.3", b3);
    // $NON-NLS-1$
    assertNotNull("0.4", b4);
    // $NON-NLS-1$
    assertNotNull("0.5", b5);
    // $NON-NLS-1$
    assertNotNull("0.6", b6);
    BundleDelta[] changes = delta.getChanges();
    // $NON-NLS-1$
    assertEquals("1.0", 6, changes.length);
    BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
    // $NON-NLS-1$
    assertEquals("2.0", 6, additions.length);
    BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
    // $NON-NLS-1$
    assertEquals("3.0", 6, resolutions.length);
    Map deltasMap = new HashMap();
    for (int i = 0; i < resolutions.length; i++) deltasMap.put(resolutions[i].getBundle().getSymbolicName(), resolutions[i]);
    // $NON-NLS-1$
    assertNotNull("3.1", deltasMap.get(b1.getSymbolicName()));
    // $NON-NLS-1$
    assertNotNull("3.2", deltasMap.get(b2.getSymbolicName()));
    // $NON-NLS-1$
    assertNotNull("3.3", deltasMap.get(b3.getSymbolicName()));
    // $NON-NLS-1$
    assertNotNull("3.4", deltasMap.get(b4.getSymbolicName()));
    // $NON-NLS-1$
    assertNotNull("3.5", deltasMap.get(b5.getSymbolicName()));
    // $NON-NLS-1$
    assertNotNull("3.6", deltasMap.get(b6.getSymbolicName()));
    BundleDelta[] unresolutions = delta.getChanges(BundleDelta.UNRESOLVED, false);
    // $NON-NLS-1$
    assertEquals("4.0", 0, unresolutions.length);
    // $NON-NLS-1$
    assertFullyResolved("5.1", b1);
    // $NON-NLS-1$
    assertFullyResolved("5.2", b2);
    // $NON-NLS-1$
    assertFullyResolved("5.3", b3);
    // $NON-NLS-1$
    assertFullyResolved("5.4", b4);
    // $NON-NLS-1$
    assertFullyResolved("5.5", b5);
    // $NON-NLS-1$
    assertFullyResolved("5.6", b6);
}
Also used : HashMap(java.util.HashMap) State(org.eclipse.osgi.service.resolver.State) BundleDescription(org.eclipse.osgi.service.resolver.BundleDescription) StateDelta(org.eclipse.osgi.service.resolver.StateDelta) BundleDelta(org.eclipse.osgi.service.resolver.BundleDelta) HashMap(java.util.HashMap) Map(java.util.Map) CaseInsensitiveDictionaryMap(org.eclipse.osgi.framework.util.CaseInsensitiveDictionaryMap)

Example 22 with BundleDescription

use of org.eclipse.osgi.service.resolver.BundleDescription in project rt.equinox.framework by eclipse.

the class StateResolverTest method testPrerequisiteBundle.

public void testPrerequisiteBundle() throws BundleException {
    State state = buildComplexState();
    state.resolve();
    BundleDescription[] prereqs;
    prereqs = state.getStateHelper().getPrerequisites(state.getResolvedBundles());
    // $NON-NLS-1$
    assertEquals("1.0", 6, prereqs.length);
    prereqs = state.getStateHelper().getPrerequisites(new BundleDescription[] { state.getBundle(1) });
    // $NON-NLS-1$
    assertEquals("2.0", 2, prereqs.length);
    // $NON-NLS-1$
    assertContains("2.1", prereqs, state.getBundle(1));
    // $NON-NLS-1$
    assertContains("2.2", prereqs, state.getBundle(3));
    prereqs = state.getStateHelper().getPrerequisites(new BundleDescription[] { state.getBundle(2) });
    // $NON-NLS-1$
    assertEquals("3.0", 3, prereqs.length);
    // $NON-NLS-1$
    assertContains("3.1", prereqs, state.getBundle(1));
    // $NON-NLS-1$
    assertContains("3.2", prereqs, state.getBundle(2));
    // $NON-NLS-1$
    assertContains("3.3", prereqs, state.getBundle(3));
    prereqs = state.getStateHelper().getPrerequisites(new BundleDescription[] { state.getBundle(3) });
    // $NON-NLS-1$
    assertEquals("4.0", 1, prereqs.length);
    // $NON-NLS-1$
    assertContains("4.1", prereqs, state.getBundle(3));
    prereqs = state.getStateHelper().getPrerequisites(new BundleDescription[] { state.getBundle(4) });
    // $NON-NLS-1$
    assertEquals("5.0", 3, prereqs.length);
    // $NON-NLS-1$
    assertContains("5.1", prereqs, state.getBundle(1));
    // $NON-NLS-1$
    assertContains("5.2", prereqs, state.getBundle(3));
    // $NON-NLS-1$
    assertContains("5.3", prereqs, state.getBundle(4));
    prereqs = state.getStateHelper().getPrerequisites(new BundleDescription[] { state.getBundle(5) });
    // $NON-NLS-1$
    assertEquals("6.0", 2, prereqs.length);
    // $NON-NLS-1$
    assertContains("6.1", prereqs, state.getBundle(3));
    // $NON-NLS-1$
    assertContains("6.2", prereqs, state.getBundle(5));
    prereqs = state.getStateHelper().getPrerequisites(new BundleDescription[] { state.getBundle(6) });
    // $NON-NLS-1$
    assertEquals("6.0", 4, prereqs.length);
    // $NON-NLS-1$
    assertContains("6.1", prereqs, state.getBundle(1));
    // $NON-NLS-1$
    assertContains("6.2", prereqs, state.getBundle(3));
    // $NON-NLS-1$
    assertContains("6.3", prereqs, state.getBundle(4));
    // $NON-NLS-1$
    assertContains("6.4", prereqs, state.getBundle(6));
}
Also used : State(org.eclipse.osgi.service.resolver.State) BundleDescription(org.eclipse.osgi.service.resolver.BundleDescription)

Example 23 with BundleDescription

use of org.eclipse.osgi.service.resolver.BundleDescription in project rt.equinox.framework by eclipse.

the class StateResolverTest method testBug266935_03.

public void testBug266935_03() throws BundleException {
    State state = createBug266935State();
    // $NON-NLS-1$ //$NON-NLS-2$
    BundleDescription a = state.getBundle("a", new Version("1.0"));
    BundleDescription newA = updateStateBug266935(state, a);
    state.removeBundle(newA);
    state.resolve(new BundleDescription[] { newA });
}
Also used : Version(org.osgi.framework.Version) State(org.eclipse.osgi.service.resolver.State) BundleDescription(org.eclipse.osgi.service.resolver.BundleDescription)

Example 24 with BundleDescription

use of org.eclipse.osgi.service.resolver.BundleDescription in project rt.equinox.framework by eclipse.

the class StateResolverTest method testAdd3Resolve1.

/**
 * Tests adding 3 new bundles to an already resolved state and then
 * resolving only one of the bundles. The result should be all 3 added
 * bundles being resolved.
 */
public void testAdd3Resolve1() throws BundleException {
    State state = buildInitialState();
    StateDelta delta = state.resolve();
    BundleDelta[] deltas = delta.getChanges();
    BundleDescription b0 = state.getBundle(0);
    // $NON-NLS-1$
    assertNotNull("0.1", b0);
    // $NON-NLS-1$
    assertFullyResolved("0.2", b0);
    Hashtable manifest = new Hashtable();
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1");
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_VERSION, "1.0");
    // $NON-NLS-1$
    manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework");
    // $NON-NLS-1$
    manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0");
    BundleDescription b1 = null;
    try {
        // $NON-NLS-1$
        b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1);
        state.removeBundle(1);
        state.addBundle(b1);
    } catch (BundleException e) {
        // $NON-NLS-1$
        fail("Failed to create BundleDescription: " + e.getMessage());
    }
    manifest = new Hashtable();
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2");
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_VERSION, "1.0");
    // $NON-NLS-1$
    manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1");
    // $NON-NLS-1$
    manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0");
    BundleDescription b2 = null;
    try {
        // $NON-NLS-1$
        b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2);
        state.removeBundle(2);
        state.addBundle(b2);
    } catch (BundleException e) {
        // $NON-NLS-1$
        fail("Failed to create BundleDescription: " + e.getMessage());
    }
    manifest = new Hashtable();
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3");
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_VERSION, "1.0");
    // $NON-NLS-1$
    manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2");
    // $NON-NLS-1$
    manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0");
    BundleDescription b3 = null;
    try {
        // $NON-NLS-1$
        b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3);
        state.removeBundle(3);
        state.addBundle(b3);
    } catch (BundleException e) {
        // $NON-NLS-1$
        fail("Failed to create BundleDescription: " + e.getMessage());
    }
    delta = state.resolve(new BundleDescription[] { state.getBundle(1) });
    deltas = delta.getChanges();
    // $NON-NLS-1$
    assertEquals("1.0", 3, deltas.length);
    Map deltasMap = new HashMap();
    for (int i = 0; i < deltas.length; i++) deltasMap.put(new Long(deltas[i].getBundle().getBundleId()), deltas[i]);
    // $NON-NLS-1$
    assertNotNull("1.1", deltasMap.get(new Long(1)));
    // $NON-NLS-1$
    assertNotNull("1.2", deltasMap.get(new Long(2)));
    // $NON-NLS-1$
    assertNotNull("1.3", deltasMap.get(new Long(3)));
    // $NON-NLS-1$
    assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType());
    // $NON-NLS-1$
    assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType());
    // $NON-NLS-1$
    assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType());
}
Also used : HashMap(java.util.HashMap) State(org.eclipse.osgi.service.resolver.State) BundleDescription(org.eclipse.osgi.service.resolver.BundleDescription) Hashtable(java.util.Hashtable) StateDelta(org.eclipse.osgi.service.resolver.StateDelta) BundleDelta(org.eclipse.osgi.service.resolver.BundleDelta) BundleException(org.osgi.framework.BundleException) HashMap(java.util.HashMap) Map(java.util.Map) CaseInsensitiveDictionaryMap(org.eclipse.osgi.framework.util.CaseInsensitiveDictionaryMap)

Example 25 with BundleDescription

use of org.eclipse.osgi.service.resolver.BundleDescription in project rt.equinox.framework by eclipse.

the class StateResolverTest method updateStateBug266935.

private BundleDescription updateStateBug266935(State state, BundleDescription a) throws BundleException {
    Hashtable manifest = new Hashtable();
    // $NON-NLS-1$
    manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
    manifest.put(Constants.BUNDLE_SYMBOLICNAME, a.getSymbolicName());
    manifest.put(Constants.BUNDLE_VERSION, a.getVersion().toString());
    BundleDescription newA = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), a.getBundleId());
    state.updateBundle(newA);
    return newA;
}
Also used : Hashtable(java.util.Hashtable) BundleDescription(org.eclipse.osgi.service.resolver.BundleDescription)

Aggregations

BundleDescription (org.eclipse.osgi.service.resolver.BundleDescription)202 BundleException (org.osgi.framework.BundleException)106 State (org.eclipse.osgi.service.resolver.State)87 Hashtable (java.util.Hashtable)70 Dictionary (java.util.Dictionary)28 ExportPackageDescription (org.eclipse.osgi.service.resolver.ExportPackageDescription)18 ArrayList (java.util.ArrayList)11 StateDelta (org.eclipse.osgi.service.resolver.StateDelta)11 BundleDelta (org.eclipse.osgi.service.resolver.BundleDelta)10 List (java.util.List)9 HashMap (java.util.HashMap)8 File (java.io.File)6 Map (java.util.Map)6 CaseInsensitiveDictionaryMap (org.eclipse.osgi.framework.util.CaseInsensitiveDictionaryMap)6 VersionConstraint (org.eclipse.osgi.service.resolver.VersionConstraint)6 Version (org.osgi.framework.Version)6 BundleWiring (org.osgi.framework.wiring.BundleWiring)5 BundleContext (org.osgi.framework.BundleContext)2 ResolverHook (org.osgi.framework.hooks.resolver.ResolverHook)2 Collection (java.util.Collection)1