1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
|
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.osgi;
import com.yahoo.container.plugin.osgi.ExportPackages.Export;
import com.yahoo.container.plugin.osgi.ExportPackages.Parameter;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* @author Tony Vaagenes
* @author ollivir
*/
public class ExportPackageParserTest {
private final Parameter versionParameter = new Parameter("version", "1.2.3.sample");
@Test
void require_that_package_is_parsed_correctly() {
List<Export> exports = ExportPackageParser.parseExports("sample.exported.package");
assertEquals(1, exports.size());
assertTrue(exports.get(0).getParameters().isEmpty());
assertTrue(exports.get(0).getPackageNames().contains("sample.exported.package"));
}
@Test
void require_that_version_is_parsed_correctly() {
List<Export> exports = ExportPackageParser.parseExports("com.yahoo.sample.exported.package;version=\"1.2.3.sample\"");
assertEquals(1, exports.size());
Export export = exports.get(0);
assertTrue(export.getPackageNames().contains("com.yahoo.sample.exported.package"));
assertTrue(export.getParameters().contains(versionParameter));
}
@Test
void require_that_multiple_packages_with_same_parameters_is_parsed_correctly() {
List<Export> exports = ExportPackageParser.parseExports("exported.package1;exported.package2;version=\"1.2.3.sample\"");
assertEquals(1, exports.size());
Export export = exports.get(0);
assertTrue(export.getPackageNames().containsAll(List.of("exported.package1", "exported.package2")));
assertTrue(export.getParameters().contains(versionParameter));
}
@Test
void require_that_spaces_between_separators_are_allowed() {
List<Export> exports = ExportPackageParser.parseExports("exported.package1 , exported.package2 ; version = \"1.2.3.sample\" ");
assertEquals(2, exports.size());
Export export = exports.get(0);
assertTrue(export.getPackageNames().contains("exported.package1"));
export = exports.get(1);
assertTrue(export.getPackageNames().contains("exported.package2"));
assertTrue(export.getParameters().contains(versionParameter));
}
@SuppressWarnings("unchecked")
@Test
void require_that_multiple_parameters_for_a_package_is_parsed_correctly() {
List<Export> exports = ExportPackageParser.parseExports("exported.package;version=\"1.2.3.sample\";param2=true");
assertEquals(1, exports.size());
Export export = exports.get(0);
assertTrue(export.getParameters().containsAll(List.of(versionParameter, new Parameter("param2", "true"))));
}
@Test
void require_that_multiple_exports_are_parsed_correctly() {
List<Export> exports = ExportPackageParser.parseExports("exported.package1,exported.package2");
assertEquals(2, exports.size());
Export export = exports.get(0);
assertTrue(export.getPackageNames().contains("exported.package1"));
assertTrue(export.getParameters().isEmpty());
export = exports.get(1);
assertTrue(export.getPackageNames().contains("exported.package2"));
assertTrue(export.getParameters().isEmpty());
exports = ExportPackageParser.parseExports("exported.package1;version=\"1.2.3.sample\",exported.package2");
assertEquals(2, exports.size());
export = exports.get(0);
assertTrue(export.getPackageNames().contains("exported.package1"));
assertTrue(export.getParameters().contains(versionParameter));
export = exports.get(1);
assertTrue(export.getPackageNames().contains("exported.package2"));
assertTrue(export.getParameters().isEmpty());
exports = ExportPackageParser.parseExports("exported.package1,exported.package2;version=\"1.2.3.sample\"");
assertEquals(2, exports.size());
export = exports.get(0);
assertTrue(export.getPackageNames().contains("exported.package1"));
assertTrue(export.getParameters().isEmpty());
export = exports.get(1);
assertTrue(export.getPackageNames().contains("exported.package2"));
assertTrue(export.getParameters().contains(versionParameter));
}
// TODO: MAVEN_OPTS are not propagated by the maven-surefire-plugin. Either try to fix the underlying problem or set -Xss in plugin config.
@Disabled // Frequently causes StackOverflowError
@Test
void require_that_long_string_literals_do_not_cause_stack_overflow_error() {
//From jersey-server-1.13.jar
String exportHeader = "com.sun.jersey.server.impl.wadl;uses:=\"com.sun.jersey.api.model,com.sun.resea"
+ "rch.ws.wadl,com.sun.jersey.api.wadl.config,com.sun.jersey.server.wadl,com.sun."
+ "jersey.api.core,javax.xml.bind,javax.ws.rs.core,com.sun.jersey.server.impl.uri"
+ ",com.sun.jersey.core.spi.factory,com.sun.jersey.server.impl.model.method,com.s"
+ "un.jersey.api.uri,com.sun.jersey.core.header,com.sun.jersey.spi.dispatch,javax"
+ ".ws.rs,com.sun.jersey.spi.resource\";version=\"1.13.0\",com.sun.jersey.server."
+ "impl.model.parameter.multivalued;uses:=\"com.sun.jersey.spi,javax.ws.rs.core,c"
+ "om.sun.jersey.api.container,com.sun.jersey.impl,javax.xml.parsers,org.xml.sax,"
+ "javax.xml.transform,javax.xml.bind.annotation,javax.xml.transform.sax,com.sun."
+ "jersey.spi.inject,javax.xml.bind,javax.ws.rs.ext,com.sun.jersey.api.model,com."
+ "sun.jersey.core.reflection,javax.ws.rs,com.sun.jersey.core.spi.component,com.s"
+ "un.jersey.core.header\";version=\"1.13.0\",com.sun.jersey.server.impl.model.pa"
+ "rameter;uses:=\"com.sun.jersey.api.model,com.sun.jersey.core.spi.component,com"
+ ".sun.jersey.server.impl.model.parameter.multivalued,com.sun.jersey.spi.inject,"
+ "com.sun.jersey.api,com.sun.jersey.api.core,com.sun.jersey.server.impl.inject,j"
+ "avax.ws.rs.core,javax.ws.rs,com.sun.jersey.core.header,com.sun.jersey.api.repr"
+ "esentation\";version=\"1.13.0\",com.sun.jersey.server.impl.application;uses:="
+ "\"com.sun.jersey.core.spi.component,com.sun.jersey.api.core,com.sun.jersey.spi"
+ ",com.sun.jersey.spi.inject,javax.ws.rs.core,com.sun.jersey.api.container,javax"
+ ".ws.rs.ext,com.sun.jersey.spi.container,com.sun.jersey.core.reflection,com.sun"
+ ".jersey.api.model,com.sun.jersey.impl,com.sun.jersey.spi.dispatch,com.sun.jers"
+ "ey.server.impl.model,com.sun.jersey.server.impl.wadl,com.sun.jersey.server.imp"
+ "l.uri,com.sun.jersey.core.spi.factory,com.sun.jersey.api.uri,com.sun.jersey.se"
+ "rver.impl.uri.rules,com.sun.jersey.spi.uri.rules,com.sun.jersey.server.spi.com"
+ "ponent,com.sun.jersey.core.util,com.sun.jersey.core.header,com.sun.jersey.core"
+ ".spi.component.ioc,javax.ws.rs,com.sun.jersey.server.impl,com.sun.jersey.serve"
+ "r.wadl,com.sun.jersey.server.impl.inject,com.sun.jersey.server.impl.component,"
+ "com.sun.jersey.spi.monitoring,com.sun.jersey.server.impl.monitoring,com.sun.je"
+ "rsey.api.container.filter,com.sun.jersey.server.impl.model.parameter.multivalu"
+ "ed,com.sun.jersey.server.impl.model.parameter,com.sun.jersey.server.impl.templ"
+ "ate,com.sun.jersey.spi.template,com.sun.jersey.server.impl.resource,com.sun.je"
+ "rsey.server.impl.modelapi.annotation,com.sun.jersey.server.impl.container.filt"
+ "er,com.sun.jersey.server.impl.modelapi.validation,com.sun.jersey.api,com.sun.j"
+ "ersey.spi.service\";version=\"1.13.0\",com.sun.jersey.server.impl.component;us"
+ "es:=\"com.sun.jersey.api.model,com.sun.jersey.core.spi.component,com.sun.jerse"
+ "y.server.spi.component,com.sun.jersey.api.core,com.sun.jersey.core.spi.compone"
+ "nt.ioc,com.sun.jersey.server.impl.inject,com.sun.jersey.server.impl.resource,c"
+ "om.sun.jersey.api.container,com.sun.jersey.core.reflection,com.sun.jersey.spi."
+ "inject\";version=\"1.13.0\",com.sun.jersey.server.impl.provider;uses:=\"com.su"
+ "n.jersey.core.spi.factory,com.sun.jersey.api.container,com.sun.jersey.api.core"
+ ",javax.ws.rs.core\";version=\"1.13.0\",com.sun.jersey.server.impl.template;use"
+ "s:=\"com.sun.jersey.core.spi.component,com.sun.jersey.api.view,com.sun.jersey."
+ "spi.template,javax.ws.rs.core,com.sun.jersey.core.header,com.sun.jersey.server"
+ ".impl.model.method,com.sun.jersey.spi.dispatch,com.sun.jersey.api.uri,javax.ws"
+ ".rs,com.sun.jersey.spi.inject,javax.ws.rs.ext,com.sun.jersey.server.impl.uri.r"
+ "ules,com.sun.jersey.server.probes,com.sun.jersey.core.reflection,com.sun.jerse"
+ "y.spi.uri.rules,com.sun.jersey.spi.container,com.sun.jersey.api.core\";version"
+ "=\"1.13.0\",com.sun.jersey.server.osgi;uses:=\"com.sun.jersey.server.impl.prov"
+ "ider,org.osgi.framework,javax.ws.rs.ext\";version=\"1.13.0\",com.sun.jersey.se"
+ "rver.wadl.generators.resourcedoc.model;uses:=\"javax.xml.bind.annotation,javax"
+ ".xml.namespace\";version=\"1.13.0\",com.sun.jersey.server.impl.resource;uses:="
+ "\"com.sun.jersey.api.model,com.sun.jersey.core.spi.component,com.sun.jersey.se"
+ "rver.spi.component,com.sun.jersey.api.core,com.sun.jersey.api.container,javax."
+ "ws.rs,com.sun.jersey.server.impl.inject,com.sun.jersey.core.spi.component.ioc,"
+ "javax.ws.rs.core\";version=\"1.13.0\",com.sun.jersey.server.impl.monitoring;us"
+ "es:=\"com.sun.jersey.spi.monitoring,com.sun.jersey.spi.service,com.sun.jersey."
+ "api.model,com.sun.jersey.spi.container,javax.ws.rs.ext,com.sun.jersey.core.spi"
+ ".component\";version=\"1.13.0\",com.sun.jersey.server.impl.modelapi.annotation"
+ ";uses:=\"com.sun.jersey.api.model,javax.ws.rs.core,javax.ws.rs,com.sun.jersey."
+ "core.reflection,com.sun.jersey.core.header,com.sun.jersey.impl\";version=\"1.1"
+ "3.0\",com.sun.jersey.server.impl.container;uses:=\"com.sun.jersey.server.impl."
+ "application,com.sun.jersey.spi.container,com.sun.jersey.api.container\";versio"
+ "n=\"1.13.0\",com.sun.jersey.server.wadl;uses:=\"javax.ws.rs.core,com.sun.resea"
+ "rch.ws.wadl,javax.xml.namespace,com.sun.jersey.api.model,javax.xml.bind,javax."
+ "ws.rs,com.sun.jersey.server.wadl.generators,com.sun.jersey.server.impl.modelap"
+ "i.annotation,com.sun.jersey.server.impl\";version=\"1.13.0\",com.sun.jersey.se"
+ "rver.impl.model.method.dispatch;uses:=\"com.sun.jersey.api.model,com.sun.jerse"
+ "y.api.core,com.sun.jersey.spi.container,com.sun.jersey.server.impl.inject,com."
+ "sun.jersey.api,javax.ws.rs.core,com.sun.jersey.core.spi.factory,com.sun.jersey"
+ ".spi.inject,com.sun.jersey.spi.dispatch,com.sun.jersey.core.spi.component,java"
+ "x.ws.rs,com.sun.jersey.server.impl.model.parameter.multivalued,com.sun.jersey."
+ "api.representation,com.sun.jersey.api.container\";version=\"1.13.0\",com.sun.j"
+ "ersey.server.impl;uses:=\"javax.naming,com.sun.jersey.api.core,com.sun.jersey."
+ "core.header,javax.ws.rs.core,com.sun.jersey.server.impl.model,com.sun.jersey.s"
+ "pi.container\";version=\"1.13.0\",com.sun.jersey.server.wadl.generators.resour"
+ "cedoc;uses:=\"com.sun.jersey.api.model,com.sun.jersey.server.wadl.generators.r"
+ "esourcedoc.model,com.sun.jersey.server.wadl.generators.resourcedoc.xhtml,com.s"
+ "un.research.ws.wadl,javax.xml.namespace,com.sun.jersey.server.wadl,javax.xml.b"
+ "ind,javax.ws.rs.core\";version=\"1.13.0\",com.sun.jersey.server.impl.container"
+ ".httpserver;uses:=\"com.sun.net.httpserver,com.sun.jersey.spi.container,javax."
+ "ws.rs.core,com.sun.jersey.core.header,com.sun.jersey.api.container,com.sun.jer"
+ "sey.core.util,com.sun.jersey.api.core\";version=\"1.13.0\",com.sun.jersey.serv"
+ "er.impl.container.filter;uses:=\"com.sun.jersey.api.model,com.sun.jersey.spi.c"
+ "ontainer,com.sun.jersey.core.spi.component,com.sun.jersey.api.core,javax.ws.rs"
+ ",com.sun.jersey.server.impl.uri,javax.ws.rs.core\";version=\"1.13.0\",com.sun."
+ "jersey.server.wadl.generators.resourcedoc.xhtml;uses:=\"javax.xml.bind,javax.x"
+ "ml.namespace,javax.xml.bind.annotation\";version=\"1.13.0\",com.sun.jersey.ser"
+ "ver.impl.uri.rules;uses:=\"com.sun.jersey.spi.uri.rules,com.sun.jersey.api.uri"
+ ",com.sun.jersey.api.core,com.sun.jersey.server.impl.model.method,com.sun.jerse"
+ "y.spi.dispatch,com.sun.jersey.core.header,javax.ws.rs.core,com.sun.jersey.api."
+ "model,com.sun.jersey.server.probes,com.sun.jersey.core.reflection,com.sun.jers"
+ "ey.server.impl.template,com.sun.jersey.spi.monitoring,com.sun.jersey.api,com.s"
+ "un.jersey.spi.container,com.sun.jersey.server.impl.uri,javax.ws.rs,com.sun.jer"
+ "sey.api.container,com.sun.jersey.server.impl.inject,com.sun.jersey.spi.inject,"
+ "com.sun.jersey.server.impl.uri.rules.automata\";version=\"1.13.0\",com.sun.jer"
+ "sey.server.spi.component;uses:=\"com.sun.jersey.spi.inject,com.sun.jersey.api."
+ "model,com.sun.jersey.core.spi.component,com.sun.jersey.api.core,com.sun.jersey"
+ ".server.impl.inject,com.sun.jersey.api.container,com.sun.jersey.core.spi.compo"
+ "nent.ioc\";version=\"1.13.0\",com.sun.jersey.server.probes;version=\"1.13.0\","
+ "com.sun.jersey.server.wadl.generators;uses:=\"com.sun.research.ws.wadl,javax.x"
+ "ml.bind.annotation,com.sun.jersey.api.model,com.sun.jersey.server.wadl,javax.x"
+ "ml.bind,javax.ws.rs.core,com.sun.jersey.api,javax.xml.namespace,javax.xml.tran"
+ "sform,javax.xml.transform.stream\";version=\"1.13.0\",com.sun.jersey.server.im"
+ "pl.modelapi.validation;uses:=\"com.sun.jersey.api.model,javax.ws.rs,com.sun.je"
+ "rsey.impl,com.sun.jersey.api.core,com.sun.jersey.core.reflection,javax.ws.rs.c"
+ "ore\";version=\"1.13.0\",com.sun.jersey.server.impl.model.method;uses:=\"com.s"
+ "un.jersey.api.container,com.sun.jersey.spi.dispatch,com.sun.jersey.api.uri,com"
+ ".sun.jersey.api.model,com.sun.jersey.server.impl.container.filter,com.sun.jers"
+ "ey.impl,com.sun.jersey.spi.container,com.sun.jersey.spi.inject,com.sun.jersey."
+ "api.core,javax.ws.rs.core,com.sun.jersey.core.header\";version=\"1.13.0\",com."
+ "sun.jersey.server.impl.model;uses:=\"javax.ws.rs,com.sun.jersey.impl,com.sun.j"
+ "ersey.api.container,com.sun.jersey.core.header,com.sun.jersey.core.header.read"
+ "er,com.sun.jersey.api.core,javax.ws.rs.core,com.sun.jersey.server.impl.model.m"
+ "ethod,com.sun.jersey.server.impl.container.filter,com.sun.jersey.api.model,com"
+ ".sun.jersey.server.impl.wadl,com.sun.jersey.spi.monitoring,com.sun.jersey.serv"
+ "er.impl.uri,com.sun.jersey.spi.container,com.sun.jersey.server.impl.inject,com"
+ ".sun.jersey.spi.inject,com.sun.jersey.api.uri,com.sun.jersey.core.spi.componen"
+ "t,com.sun.jersey.server.impl.uri.rules,com.sun.jersey.server.impl.template,com"
+ ".sun.jersey.api.view,com.sun.jersey.spi.uri.rules\";version=\"1.13.0\",com.sun"
+ ".jersey.server.impl.uri.rules.automata;uses:=\"com.sun.jersey.server.impl.uri,"
+ "com.sun.jersey.spi.uri.rules,com.sun.jersey.server.impl.uri.rules,com.sun.jers"
+ "ey.api.uri\";version=\"1.13.0\",com.sun.jersey.server.impl.uri;uses:=\"com.sun"
+ ".jersey.api.uri,javax.ws.rs.core\";version=\"1.13.0\",com.sun.jersey.server.im"
+ "pl.inject;uses:=\"com.sun.jersey.api.core,com.sun.jersey.spi.inject,javax.ws.r"
+ "s,com.sun.jersey.api.container,com.sun.jersey.api.model,com.sun.jersey.core.sp"
+ "i.component,com.sun.jersey.core.spi.factory\";version=\"1.13.0\",com.sun.jerse"
+ "y.spi.scanning;uses:=\"org.objectweb.asm,com.sun.jersey.core.reflection,com.su"
+ "n.jersey.core.spi.scanning,javax.ws.rs,javax.ws.rs.ext\";version=\"1.13.0\",co"
+ "m.sun.jersey.spi.resource;uses:=\"com.sun.jersey.server.impl.resource,com.sun."
+ "jersey.server.spi.component\";version=\"1.13.0\",com.sun.jersey.spi.template;u"
+ "ses:=\"com.sun.jersey.api.view,javax.ws.rs.core,com.sun.jersey.api.container\""
+ ";version=\"1.13.0\",com.sun.jersey.spi.dispatch;uses:=\"com.sun.jersey.api.cor"
+ "e\";version=\"1.13.0\",com.sun.jersey.spi.uri.rules;uses:=\"com.sun.jersey.api"
+ ".core,com.sun.jersey.api.model,com.sun.jersey.spi.container,com.sun.jersey.api"
+ ".uri\";version=\"1.13.0\",com.sun.jersey.spi.container;uses:=\"javax.ws.rs,com"
+ ".sun.jersey.api.representation,com.sun.jersey.core.header,com.sun.jersey.spi,j"
+ "avax.ws.rs.core,com.sun.jersey.api.container,com.sun.jersey.api.core,com.sun.j"
+ "ersey.core.util,com.sun.jersey.core.header.reader,com.sun.jersey.server.impl,c"
+ "om.sun.jersey.core.reflection,javax.ws.rs.ext,com.sun.jersey.server.impl.model"
+ ",com.sun.jersey.api,com.sun.jersey.api.uri,com.sun.jersey.core.spi.factory,com"
+ ".sun.jersey.spi.monitoring,com.sun.jersey.api.model,com.sun.jersey.core.spi.co"
+ "mponent,com.sun.jersey.server.impl.application,com.sun.jersey.impl,com.sun.jer"
+ "sey.spi.inject,com.sun.jersey.spi.dispatch,com.sun.jersey.server.impl.inject,c"
+ "om.sun.jersey.core.spi.component.ioc,com.sun.jersey.spi.service\";version=\"1."
+ "13.0\",com.sun.jersey.spi.monitoring;uses:=\"com.sun.jersey.api.model,com.sun."
+ "jersey.spi.container,javax.ws.rs.ext\";version=\"1.13.0\",com.sun.jersey.api;u"
+ "ses:=\"javax.ws.rs,javax.ws.rs.core,com.sun.jersey.core.header,com.sun.jersey."
+ "core.spi.factory\";version=\"1.13.0\",com.sun.jersey.api.core;uses:=\"javax.ws"
+ ".rs.core,com.sun.jersey.core.spi.scanning,com.sun.jersey.api.model,com.sun.jer"
+ "sey.api.uri,javax.ws.rs,com.sun.jersey.core.header,com.sun.jersey.api.represen"
+ "tation,com.sun.jersey.core.util,javax.ws.rs.ext,com.sun.jersey.api.container,c"
+ "om.sun.jersey.spi.scanning,com.sun.jersey.spi.container,com.sun.jersey.server."
+ "impl.application\";version=\"1.13.0\",com.sun.jersey.api.wadl.config;uses:=\"c"
+ "om.sun.jersey.server.wadl,com.sun.jersey.api.core,com.sun.jersey.core.reflecti"
+ "on,com.sun.jersey.server.wadl.generators\";version=\"1.13.0\",com.sun.jersey.a"
+ "pi.model;uses:=\"javax.ws.rs.core,com.sun.jersey.spi.container\";version=\"1.1"
+ "3.0\",com.sun.jersey.api.view;version=\"1.13.0\",com.sun.jersey.api.container."
+ "filter;uses:=\"javax.ws.rs,com.sun.jersey.spi.container,javax.ws.rs.core,com.s"
+ "un.jersey.api.container,com.sun.jersey.api.core,com.sun.jersey.core.util,com.s"
+ "un.jersey.core.header,com.sun.jersey.api.representation,com.sun.jersey.api.mod"
+ "el,javax.annotation.security\";version=\"1.13.0\",com.sun.jersey.api.container"
+ ";uses:=\"com.sun.jersey.api.core,com.sun.jersey.spi.container,com.sun.jersey.s"
+ "pi.service,com.sun.jersey.core.spi.component.ioc\";version=\"1.13.0\",com.sun."
+ "jersey.api.container.httpserver;uses:=\"com.sun.net.httpserver,com.sun.jersey."
+ "api.core,com.sun.jersey.api.container,com.sun.jersey.core.spi.component.ioc\";"
+ "version=\"1.13.0\",com.sun.research.ws.wadl;uses:=\"javax.xml.bind.annotation,"
+ "javax.xml.bind.annotation.adapters,javax.xml.namespace\";version=\"1.13.0\"";
ExportPackageParser.parseExports(exportHeader);
}
}
|