blob: 4d5d289ccff350764fabc3683bdd777fa4f0a4f4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2009 IBM Corporation and others.
* 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://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.osgi.tests.services.resolver;
import java.util.Hashtable;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.osgi.service.resolver.*;
import org.osgi.framework.BundleException;
import org.osgi.framework.Constants;
public class SubstitutableExportsTest extends AbstractStateTest {
public static Test suite() {
return new TestSuite(SubstitutableExportsTest.class);
}
public SubstitutableExportsTest(String name) {
super(name);
}
private State getSubstituteBasicState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages
// D, E, F all requiring A, B, C respectively to access x, y packages
// all should get packages x and y from A
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
return state;
}
private State getSubstituteUsesState() throws BundleException {
// Same as basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause
// D, E, F all requiring A, B, C respectively to access x, y packages
// all should get packages x and y from A
// bundle G cannot resolve because of uses conflict with x package from Z
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; version=0.5; bundle=Z"); //$NON-NLS-1$
BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; bundle=Z"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(z);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
return state;
}
private State getSubstituteUsesCycleState() throws BundleException {
// Same as basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause + cycle
// D, E, F all requiring A, B, C respectively to access x, y packages
// all should get packages x and y from A and package z from G
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=0.5"); //$NON-NLS-1$
BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=x"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=x"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(z);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
return state;
}
private State getSubstituteBasicFragState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages
// Each have a fragment that exports and imports z package
// D, E, F all requiring A, B, C respectively to access x, y, z packages
// all should get packages x, y and z from A + fragment
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(aFrag);
state.addBundle(b);
state.addBundle(bFrag);
state.addBundle(c);
state.addBundle(cFrag);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
return state;
}
private State getSubstituteUsesFragState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause
// Each have a fragment that exports and imports z package
// D, E, F all requiring A, B, C respectively to access x, y, z packages
// all should get packages x, y and z from A + fragment
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; version=0.5; bundle=Z"); //$NON-NLS-1$
BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; bundle=Z"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(z);
state.addBundle(a);
state.addBundle(aFrag);
state.addBundle(b);
state.addBundle(bFrag);
state.addBundle(c);
state.addBundle(cFrag);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
return state;
}
private State getSubstituteUsesFragCycleState() throws BundleException {
// Same as basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause + cycle + frags
// D, E, F all requiring A, B, C respectively to access x, y packages
// all should get packages x and y from A and package z from G
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=2.0"); //$NON-NLS-1$
BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,q\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=\"[1.0,2.0)\", q"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,q\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=\"[1.0,2.0)\", q"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,q\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=\"[1.0,2.0)\", q"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "q; version=1.0; uses:=x"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "q; version=1.0"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "q; version=1.0; uses:=x"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "q; version=1.0"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "q; x; version=1.0"); //$NON-NLS-1$
BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(z);
state.addBundle(a);
state.addBundle(aFrag);
state.addBundle(b);
state.addBundle(bFrag);
state.addBundle(c);
state.addBundle(cFrag);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
state.addBundle(i);
return state;
}
private State getSubstituteBasicReexportState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages
// D, E, F all requiring A, B, C respectively to access x, y packages are reexporting
// G, H, I all requiring D, E, F repectively to access x, y packages
// all should get packages x and y from A
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B; visibility:=reexport"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C; visibility:=reexport"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
state.addBundle(i);
return state;
}
private State getSubstituteUsesReexportState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause
// D, E, F all requiring A, B, C respectively to access x, y packages are reexporting
// G, H, I all requiring D, E, F repectively to access x, y packages
// all should get packages x and y from A
// J cannot resolve because of uses conflicy with package x from Z
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; version=0.5; bundle=Z"); //$NON-NLS-1$
BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B; visibility:=reexport"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C; visibility:=reexport"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; bundle=Z"); //$NON-NLS-1$
BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(z);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
state.addBundle(i);
state.addBundle(j);
return state;
}
private State getSubstituteUsesReexportCycleState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages + uses clause + cycle
// D, E, F all requiring A, B, C respectively to access x, y packages are reexporting
// G, H, I all requiring D, E, F repectively to access x, y packages
// all should get packages x and y from A
// J cannot resolve because of uses conflicy with package x from Z
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=2.0"); //$NON-NLS-1$
BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B; visibility:=reexport"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C; visibility:=reexport"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses=\"x,y\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(z);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
state.addBundle(i);
state.addBundle(j);
return state;
}
private State getSubstituteUnresolvedFragState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages
// Each have a fragment that exports and imports z package and an extra unresolved import of q
// D, E, F all requiring A, B, C respectively to access x, y. z should not be accessible
// all should get packages x, y.
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; q; version=1.0"); //$NON-NLS-1$
BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z; q; version=1.0"); //$NON-NLS-1$
BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "z, q; version=1.0"); //$NON-NLS-1$
BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(aFrag);
state.addBundle(b);
state.addBundle(bFrag);
state.addBundle(c);
state.addBundle(cFrag);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
return state;
}
private State getSubstituteSplitState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages
// D, E, F all requiring A, B, C respectively to access x, y packages and export more content (split)
// all should get packages x and y from A
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
state.addBundle(i);
state.addBundle(j);
return state;
}
private State getSubstituteSplitUsesState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages + uses
// D, E, F all requiring A, B, C respectively to access x, y packages and add more content (split)
// all should get packages x and y from A
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split; uses:=\"x,y,q\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split, q; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split; uses:=\"x,y,q\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split, q; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split; uses:=\"x,y,q\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split, q; version=\"[1.0,2.0)\""); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,r\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0, r; version=\"[1.0,2.0)\""); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,r\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0, r; version=\"[1.0,2.0)\""); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,r\""); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0, r; version=\"[1.0,2.0)\""); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "K"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "q; r; version=2.0"); //$NON-NLS-1$
BundleDescription k = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "L"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "q; r; version=1.0"); //$NON-NLS-1$
BundleDescription l = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "M"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x, y, q, r"); //$NON-NLS-1$
BundleDescription m = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "N"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "q, r"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
BundleDescription n = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
state.addBundle(g);
state.addBundle(h);
state.addBundle(i);
state.addBundle(j);
state.addBundle(k);
state.addBundle(l);
state.addBundle(m);
state.addBundle(n);
return state;
}
private State getNonOverlapingSubstituteBasicState() throws BundleException {
// Basic substitutable export test with A, B, C all exporting and importing x,y packages
// D, E, F all requiring A, B, C respectively to access x, y packages
// all should get packages x and y from A
State state = buildEmptyState();
Hashtable manifest = new Hashtable();
long bundleID = 0;
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; nomatch=nomatch"); //$NON-NLS-1$
BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
state.addBundle(a);
state.addBundle(b);
state.addBundle(c);
state.addBundle(d);
state.addBundle(e);
state.addBundle(f);
return state;
}
public void testSubstitutableExports001() throws BundleException {
State state = getSubstituteBasicState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
ExportPackageDescription[] aSubtitutes = new ExportPackageDescription[] {aExports[0], aExports[1]};
assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
assertEquals("bVisible not correct", aSubtitutes, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aSubtitutes, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aSubtitutes, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aSubtitutes, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports002() throws BundleException {
State state = getSubstituteUsesState();
state.resolve();
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertFalse("1.6", g.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 0, gVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports003() throws BundleException {
State state = getSubstituteUsesCycleState();
state.resolve();
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
BundleDescription h = state.getBundle(8);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 3, hVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExported = a.getSelectedExports();
ExportPackageDescription[] gExported = g.getSelectedExports();
ExportPackageDescription[] expected = new ExportPackageDescription[aExported.length + gExported.length];
System.arraycopy(aExported, 0, expected, 0, aExported.length);
System.arraycopy(gExported, 0, expected, aExported.length, gExported.length);
for (int i = 0; i < expected.length; i++) {
if (i == 2)
assertContains("aVisible not correct", aVisible, expected[i]); //$NON-NLS-1$
assertContains("bVisible not correct", bVisible, expected[i]); //$NON-NLS-1$
assertContains("cVisible not correct", cVisible, expected[i]); //$NON-NLS-1$
assertContains("dVisible not correct", dVisible, expected[i]); //$NON-NLS-1$
assertContains("eVisible not correct", eVisible, expected[i]); //$NON-NLS-1$
assertContains("fVisible not correct", fVisible, expected[i]); //$NON-NLS-1$
if (i == 0 || i == 1)
assertContains("gVisible not correct", gVisible, expected[i]); //$NON-NLS-1$
assertContains("hVisible not correct", hVisible, expected[i]); //$NON-NLS-1$
}
}
public void testSubstitutableExports004() throws BundleException {
State state = getSubstituteBasicFragState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription aFrag = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription bFrag = state.getBundle(3);
BundleDescription c = state.getBundle(4);
BundleDescription cFrag = state.getBundle(5);
BundleDescription d = state.getBundle(6);
BundleDescription e = state.getBundle(7);
BundleDescription f = state.getBundle(8);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("bFragVisible wrong number", 1, bFragVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("cFragVisible wrong number", 1, cFragVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
ExportPackageDescription[] aFragExports = new ExportPackageDescription[] {aExports[2]};
assertEquals("bVisible not correct", aDeclaredExports, bVisible); //$NON-NLS-1$
assertEquals("bFragVisible not correct", aFragExports, bFragVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aDeclaredExports, cVisible); //$NON-NLS-1$
assertEquals("cFragVisible not correct", aFragExports, cFragVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports005() throws BundleException {
State state = getSubstituteUsesFragState();
state.resolve();
// BundleDescription z = state.getBundle(0);
BundleDescription a = state.getBundle(1);
BundleDescription aFrag = state.getBundle(2);
BundleDescription b = state.getBundle(3);
BundleDescription bFrag = state.getBundle(4);
BundleDescription c = state.getBundle(5);
BundleDescription cFrag = state.getBundle(6);
BundleDescription d = state.getBundle(7);
BundleDescription e = state.getBundle(8);
BundleDescription f = state.getBundle(9);
BundleDescription g = state.getBundle(10);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertFalse("1.6", g.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("bFragVisible wrong number", 1, bFragVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("cFragVisible wrong number", 1, cFragVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 0, gVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
ExportPackageDescription[] aFragExports = new ExportPackageDescription[] {aExports[2]};
assertEquals("bVisible not correct", aDeclaredExports, bVisible); //$NON-NLS-1$
assertEquals("bFragVisible not correct", aFragExports, bFragVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aDeclaredExports, cVisible); //$NON-NLS-1$
assertEquals("cFragVisible not correct", aFragExports, cFragVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports006() throws BundleException {
State state = getSubstituteUsesFragCycleState();
state.resolve();
// BundleDescription z = state.getBundle(0);
BundleDescription a = state.getBundle(1);
BundleDescription aFrag = state.getBundle(2);
BundleDescription b = state.getBundle(3);
BundleDescription bFrag = state.getBundle(4);
BundleDescription c = state.getBundle(5);
BundleDescription cFrag = state.getBundle(6);
BundleDescription d = state.getBundle(7);
BundleDescription e = state.getBundle(8);
BundleDescription f = state.getBundle(9);
BundleDescription g = state.getBundle(10);
BundleDescription h = state.getBundle(11);
BundleDescription i = state.getBundle(12);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
assertTrue("1.7", i.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", hVisible); //$NON-NLS-1$
assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
assertEquals("bFragVisible wrong number", 1, bFragVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
assertEquals("cFragVisible wrong number", 1, cFragVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 3, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 4, hVisible.length); //$NON-NLS-1$
assertEquals("iVisible wrong number", 4, iVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
ExportPackageDescription[] bcExpectedVisible = new ExportPackageDescription[aDeclaredExports.length + 1];
System.arraycopy(aDeclaredExports, 0, bcExpectedVisible, 0, aDeclaredExports.length);
bcExpectedVisible[2] = g.getSelectedExports()[0];
ExportPackageDescription[] aFragExports = new ExportPackageDescription[] {aExports[2]};
assertEquals("aVisible not correct", g.getSelectedExports(), aVisible); //$NON-NLS-1$
assertEquals("bVisible not correct", bcExpectedVisible, bVisible); //$NON-NLS-1$
assertEquals("bFragVisible not correct", aFragExports, bFragVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", bcExpectedVisible, cVisible); //$NON-NLS-1$
assertEquals("cFragVisible not correct", aFragExports, cFragVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
ExportPackageDescription[] gExports = g.getSelectedExports();
assertEquals("g has wrong number of exports", 1, gExports.length); //$NON-NLS-1$
ExportPackageDescription[] expectedHIVisible = new ExportPackageDescription[] {gExports[0], aExports[0], aExports[1], aExports[2]};
assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
assertEquals("hVisible not correct", expectedHIVisible, hVisible); //$NON-NLS-1$
assertEquals("iVisible not correct", expectedHIVisible, iVisible); //$NON-NLS-1$
}
public void testSubstitutableExports007() throws BundleException {
State state = getSubstituteBasicReexportState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
BundleDescription g = state.getBundle(5);
BundleDescription h = state.getBundle(5);
BundleDescription i = state.getBundle(5);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.5", g.isResolved()); //$NON-NLS-1$
assertTrue("1.5", h.isResolved()); //$NON-NLS-1$
assertTrue("1.5", i.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 2, hVisible.length); //$NON-NLS-1$
assertEquals("iVisible wrong number", 2, iVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
assertEquals("hVisible not correct", aExports, hVisible); //$NON-NLS-1$
assertEquals("iVisible not correct", aExports, iVisible); //$NON-NLS-1$
}
public void testSubstitutableExports008() throws BundleException {
State state = getSubstituteUsesReexportState();
state.resolve();
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
BundleDescription h = state.getBundle(8);
BundleDescription i = state.getBundle(9);
BundleDescription j = state.getBundle(10);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
assertFalse("1.9", j.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 2, hVisible.length); //$NON-NLS-1$
assertEquals("iVisible wrong number", 2, iVisible.length); //$NON-NLS-1$
assertEquals("jVisible wrong number", 0, jVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
assertEquals("hVisible not correct", aExports, hVisible); //$NON-NLS-1$
assertEquals("iVisible not correct", aExports, iVisible); //$NON-NLS-1$
}
public void testSubstitutableExports009() throws BundleException {
State state = getSubstituteUsesReexportCycleState();
state.resolve();
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
BundleDescription h = state.getBundle(8);
BundleDescription i = state.getBundle(9);
BundleDescription j = state.getBundle(10);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 2, hVisible.length); //$NON-NLS-1$
assertEquals("iVisible wrong number", 2, iVisible.length); //$NON-NLS-1$
assertEquals("jVisible wrong number", 2, jVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("aExports count wrong", 2, aExports.length); //$NON-NLS-1$
ExportPackageDescription[] jExports = j.getSelectedExports();
assertEquals("aExports count wrong", 1, jExports.length); //$NON-NLS-1$
ExportPackageDescription[] bcExpected = new ExportPackageDescription[] {aExports[0], aExports[1], jExports[0]};
assertEquals("aVisible not correct", jExports, aVisible); //$NON-NLS-1$
assertEquals("bVisible not correct", bcExpected, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", bcExpected, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
assertEquals("hVisible not correct", aExports, hVisible); //$NON-NLS-1$
assertEquals("iVisible not correct", aExports, iVisible); //$NON-NLS-1$
assertEquals("jVisible not correct", aExports, jVisible); //$NON-NLS-1$
}
public void testSubstitutableExports010() throws BundleException {
State state = getSubstituteBasicState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
BundleDescription[] allBundles = new BundleDescription[] {a, b, c, d, e, f};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 6, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < allBundles.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == allBundles[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allBundles[i]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
}
public void testSubstitutableExports011() throws BundleException {
State state = getSubstituteUsesState();
state.resolve();
BundleDescription z = state.getBundle(0);
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 6, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < allRefreshBundles.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {z});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
}
public void testSubstitutableExports012() throws BundleException {
State state = getSubstituteUsesCycleState();
state.resolve();
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
BundleDescription h = state.getBundle(8);
BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f, g, h};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 8, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < allRefreshBundles.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {c});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 8, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < allRefreshBundles.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
}
}
}
public void testSubstitutableExports013() throws BundleException {
State state = getSubstituteBasicFragState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription aFrag = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription bFrag = state.getBundle(3);
BundleDescription c = state.getBundle(4);
BundleDescription cFrag = state.getBundle(5);
BundleDescription d = state.getBundle(6);
BundleDescription e = state.getBundle(7);
BundleDescription f = state.getBundle(8);
BundleDescription[] allBundles = new BundleDescription[] {a, aFrag, b, bFrag, c, cFrag, d, e, f};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 9, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < allBundles.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == allBundles[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allBundles[i]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {c});
bundleDeltas = stateDelta.getChanges();
BundleDescription[] expectedRefresh = new BundleDescription[] {c, cFrag, f};
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 3, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < expectedRefresh.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == expectedRefresh[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[i]); //$NON-NLS-1$
}
}
}
public void testSubstitutableExports014() throws BundleException {
State state = getSubstituteUsesFragState();
state.resolve();
BundleDescription z = state.getBundle(0);
BundleDescription a = state.getBundle(1);
BundleDescription aFrag = state.getBundle(2);
BundleDescription b = state.getBundle(3);
BundleDescription bFrag = state.getBundle(4);
BundleDescription c = state.getBundle(5);
BundleDescription cFrag = state.getBundle(6);
BundleDescription d = state.getBundle(7);
BundleDescription e = state.getBundle(8);
BundleDescription f = state.getBundle(9);
//BundleDescription g = state.getBundle(10);
BundleDescription[] allRefreshBundles = new BundleDescription[] {a, aFrag, b, bFrag, c, cFrag, d, e, f};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < allRefreshBundles.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {z});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {c});
bundleDeltas = stateDelta.getChanges();
BundleDescription[] expectedRefresh = new BundleDescription[] {c, cFrag, f};
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 3, bundleDeltas.length); //$NON-NLS-1$
for (int i = 0; i < expectedRefresh.length; i++) {
boolean found = false;
for (int j = 0; j < bundleDeltas.length && !found; j++) {
assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
found = bundleDeltas[j].getBundle() == expectedRefresh[i];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[i]); //$NON-NLS-1$
}
}
}
public void testSubstitutableExports015() throws BundleException {
State state = getSubstituteUsesFragCycleState();
state.resolve();
// BundleDescription z = state.getBundle(0);
BundleDescription a = state.getBundle(1);
BundleDescription aFrag = state.getBundle(2);
BundleDescription b = state.getBundle(3);
BundleDescription bFrag = state.getBundle(4);
BundleDescription c = state.getBundle(5);
BundleDescription cFrag = state.getBundle(6);
BundleDescription d = state.getBundle(7);
BundleDescription e = state.getBundle(8);
BundleDescription f = state.getBundle(9);
BundleDescription g = state.getBundle(10);
BundleDescription h = state.getBundle(11);
BundleDescription i = state.getBundle(12);
BundleDescription[] allRefreshBundles = new BundleDescription[] {a, aFrag, b, bFrag, c, cFrag, d, e, f, g, h, i};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int j = 0; j < allRefreshBundles.length; j++) {
boolean found = false;
for (int k = 0; k < bundleDeltas.length && !found; k++) {
assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
found = bundleDeltas[k].getBundle() == allRefreshBundles[j];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[j]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {c});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int j = 0; j < allRefreshBundles.length; j++) {
boolean found = false;
for (int k = 0; k < bundleDeltas.length && !found; k++) {
assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
found = bundleDeltas[k].getBundle() == allRefreshBundles[j];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[j]); //$NON-NLS-1$
}
}
}
public void testSubstitutableExports016() throws BundleException {
State state = getSubstituteBasicReexportState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
BundleDescription g = state.getBundle(6);
BundleDescription h = state.getBundle(7);
BundleDescription i = state.getBundle(8);
BundleDescription[] allBundles = new BundleDescription[] {a, b, c, d, e, f, g, h, i};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int j = 0; j < allBundles.length; j++) {
boolean found = false;
for (int k = 0; k < bundleDeltas.length && !found; k++) {
assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
found = bundleDeltas[k].getBundle() == allBundles[j];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allBundles[j]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
BundleDescription[] expectedRefresh = new BundleDescription[] {f, i};
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", expectedRefresh.length, bundleDeltas.length); //$NON-NLS-1$
for (int j = 0; j < expectedRefresh.length; j++) {
boolean found = false;
for (int k = 0; k < bundleDeltas.length && !found; k++) {
assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
found = bundleDeltas[k].getBundle() == expectedRefresh[j];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[j]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {i});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
}
public void testSubstitutableExports017() throws BundleException {
State state = getSubstituteUsesReexportState();
state.resolve();
BundleDescription z = state.getBundle(0);
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
BundleDescription h = state.getBundle(8);
BundleDescription i = state.getBundle(9);
//BundleDescription j = state.getBundle(10);
BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f, g, h, i};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int l = 0; l < allRefreshBundles.length; l++) {
boolean found = false;
for (int m = 0; m < bundleDeltas.length && !found; m++) {
assertEquals("unexpected delta type " + bundleDeltas[m], BundleDelta.RESOLVED, bundleDeltas[m].getType()); //$NON-NLS-1$
found = bundleDeltas[m].getBundle() == allRefreshBundles[l];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[l]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {f});
bundleDeltas = stateDelta.getChanges();
BundleDescription[] expectedRefresh = new BundleDescription[] {f, i};
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", expectedRefresh.length, bundleDeltas.length); //$NON-NLS-1$
for (int l = 0; l < expectedRefresh.length; l++) {
boolean found = false;
for (int m = 0; m < bundleDeltas.length && !found; m++) {
assertEquals("unexpected delta type " + bundleDeltas[m], BundleDelta.RESOLVED, bundleDeltas[m].getType()); //$NON-NLS-1$
found = bundleDeltas[m].getBundle() == expectedRefresh[l];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[l]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {i});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {z});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
}
public void testSubstitutableExports018() throws BundleException {
State state = getSubstituteUsesReexportCycleState();
state.resolve();
BundleDescription a = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription c = state.getBundle(3);
BundleDescription d = state.getBundle(4);
BundleDescription e = state.getBundle(5);
BundleDescription f = state.getBundle(6);
BundleDescription g = state.getBundle(7);
BundleDescription h = state.getBundle(8);
BundleDescription i = state.getBundle(9);
BundleDescription j = state.getBundle(10);
BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f, g, h, i, j};
StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
BundleDelta[] bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int k = 0; k < allRefreshBundles.length; k++) {
boolean found = false;
for (int l = 0; l < bundleDeltas.length && !found; l++) {
assertEquals("unexpected delta type " + bundleDeltas[l], BundleDelta.RESOLVED, bundleDeltas[l].getType()); //$NON-NLS-1$
found = bundleDeltas[l].getBundle() == allRefreshBundles[k];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[k]); //$NON-NLS-1$
}
}
stateDelta = state.resolve(new BundleDescription[] {i});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
stateDelta = state.resolve(new BundleDescription[] {c});
bundleDeltas = stateDelta.getChanges();
assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
for (int k = 0; k < allRefreshBundles.length; k++) {
boolean found = false;
for (int l = 0; l < bundleDeltas.length && !found; l++) {
assertEquals("unexpected delta type " + bundleDeltas[l], BundleDelta.RESOLVED, bundleDeltas[l].getType()); //$NON-NLS-1$
found = bundleDeltas[l].getBundle() == allRefreshBundles[k];
}
if (!found) {
fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[k]); //$NON-NLS-1$
}
}
}
public void testSubstitutableExports019() throws BundleException {
State state = getSubstituteUnresolvedFragState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription aFrag = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription bFrag = state.getBundle(3);
BundleDescription c = state.getBundle(4);
BundleDescription cFrag = state.getBundle(5);
BundleDescription d = state.getBundle(6);
BundleDescription e = state.getBundle(7);
BundleDescription f = state.getBundle(8);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertFalse("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertFalse("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertFalse("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("bFragVisible wrong number", 0, bFragVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("cFragVisible wrong number", 0, cFragVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("a has wrong number of exports", 2, aExports.length); //$NON-NLS-1$
assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports020() throws BundleException {
State state = getSubstituteUnresolvedFragState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription aFrag = state.getBundle(1);
BundleDescription b = state.getBundle(2);
BundleDescription bFrag = state.getBundle(3);
BundleDescription c = state.getBundle(4);
BundleDescription cFrag = state.getBundle(5);
BundleDescription d = state.getBundle(6);
BundleDescription e = state.getBundle(7);
BundleDescription f = state.getBundle(8);
// add a bundle to resolve the fragments import of q
Hashtable manifest = new Hashtable();
manifest.clear();
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Q"); //$NON-NLS-1$
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
manifest.put(Constants.EXPORT_PACKAGE, "q; version=1.0"); //$NON-NLS-1$
BundleDescription q = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), f.getBundleId() + 1);
state.addBundle(q);
state.resolve(new BundleDescription[] {a});
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("aFragVisible wrong number", 1, aFragVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("bFragVisible wrong number", 2, bFragVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("cFragVisible wrong number", 2, cFragVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
ExportPackageDescription[] aFragExpected = new ExportPackageDescription[] {aExports[2], q.getExportPackages()[0]};
assertEquals("aFragVisible not correct", q.getSelectedExports(), aFragVisible); //$NON-NLS-1$
assertEquals("bVisible not correct", aDeclaredExports, bVisible); //$NON-NLS-1$
assertEquals("bFragVisible not correct", aFragExpected, bFragVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aDeclaredExports, cVisible); //$NON-NLS-1$
assertEquals("cFragVisible not correct", aFragExpected, cFragVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports021() throws BundleException {
State state = getSubstituteBasicState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
state.removeBundle(a);
state.resolve(new BundleDescription[] {a});
assertFalse("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertFalse("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertEquals("bVisible wrong number", 0, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 0, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
ExportPackageDescription[] bExports = b.getSelectedExports();
assertEquals("cVisible not correct", bExports, cVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", bExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", bExports, fVisible); //$NON-NLS-1$
}
public void testSubstitutableExports022() throws BundleException {
State state = getSubstituteSplitState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
BundleDescription g = state.getBundle(6);
BundleDescription h = state.getBundle(7);
BundleDescription i = state.getBundle(8);
BundleDescription j = state.getBundle(9);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 4, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 4, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 4, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 4, hVisible.length); //$NON-NLS-1$
assertEquals("iVisible wrong number", 4, iVisible.length); //$NON-NLS-1$
assertEquals("jVisible wrong number", 4, jVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
ExportPackageDescription[] aExported = a.getSelectedExports();
ExportPackageDescription[] dExported = d.getSelectedExports();
ExportPackageDescription[] expected = new ExportPackageDescription[aExported.length + dExported.length];
System.arraycopy(aExported, 0, expected, 0, aExported.length);
System.arraycopy(dExported, 0, expected, aExported.length, dExported.length);
for (int index = 0; index < expected.length; index++) {
assertContains("eVisible not correct", eVisible, expected[index]); //$NON-NLS-1$
assertContains("fVisible not correct", fVisible, expected[index]); //$NON-NLS-1$
assertContains("gVisible not correct", gVisible, expected[index]); //$NON-NLS-1$
assertContains("hVisible not correct", hVisible, expected[index]); //$NON-NLS-1$
assertContains("iVisible not correct", iVisible, expected[index]); //$NON-NLS-1$
assertContains("jVisible not correct", jVisible, expected[index]); //$NON-NLS-1$
}
}
public void testSubstitutableExports023() throws BundleException {
State state = getSubstituteSplitUsesState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
BundleDescription g = state.getBundle(6);
BundleDescription h = state.getBundle(7);
BundleDescription i = state.getBundle(8);
BundleDescription j = state.getBundle(9);
BundleDescription k = state.getBundle(10);
BundleDescription l = state.getBundle(11);
BundleDescription m = state.getBundle(12);
BundleDescription n = state.getBundle(13);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
assertTrue("1.9", k.isResolved()); //$NON-NLS-1$
assertTrue("1.9", l.isResolved()); //$NON-NLS-1$
assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
assertTrue("1.9", n.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
ExportPackageDescription[] kVisible = state.getStateHelper().getVisiblePackages(k);
ExportPackageDescription[] lVisible = state.getStateHelper().getVisiblePackages(l);
ExportPackageDescription[] mVisible = state.getStateHelper().getVisiblePackages(m);
ExportPackageDescription[] nVisible = state.getStateHelper().getVisiblePackages(n);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
assertNotNull("kVisible is null", kVisible); //$NON-NLS-1$
assertNotNull("lVisible is null", lVisible); //$NON-NLS-1$
assertNotNull("mVisible is null", mVisible); //$NON-NLS-1$
assertNotNull("nVisible is null", nVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 5, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 5, fVisible.length); //$NON-NLS-1$
assertEquals("gVisible wrong number", 4, gVisible.length); //$NON-NLS-1$
assertEquals("hVisible wrong number", 4, hVisible.length); //$NON-NLS-1$
assertEquals("iVisible wrong number", 4, iVisible.length); //$NON-NLS-1$
assertEquals("jVisible wrong number", 4, jVisible.length); //$NON-NLS-1$
assertEquals("kVisible wrong number", 0, kVisible.length); //$NON-NLS-1$
assertEquals("lVisible wrong number", 0, lVisible.length); //$NON-NLS-1$
assertEquals("mVisible wrong number", 6, mVisible.length); //$NON-NLS-1$
assertEquals("nVisible wrong number", 6, nVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("aExports wrong number", 2, aExports.length); //$NON-NLS-1$
ExportPackageDescription[] bcExpected = new ExportPackageDescription[] {aExports[0], aExports[1], l.getSelectedExports()[0]};
ExportPackageDescription[] aExpected = new ExportPackageDescription[] {l.getSelectedExports()[0]};
assertEquals("aVisible not correct", aExpected, aVisible); //$NON-NLS-1$
assertEquals("bVisible not correct", bcExpected, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", bcExpected, cVisible); //$NON-NLS-1$
ExportPackageDescription[] dExpected = new ExportPackageDescription[] {l.getSelectedExports()[1], aExports[0], aExports[1]};
assertEquals("dVisible not correct", dExpected, dVisible); //$NON-NLS-1$
ExportPackageDescription[] aExported = a.getSelectedExports();
ExportPackageDescription[] dExported = d.getSelectedExports();
ExportPackageDescription[] efExpected = new ExportPackageDescription[aExported.length + dExported.length + 1];
System.arraycopy(aExported, 0, efExpected, 0, aExported.length);
System.arraycopy(dExported, 0, efExpected, aExported.length, dExported.length);
efExpected[aExported.length + dExported.length] = l.getSelectedExports()[1];
for (int index = 0; index < efExpected.length; index++) {
assertContains("eVisible not correct", eVisible, efExpected[index]); //$NON-NLS-1$
assertContains("fVisible not correct", fVisible, efExpected[index]); //$NON-NLS-1$
}
ExportPackageDescription[] ghijExpected = new ExportPackageDescription[aExported.length + dExported.length];
System.arraycopy(aExported, 0, ghijExpected, 0, aExported.length);
System.arraycopy(dExported, 0, ghijExpected, aExported.length, dExported.length);
for (int index = 0; index < ghijExpected.length; index++) {
assertContains("gVisible not correct", gVisible, ghijExpected[index]); //$NON-NLS-1$
assertContains("hVisible not correct", hVisible, ghijExpected[index]); //$NON-NLS-1$
assertContains("iVisible not correct", iVisible, ghijExpected[index]); //$NON-NLS-1$
assertContains("jVisible not correct", jVisible, ghijExpected[index]); //$NON-NLS-1$
}
ExportPackageDescription[] lExported = l.getSelectedExports();
ExportPackageDescription[] mnExpected = new ExportPackageDescription[aExported.length + dExported.length + lExported.length];
System.arraycopy(aExported, 0, mnExpected, 0, aExported.length);
System.arraycopy(dExported, 0, mnExpected, aExported.length, dExported.length);
System.arraycopy(lExported, 0, mnExpected, aExported.length + dExported.length, lExported.length);
for (int index = 0; index < mnExpected.length; index++) {
assertContains("mVisible not correct", mVisible, mnExpected[index]); //$NON-NLS-1$
assertContains("nVisible not correct", nVisible, mnExpected[index]); //$NON-NLS-1$
}
}
public void testSubstitutableExports024() throws BundleException {
State state = getNonOverlapingSubstituteBasicState();
state.resolve();
BundleDescription a = state.getBundle(0);
BundleDescription b = state.getBundle(1);
BundleDescription c = state.getBundle(2);
BundleDescription d = state.getBundle(3);
BundleDescription e = state.getBundle(4);
BundleDescription f = state.getBundle(5);
assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
ExportPackageDescription[] aExports = a.getSelectedExports();
assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
}
}