|
Lines 1-5
Link Here
|
| 1 |
/******************************************************************************* |
1 |
/******************************************************************************* |
| 2 |
* Copyright (c) 2003, 2010 IBM Corporation and others. |
2 |
* Copyright (c) 2003, 2011 IBM Corporation and others. |
| 3 |
* All rights reserved. This program and the accompanying materials |
3 |
* All rights reserved. This program and the accompanying materials |
| 4 |
* are made available under the terms of the Eclipse Public License v1.0 |
4 |
* are made available under the terms of the Eclipse Public License v1.0 |
| 5 |
* which accompanies this distribution, and is available at |
5 |
* which accompanies this distribution, and is available at |
|
Lines 10-17
Link Here
|
| 10 |
*******************************************************************************/ |
10 |
*******************************************************************************/ |
| 11 |
package org.eclipse.osgi.tests.services.resolver; |
11 |
package org.eclipse.osgi.tests.services.resolver; |
| 12 |
|
12 |
|
| 13 |
import java.util.Dictionary; |
13 |
import java.util.*; |
| 14 |
import java.util.Hashtable; |
|
|
| 15 |
import junit.framework.Test; |
14 |
import junit.framework.Test; |
| 16 |
import junit.framework.TestSuite; |
15 |
import junit.framework.TestSuite; |
| 17 |
import org.eclipse.osgi.service.resolver.*; |
16 |
import org.eclipse.osgi.service.resolver.*; |
|
Lines 19-26
Link Here
|
| 19 |
import org.osgi.framework.Constants; |
18 |
import org.osgi.framework.Constants; |
| 20 |
|
19 |
|
| 21 |
public class GenericCapabilityTest extends AbstractStateTest { |
20 |
public class GenericCapabilityTest extends AbstractStateTest { |
| 22 |
private static final String GENERIC_REQUIRE = "Eclipse-GenericRequire"; //$NON-NLS-1$ |
21 |
static final String GENERIC_REQUIRE = "Eclipse-GenericRequire"; //$NON-NLS-1$ |
| 23 |
private static final String GENERIC_CAPABILITY = "Eclipse-GenericCapability"; //$NON-NLS-1$ |
22 |
static final String GENERIC_CAPABILITY = "Eclipse-GenericCapability"; //$NON-NLS-1$ |
| 24 |
|
23 |
|
| 25 |
public static Test suite() { |
24 |
public static Test suite() { |
| 26 |
return new TestSuite(GenericCapabilityTest.class); |
25 |
return new TestSuite(GenericCapabilityTest.class); |
|
Lines 35-41
Link Here
|
| 35 |
Hashtable manifest = new Hashtable(); |
34 |
Hashtable manifest = new Hashtable(); |
| 36 |
long bundleID = 0; |
35 |
long bundleID = 0; |
| 37 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
36 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 38 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
37 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 39 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
38 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 40 |
StringBuffer capabililty = new StringBuffer(); |
39 |
StringBuffer capabililty = new StringBuffer(); |
| 41 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
40 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
|
Lines 55-60
Link Here
|
| 55 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
54 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
| 56 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
55 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 57 |
StringBuffer required = new StringBuffer(); |
56 |
StringBuffer required = new StringBuffer(); |
|
|
57 |
required.append("genericCapability:osgi.identity; selection-filter=\"(version=1.0)\","); |
| 58 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
58 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
| 59 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
59 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
| 60 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\""); |
60 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\""); |
|
Lines 68-80
Link Here
|
| 68 |
assertTrue("1.0", genCap.isResolved()); |
68 |
assertTrue("1.0", genCap.isResolved()); |
| 69 |
assertTrue("1.1", genReq.isResolved()); |
69 |
assertTrue("1.1", genReq.isResolved()); |
| 70 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
70 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 71 |
assertTrue("2.0", genSpecs.length == 3); |
71 |
assertTrue("2.0", genSpecs.length == 4); |
| 72 |
assertTrue("2.1", genSpecs[0].isResolved()); |
72 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 73 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
73 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
| 74 |
assertTrue("2.2", genSpecs[1].isResolved()); |
74 |
assertTrue("2.2", genSpecs[1].isResolved()); |
| 75 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
75 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
| 76 |
assertTrue("2.3", genSpecs[2].isResolved()); |
76 |
assertTrue("2.3", genSpecs[2].isResolved()); |
| 77 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
77 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
|
|
78 |
assertTrue("2.4", genSpecs[3].isResolved()); |
| 79 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), genCap.getGenericCapabilities()[3]); |
| 78 |
} |
80 |
} |
| 79 |
|
81 |
|
| 80 |
public void testGenericsUpdate() throws BundleException { |
82 |
public void testGenericsUpdate() throws BundleException { |
|
Lines 82-88
Link Here
|
| 82 |
Hashtable manifest = new Hashtable(); |
84 |
Hashtable manifest = new Hashtable(); |
| 83 |
long bundleID = 0; |
85 |
long bundleID = 0; |
| 84 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
86 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 85 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
87 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 86 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
88 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 87 |
StringBuffer capabililty = new StringBuffer(); |
89 |
StringBuffer capabililty = new StringBuffer(); |
| 88 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
90 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
|
Lines 102-107
Link Here
|
| 102 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
104 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
| 103 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
105 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 104 |
StringBuffer required = new StringBuffer(); |
106 |
StringBuffer required = new StringBuffer(); |
|
|
107 |
required.append("genericCapability:osgi.identity; selection-filter=\"(version>=1.0)\","); |
| 105 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
108 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
| 106 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
109 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
| 107 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\""); |
110 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\""); |
|
Lines 115-131
Link Here
|
| 115 |
assertTrue("1.0", genCap.isResolved()); |
118 |
assertTrue("1.0", genCap.isResolved()); |
| 116 |
assertTrue("1.1", genReq.isResolved()); |
119 |
assertTrue("1.1", genReq.isResolved()); |
| 117 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
120 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 118 |
assertTrue("2.0", genSpecs.length == 3); |
121 |
assertTrue("2.0", genSpecs.length == 4); |
| 119 |
assertTrue("2.1", genSpecs[0].isResolved()); |
122 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 120 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
123 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
| 121 |
assertTrue("2.2", genSpecs[1].isResolved()); |
124 |
assertTrue("2.2", genSpecs[1].isResolved()); |
| 122 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
125 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
| 123 |
assertTrue("2.3", genSpecs[2].isResolved()); |
126 |
assertTrue("2.3", genSpecs[2].isResolved()); |
| 124 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
127 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
|
|
128 |
assertTrue("2.4", genSpecs[3].isResolved()); |
| 129 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), genCap.getGenericCapabilities()[3]); |
| 125 |
|
130 |
|
| 126 |
manifest.clear(); |
131 |
manifest.clear(); |
| 127 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
132 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 128 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
133 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 129 |
manifest.put(Constants.BUNDLE_VERSION, "2.0.0"); |
134 |
manifest.put(Constants.BUNDLE_VERSION, "2.0.0"); |
| 130 |
capabililty = new StringBuffer(); |
135 |
capabililty = new StringBuffer(); |
| 131 |
capabililty.append("foo; version=\"1.3.2\"; attr1=\"value1\"; attr2=\"value2\","); |
136 |
capabililty.append("foo; version=\"1.3.2\"; attr1=\"value1\"; attr2=\"value2\","); |
|
Lines 146-158
Link Here
|
| 146 |
assertTrue("3.0", genCap2.isResolved()); |
151 |
assertTrue("3.0", genCap2.isResolved()); |
| 147 |
assertTrue("3.1", genReq.isResolved()); |
152 |
assertTrue("3.1", genReq.isResolved()); |
| 148 |
genSpecs = genReq.getGenericRequires(); |
153 |
genSpecs = genReq.getGenericRequires(); |
| 149 |
assertTrue("4.0", genSpecs.length == 3); |
154 |
assertTrue("4.0", genSpecs.length == 4); |
| 150 |
assertTrue("4.1", genSpecs[0].isResolved()); |
155 |
assertTrue("4.1", genSpecs[0].isResolved()); |
| 151 |
assertEquals("4.1.1", genSpecs[0].getSupplier(), genCap2.getGenericCapabilities()[0]); |
156 |
assertEquals("4.1.1", genSpecs[0].getSupplier(), genCap2.getGenericCapabilities()[0]); |
| 152 |
assertTrue("4.2", genSpecs[1].isResolved()); |
157 |
assertTrue("4.2", genSpecs[1].isResolved()); |
| 153 |
assertEquals("4.2.1", genSpecs[1].getSupplier(), genCap2.getGenericCapabilities()[1]); |
158 |
assertEquals("4.2.1", genSpecs[1].getSupplier(), genCap2.getGenericCapabilities()[1]); |
| 154 |
assertTrue("4.3", genSpecs[2].isResolved()); |
159 |
assertTrue("4.3", genSpecs[2].isResolved()); |
| 155 |
assertEquals("4.3.1", genSpecs[2].getSupplier(), genCap2.getGenericCapabilities()[2]); |
160 |
assertEquals("4.3.1", genSpecs[2].getSupplier(), genCap2.getGenericCapabilities()[2]); |
|
|
161 |
assertTrue("4.4", genSpecs[3].isResolved()); |
| 162 |
assertEquals("4.4.1", genSpecs[3].getSupplier(), genCap2.getGenericCapabilities()[3]); |
| 156 |
|
163 |
|
| 157 |
} |
164 |
} |
| 158 |
|
165 |
|
|
Lines 161-167
Link Here
|
| 161 |
Hashtable manifest = new Hashtable(); |
168 |
Hashtable manifest = new Hashtable(); |
| 162 |
long bundleID = 0; |
169 |
long bundleID = 0; |
| 163 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
170 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 164 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
171 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 165 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
172 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 166 |
StringBuffer capabililty = new StringBuffer(); |
173 |
StringBuffer capabililty = new StringBuffer(); |
| 167 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
174 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
|
Lines 181-186
Link Here
|
| 181 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
188 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
| 182 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
189 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 183 |
StringBuffer required = new StringBuffer(); |
190 |
StringBuffer required = new StringBuffer(); |
|
|
191 |
required.append("genericCapability:osgi.identity; selection-filter=\"(version>=1.0)\","); |
| 184 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
192 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
| 185 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
193 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
| 186 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\""); |
194 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\""); |
|
Lines 194-219
Link Here
|
| 194 |
assertTrue("1.0", genCap.isResolved()); |
202 |
assertTrue("1.0", genCap.isResolved()); |
| 195 |
assertTrue("1.1", genReq.isResolved()); |
203 |
assertTrue("1.1", genReq.isResolved()); |
| 196 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
204 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 197 |
assertTrue("2.0", genSpecs.length == 3); |
205 |
assertTrue("2.0", genSpecs.length == 4); |
| 198 |
assertTrue("2.1", genSpecs[0].isResolved()); |
206 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 199 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
207 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
| 200 |
assertTrue("2.2", genSpecs[1].isResolved()); |
208 |
assertTrue("2.2", genSpecs[1].isResolved()); |
| 201 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
209 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
| 202 |
assertTrue("2.3", genSpecs[2].isResolved()); |
210 |
assertTrue("2.3", genSpecs[2].isResolved()); |
| 203 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
211 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
|
|
212 |
assertTrue("2.4", genSpecs[3].isResolved()); |
| 213 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), genCap.getGenericCapabilities()[3]); |
| 204 |
|
214 |
|
| 205 |
state.resolve(new BundleDescription[] {genCap}); |
215 |
state.resolve(new BundleDescription[] {genCap}); |
| 206 |
|
216 |
|
| 207 |
assertTrue("3.0", genCap.isResolved()); |
217 |
assertTrue("3.0", genCap.isResolved()); |
| 208 |
assertTrue("3.1", genReq.isResolved()); |
218 |
assertTrue("3.1", genReq.isResolved()); |
| 209 |
genSpecs = genReq.getGenericRequires(); |
219 |
genSpecs = genReq.getGenericRequires(); |
| 210 |
assertTrue("4.0", genSpecs.length == 3); |
220 |
assertTrue("4.0", genSpecs.length == 4); |
| 211 |
assertTrue("4.1", genSpecs[0].isResolved()); |
221 |
assertTrue("4.1", genSpecs[0].isResolved()); |
| 212 |
assertEquals("4.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
222 |
assertEquals("4.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
| 213 |
assertTrue("4.2", genSpecs[1].isResolved()); |
223 |
assertTrue("4.2", genSpecs[1].isResolved()); |
| 214 |
assertEquals("4.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
224 |
assertEquals("4.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
| 215 |
assertTrue("4.3", genSpecs[2].isResolved()); |
225 |
assertTrue("4.3", genSpecs[2].isResolved()); |
| 216 |
assertEquals("4.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
226 |
assertEquals("4.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
|
|
227 |
assertTrue("4.4", genSpecs[3].isResolved()); |
| 228 |
assertEquals("4.4.1", genSpecs[3].getSupplier(), genCap.getGenericCapabilities()[3]); |
| 217 |
|
229 |
|
| 218 |
} |
230 |
} |
| 219 |
|
231 |
|
|
Lines 223-229
Link Here
|
| 223 |
long bundleID = 0; |
235 |
long bundleID = 0; |
| 224 |
|
236 |
|
| 225 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
237 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 226 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
238 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 227 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
239 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 228 |
StringBuffer capabililty = new StringBuffer(); |
240 |
StringBuffer capabililty = new StringBuffer(); |
| 229 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
241 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
|
Lines 241-247
Link Here
|
| 241 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
253 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 242 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability.frag1"); |
254 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability.frag1"); |
| 243 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
255 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 244 |
manifest.put(Constants.FRAGMENT_HOST, "genericCapablity;bundle-version=\"[1.0.0,2.0.0)\""); |
256 |
manifest.put(Constants.FRAGMENT_HOST, "genericCapability;bundle-version=\"[1.0.0,2.0.0)\""); |
| 245 |
capabililty = new StringBuffer(); |
257 |
capabililty = new StringBuffer(); |
| 246 |
capabililty.append("fragmentStuff"); |
258 |
capabililty.append("fragmentStuff"); |
| 247 |
manifest.put(GENERIC_CAPABILITY, capabililty.toString()); |
259 |
manifest.put(GENERIC_CAPABILITY, capabililty.toString()); |
|
Lines 252-260
Link Here
|
| 252 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
264 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
| 253 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
265 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 254 |
StringBuffer required = new StringBuffer(); |
266 |
StringBuffer required = new StringBuffer(); |
|
|
267 |
required.append("genericCapability:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.bundle))\","); |
| 255 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
268 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
| 256 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
269 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
| 257 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\","); |
270 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\","); |
|
|
271 |
required.append("genericCapability.frag1:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.fragment))\","); |
| 258 |
required.append("fragmentStuff"); |
272 |
required.append("fragmentStuff"); |
| 259 |
manifest.put(GENERIC_REQUIRE, required.toString()); |
273 |
manifest.put(GENERIC_REQUIRE, required.toString()); |
| 260 |
BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++); |
274 |
BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++); |
|
Lines 269-276
Link Here
|
| 269 |
assertTrue("1.2", genCapFrag.isResolved()); |
283 |
assertTrue("1.2", genCapFrag.isResolved()); |
| 270 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
284 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 271 |
GenericDescription[] selectedCapabilities = genCap.getSelectedGenericCapabilities(); |
285 |
GenericDescription[] selectedCapabilities = genCap.getSelectedGenericCapabilities(); |
| 272 |
assertTrue("2.0", genSpecs.length == 4); |
286 |
assertTrue("2.0", genSpecs.length == 6); |
| 273 |
assertEquals("Wrong number of selected capabilities", 4, selectedCapabilities.length); |
287 |
assertEquals("Wrong number of selected capabilities", 6, selectedCapabilities.length); |
| 274 |
assertTrue("2.1", genSpecs[0].isResolved()); |
288 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 275 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), selectedCapabilities[0]); |
289 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), selectedCapabilities[0]); |
| 276 |
assertTrue("2.2", genSpecs[1].isResolved()); |
290 |
assertTrue("2.2", genSpecs[1].isResolved()); |
|
Lines 279-284
Link Here
|
| 279 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), selectedCapabilities[2]); |
293 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), selectedCapabilities[2]); |
| 280 |
assertTrue("2.4", genSpecs[3].isResolved()); |
294 |
assertTrue("2.4", genSpecs[3].isResolved()); |
| 281 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), selectedCapabilities[3]); |
295 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), selectedCapabilities[3]); |
|
|
296 |
assertTrue("2.5", genSpecs[4].isResolved()); |
| 297 |
assertEquals("2.5.1", genSpecs[4].getSupplier(), selectedCapabilities[4]); |
| 298 |
assertTrue("2.6", genSpecs[5].isResolved()); |
| 299 |
assertEquals("2.6.1", genSpecs[5].getSupplier(), selectedCapabilities[5]); |
| 282 |
} |
300 |
} |
| 283 |
|
301 |
|
| 284 |
public void testGenericsIntraFrags() throws BundleException { |
302 |
public void testGenericsIntraFrags() throws BundleException { |
|
Lines 304-310
Link Here
|
| 304 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.equinox.generic.frag.b"); |
322 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.equinox.generic.frag.b"); |
| 305 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
323 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 306 |
manifest.put(Constants.FRAGMENT_HOST, "org.eclipse.equinox.generic.host;bundle-version=\"1.0.0\""); |
324 |
manifest.put(Constants.FRAGMENT_HOST, "org.eclipse.equinox.generic.host;bundle-version=\"1.0.0\""); |
| 307 |
manifest.put("Eclipse-GenericRequire", "frag.a"); |
325 |
StringBuffer required = new StringBuffer(); |
|
|
326 |
required.append("org.eclipse.equinox.generic.host:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.bundle))\","); |
| 327 |
required.append("frag.a,"); |
| 328 |
required.append("org.eclipse.equinox.generic.frag.a:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.fragment))\","); |
| 329 |
required.append("org.eclipse.equinox.generic.frag.b:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.fragment))\""); |
| 330 |
manifest.put(GENERIC_REQUIRE, required.toString()); |
| 308 |
BundleDescription genFragB = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++); |
331 |
BundleDescription genFragB = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++); |
| 309 |
|
332 |
|
| 310 |
state.addBundle(genHost); |
333 |
state.addBundle(genHost); |
|
Lines 317-326
Link Here
|
| 317 |
assertTrue("1.2", genFragB.isResolved()); |
340 |
assertTrue("1.2", genFragB.isResolved()); |
| 318 |
GenericSpecification[] genSpecs = genFragB.getGenericRequires(); |
341 |
GenericSpecification[] genSpecs = genFragB.getGenericRequires(); |
| 319 |
GenericDescription[] selected = genHost.getSelectedGenericCapabilities(); |
342 |
GenericDescription[] selected = genHost.getSelectedGenericCapabilities(); |
| 320 |
assertEquals("Wrong number of selected", 1, selected.length); |
343 |
assertEquals("Wrong number of selected", 1 + 3, selected.length); // + 3 for host frabA and fragB osgi.identity cap |
| 321 |
assertTrue("2.0", genSpecs.length == 1); |
344 |
assertTrue("2.0", genSpecs.length == 4); |
| 322 |
assertTrue("2.1", genSpecs[0].isResolved()); |
345 |
Collection providedCollection = new ArrayList(Arrays.asList(selected)); |
| 323 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), selected[0]); |
346 |
for (int i = 0; i < genSpecs.length; i++) { |
|
|
347 |
assertTrue("2.1." + i, genSpecs[i].isResolved()); |
| 348 |
assertTrue("Wrong provider for requirement: " + genSpecs[i], providedCollection.remove(genSpecs[i].getSupplier())); |
| 349 |
} |
| 324 |
} |
350 |
} |
| 325 |
|
351 |
|
| 326 |
public void testGenericsAliases() throws BundleException { |
352 |
public void testGenericsAliases() throws BundleException { |
|
Lines 333-339
Link Here
|
| 333 |
Hashtable manifest = new Hashtable(); |
359 |
Hashtable manifest = new Hashtable(); |
| 334 |
long bundleID = 0; |
360 |
long bundleID = 0; |
| 335 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
361 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 336 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
362 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 337 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
363 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 338 |
manifest.put(Constants.EXPORT_SERVICE, "org.osgi.service.log.LogService; version=1.2"); |
364 |
manifest.put(Constants.EXPORT_SERVICE, "org.osgi.service.log.LogService; version=1.2"); |
| 339 |
manifest.put("TJW-Export", "my.great.stuff; aLong:long=5150; aDouble:double=3.14; aVersion:version=1.2.0"); |
365 |
manifest.put("TJW-Export", "my.great.stuff; aLong:long=5150; aDouble:double=3.14; aVersion:version=1.2.0"); |
|
Lines 345-350
Link Here
|
| 345 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
371 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 346 |
manifest.put(Constants.IMPORT_SERVICE, "org.osgi.service.log.LogService; selection-filter=(version>=1.0.0)"); |
372 |
manifest.put(Constants.IMPORT_SERVICE, "org.osgi.service.log.LogService; selection-filter=(version>=1.0.0)"); |
| 347 |
manifest.put("TJW-Import", "my.great.stuff; selection-filter=(&(aLong<=10000)(aLong>=5000))"); |
373 |
manifest.put("TJW-Import", "my.great.stuff; selection-filter=(&(aLong<=10000)(aLong>=5000))"); |
|
|
374 |
manifest.put(GENERIC_REQUIRE, "genericCapability:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.bundle))\""); |
| 348 |
BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++); |
375 |
BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++); |
| 349 |
|
376 |
|
| 350 |
state.addBundle(genCap); |
377 |
state.addBundle(genCap); |
|
Lines 354-364
Link Here
|
| 354 |
assertTrue("1.0", genCap.isResolved()); |
381 |
assertTrue("1.0", genCap.isResolved()); |
| 355 |
assertTrue("1.1", genReq.isResolved()); |
382 |
assertTrue("1.1", genReq.isResolved()); |
| 356 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
383 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 357 |
assertTrue("2.0", genSpecs.length == 2); |
384 |
assertTrue("2.0", genSpecs.length == 3); |
| 358 |
assertTrue("2.1", genSpecs[0].isResolved()); |
385 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 359 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
386 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[1]); |
| 360 |
assertTrue("2.2", genSpecs[1].isResolved()); |
387 |
assertTrue("2.2", genSpecs[1].isResolved()); |
| 361 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
388 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[2]); |
|
|
389 |
assertTrue("2.3", genSpecs[2].isResolved()); |
| 390 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[0]); |
| 362 |
} |
391 |
} |
| 363 |
|
392 |
|
| 364 |
public void testGenericsOptionalMultiple() throws BundleException { |
393 |
public void testGenericsOptionalMultiple() throws BundleException { |
|
Lines 366-372
Link Here
|
| 366 |
Hashtable manifest = new Hashtable(); |
395 |
Hashtable manifest = new Hashtable(); |
| 367 |
long bundleID = 0; |
396 |
long bundleID = 0; |
| 368 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
397 |
manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); |
| 369 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity"); |
398 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability"); |
| 370 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
399 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 371 |
StringBuffer capabililty = new StringBuffer(); |
400 |
StringBuffer capabililty = new StringBuffer(); |
| 372 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
401 |
capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); |
|
Lines 389-394
Link Here
|
| 389 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
418 |
manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire"); |
| 390 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
419 |
manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); |
| 391 |
StringBuffer required = new StringBuffer(); |
420 |
StringBuffer required = new StringBuffer(); |
|
|
421 |
required.append("genericCapability:osgi.identity; selection-filter=\"(&(version=1.0.0)(type=osgi.bundle))\","); |
| 392 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
422 |
required.append("foo; selection-filter=\"(version>=1.3.0)\","); |
| 393 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
423 |
required.append("bar:bartype; selection-filter=\"(attr1=value1)\","); |
| 394 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\","); |
424 |
required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\","); |
|
Lines 405-425
Link Here
|
| 405 |
assertTrue("1.0", genCap.isResolved()); |
435 |
assertTrue("1.0", genCap.isResolved()); |
| 406 |
assertTrue("1.1", genReq.isResolved()); |
436 |
assertTrue("1.1", genReq.isResolved()); |
| 407 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
437 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 408 |
assertTrue("2.0", genSpecs.length == 6); |
438 |
assertTrue("2.0", genSpecs.length == 7); |
| 409 |
assertTrue("2.1", genSpecs[0].isResolved()); |
439 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 410 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
440 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]); |
| 411 |
assertTrue("2.2", genSpecs[1].isResolved()); |
441 |
assertTrue("2.2", genSpecs[1].isResolved()); |
| 412 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
442 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]); |
| 413 |
assertTrue("2.3", genSpecs[2].isResolved()); |
443 |
assertTrue("2.3", genSpecs[2].isResolved()); |
| 414 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
444 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]); |
| 415 |
assertFalse("2.4", genSpecs[3].isResolved()); |
445 |
assertTrue("2.3", genSpecs[3].isResolved()); |
| 416 |
assertTrue("2.5", genSpecs[4].isResolved()); |
446 |
assertEquals("2.3.1", genSpecs[3].getSupplier(), genCap.getGenericCapabilities()[3]); |
| 417 |
assertEquals("2.5.1", genSpecs[4].getSupplier(), genCap.getGenericCapabilities()[3]); |
447 |
assertFalse("2.4", genSpecs[4].isResolved()); |
| 418 |
assertTrue("2.6", genSpecs[5].isResolved()); |
448 |
assertTrue("2.5", genSpecs[5].isResolved()); |
| 419 |
GenericDescription[] suppliers = genSpecs[5].getSuppliers(); |
449 |
assertEquals("2.5.1", genSpecs[5].getSupplier(), genCap.getGenericCapabilities()[4]); |
|
|
450 |
assertTrue("2.6", genSpecs[6].isResolved()); |
| 451 |
GenericDescription[] suppliers = genSpecs[6].getSuppliers(); |
| 420 |
assertTrue("2.6.1", suppliers != null && suppliers.length == 2); |
452 |
assertTrue("2.6.1", suppliers != null && suppliers.length == 2); |
| 421 |
assertEquals("2.6.2", suppliers[0], genCap.getGenericCapabilities()[5]); |
453 |
assertEquals("2.6.2", suppliers[0], genCap.getGenericCapabilities()[6]); |
| 422 |
assertEquals("2.6.3", suppliers[1], genCap.getGenericCapabilities()[4]); |
454 |
assertEquals("2.6.3", suppliers[1], genCap.getGenericCapabilities()[5]); |
| 423 |
} |
455 |
} |
| 424 |
|
456 |
|
| 425 |
public void testGenericsCycles() throws BundleException { |
457 |
public void testGenericsCycles() throws BundleException { |
|
Lines 481-498
Link Here
|
| 481 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
513 |
GenericSpecification[] genSpecs = genReq.getGenericRequires(); |
| 482 |
GenericDescription[] selected = genCap.getSelectedGenericCapabilities(); |
514 |
GenericDescription[] selected = genCap.getSelectedGenericCapabilities(); |
| 483 |
assertTrue("2.0", genSpecs.length == 4); |
515 |
assertTrue("2.0", genSpecs.length == 4); |
| 484 |
assertEquals("Wrong number of selected", 4, selected.length); |
516 |
assertEquals("Wrong number of selected", 4 + 2, selected.length); // + 2 for host and frag osgi.identity caps |
| 485 |
assertTrue("2.1", genSpecs[0].isResolved()); |
517 |
assertTrue("2.1", genSpecs[0].isResolved()); |
| 486 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), selected[0]); |
518 |
assertEquals("2.1.1", genSpecs[0].getSupplier(), selected[1]); |
| 487 |
assertTrue("2.2", genSpecs[1].isResolved()); |
519 |
assertTrue("2.2", genSpecs[1].isResolved()); |
| 488 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), selected[1]); |
520 |
assertEquals("2.2.1", genSpecs[1].getSupplier(), selected[2]); |
| 489 |
assertTrue("2.3", genSpecs[2].isResolved()); |
521 |
assertTrue("2.3", genSpecs[2].isResolved()); |
| 490 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), selected[2]); |
522 |
assertEquals("2.3.1", genSpecs[2].getSupplier(), selected[3]); |
| 491 |
assertTrue("2.4", genSpecs[3].isResolved()); |
523 |
assertTrue("2.4", genSpecs[3].isResolved()); |
| 492 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), selected[3]); |
524 |
assertEquals("2.4.1", genSpecs[3].getSupplier(), selected[5]); |
| 493 |
genSpecs = genCap.getGenericRequires(); |
525 |
genSpecs = genCap.getGenericRequires(); |
| 494 |
assertTrue("3.0", genSpecs.length == 1); |
526 |
assertTrue("3.0", genSpecs.length == 1); |
| 495 |
assertTrue("3.1", genSpecs[0].isResolved()); |
527 |
assertTrue("3.1", genSpecs[0].isResolved()); |
| 496 |
assertEquals("3.1.1", genSpecs[0].getSupplier(), genReq.getGenericCapabilities()[0]); |
528 |
assertEquals("3.1.1", genSpecs[0].getSupplier(), genReq.getGenericCapabilities()[1]); |
| 497 |
} |
529 |
} |
| 498 |
} |
530 |
} |