Skip to content

Commit 3f8c32a

Browse files
jansupolsenivam
authored andcommitted
cd-inject-weld module-info
Signed-off-by: jansupol <jan.supol@oracle.com>
1 parent ced66fa commit 3f8c32a

File tree

25 files changed

+351
-88
lines changed

25 files changed

+351
-88
lines changed

core-client/src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
exports org.glassfish.jersey.client.inject;
3131
exports org.glassfish.jersey.client.spi;
3232
exports org.glassfish.jersey.client.internal;
33+
exports org.glassfish.jersey.client.internal.inject to org.glassfish.jersey.incubator.cdi.inject.weld;
3334

3435
exports org.glassfish.jersey.client.innate to
3536
org.glassfish.jersey.apache5.connector,

core-common/src/main/java/module-info.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@
6161
org.glassfish.jersey.container.servlet,
6262
org.glassfish.jersey.container.jetty.http,
6363
org.glassfish.jersey.netty.connector,
64-
org.glassfish.jersey.ext.mp.rest.client;
64+
org.glassfish.jersey.ext.mp.rest.client,
65+
org.glassfish.jersey.incubator.cdi.inject.weld;
6566

6667
exports org.glassfish.jersey.innate.inject to org.glassfish.jersey.inject.hk2,
6768
org.glassfish.jersey.inject.cdi2.se,
@@ -80,6 +81,7 @@
8081
org.glassfish.jersey.ext.entity.filtering,
8182
org.glassfish.jersey.ext.metainf.services,
8283
org.glassfish.jersey.ext.mvc,
84+
org.glassfish.jersey.incubator.cdi.inject.weld,
8385
org.glassfish.jersey.gf.ejb,
8486
org.glassfish.jersey.security.oauth1.signature;
8587
exports org.glassfish.jersey.innate.virtual to org.glassfish.jersey.container.grizzly2.http,
@@ -104,14 +106,14 @@
104106

105107
opens org.glassfish.jersey.innate.spi to org.glassfish.jersey.media.multipart;
106108
opens org.glassfish.jersey.internal;
109+
opens org.glassfish.jersey.internal.util.collection;
107110
opens org.glassfish.jersey.message.internal;
108111
opens org.glassfish.jersey.spi;
109112

110113
uses jakarta.ws.rs.core.Feature;
111114
uses jakarta.ws.rs.container.DynamicFeature;
112115
uses jakarta.ws.rs.ext.RuntimeDelegate;
113116

114-
uses org.glassfish.jersey.innate.BootstrapPreinitialization;
115117
uses org.glassfish.jersey.innate.spi.EntityPartBuilderProvider;
116118
uses org.glassfish.jersey.internal.ServiceFinder;
117119
uses org.glassfish.jersey.internal.inject.InjectionManagerFactory;

core-server/src/main/java/module-info.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@
4747
exports org.glassfish.jersey.server.wadl.internal.generators.resourcedoc;
4848
exports org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model;
4949
exports org.glassfish.jersey.server.filter;
50-
exports org.glassfish.jersey.server.filter.internal to org.glassfish.hk2.locator, org.glassfish.hk2.utilities;
50+
exports org.glassfish.jersey.server.filter.internal to
51+
org.glassfish.hk2.locator,
52+
org.glassfish.hk2.utilities,
53+
org.glassfish.jersey.incubator.cdi.inject.weld;
5154

5255
exports org.glassfish.jersey.server.monitoring;
5356
exports org.glassfish.jersey.server.internal;
@@ -76,11 +79,18 @@
7679

7780
opens org.glassfish.jersey.server;
7881
opens org.glassfish.jersey.server.filter;
79-
opens org.glassfish.jersey.server.internal to org.glassfish.hk2.utilities;
82+
opens org.glassfish.jersey.server.filter.internal to
83+
org.glassfish.hk2.locator,
84+
org.glassfish.hk2.utilities,
85+
weld.core.impl;
86+
opens org.glassfish.jersey.server.internal to org.glassfish.hk2.utilities, weld.core.impl;
8087
opens org.glassfish.jersey.server.internal.inject;
8188
opens org.glassfish.jersey.server.internal.monitoring to org.glassfish.hk2.utilities;
8289
opens org.glassfish.jersey.server.internal.monitoring.jmx to org.glassfish.hk2.utilities;
83-
opens org.glassfish.jersey.server.internal.process to org.glassfish.hk2.locator, org.glassfish.hk2.utilities;
90+
opens org.glassfish.jersey.server.internal.process to
91+
org.glassfish.hk2.locator,
92+
org.glassfish.hk2.utilities,
93+
weld.core.impl;
8494
opens org.glassfish.jersey.server.internal.routing to org.glassfish.hk2.utilities;
8595
opens org.glassfish.jersey.server.model;
8696
opens org.glassfish.jersey.server.wadl.processor;

incubator/cdi-inject-weld/pom.xml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@
3232

3333
<description>CDI InjectionManager implementation</description>
3434

35+
<properties>
36+
<!-- test packages -->
37+
<surefire.security.argline>
38+
--add-exports org.glassfish.jersey.incubator.cdi.inject.weld/org.glassfish.jersey.inject.weld.binder.client=org.glassfish.jersey.core.common
39+
--add-exports org.glassfish.jersey.incubator.cdi.inject.weld/org.glassfish.jersey.inject.weld.binder.client=weld.core.impl
40+
--add-exports org.glassfish.jersey.incubator.cdi.inject.weld/org.glassfish.jersey.inject.weld=weld.core.impl
41+
--add-opens org.glassfish.jersey.incubator.cdi.inject.weld/org.glassfish.jersey.inject.weld.binder.client=weld.core.impl
42+
</surefire.security.argline>
43+
</properties>
44+
3545
<dependencies>
3646
<dependency>
3747
<groupId>org.glassfish.jersey.core</groupId>
@@ -73,20 +83,36 @@
7383
<groupId>org.glassfish.jersey.containers</groupId>
7484
<artifactId>jersey-container-grizzly2-http</artifactId>
7585
<version>${project.version}</version>
76-
<scope>provided</scope>
86+
<scope>test</scope>
7787
</dependency>
7888

7989
<dependency>
8090
<groupId>jakarta.enterprise</groupId>
8191
<artifactId>jakarta.enterprise.cdi-api</artifactId>
8292
<scope>provided</scope>
8393
</dependency>
94+
<dependency>
95+
<groupId>org.jboss.weld</groupId>
96+
<artifactId>weld-api</artifactId>
97+
<scope>provided</scope>
98+
</dependency>
99+
<dependency>
100+
<groupId>org.jboss.weld</groupId>
101+
<artifactId>weld-spi</artifactId>
102+
<version>${weld.api.version}</version>
103+
<scope>provided</scope>
104+
</dependency>
105+
<dependency>
106+
<groupId>org.jboss.weld</groupId>
107+
<artifactId>weld-core-impl</artifactId>
108+
<version>${weld.version}</version>
109+
<scope>provided</scope>
110+
</dependency>
84111
<dependency>
85112
<groupId>org.jboss.weld.se</groupId>
86113
<artifactId>weld-se-core</artifactId>
87-
<scope>provided</scope>
114+
<scope>test</scope>
88115
</dependency>
89-
90116
<dependency>
91117
<groupId>org.junit.jupiter</groupId>
92118
<artifactId>junit-jupiter</artifactId>
@@ -140,7 +166,6 @@
140166
org.glassfish.jersey.inject.weld.managed.*;version=${project.version}
141167
</Export-Package>
142168
<Import-Package>
143-
jakarta.servlet.*;version="[6.0,7.0)",
144169
sun.misc.*;resolution:=optional,
145170
${jakarta.annotation.osgi.version},
146171
${cdi.osgi.version},

incubator/cdi-inject-weld/src/main/java/module-info.txt renamed to incubator/cdi-inject-weld/src/main/java/module-info.java

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,33 @@
1919
requires jakarta.cdi;
2020
requires jakarta.inject;
2121
requires jakarta.interceptor;
22-
requires jakarta.servlet;
23-
// requires jakarta.persistence;
2422
requires jakarta.ws.rs;
2523

2624
requires java.logging;
2725

2826
requires weld.api;
29-
requires weld.spi;
3027
requires weld.core.impl;
31-
requires weld.se.core;
32-
requires weld.probe.core;
33-
requires org.glassfish.grizzly.http.server;
28+
requires weld.spi;
3429

3530
requires org.glassfish.jersey.core.common;
3631
requires org.glassfish.jersey.core.client;
3732
requires org.glassfish.jersey.core.server;
38-
requires org.glassfish.jersey.container.servlet;
39-
40-
opens org.glassfish.jersey.inject.weld.internal.data;
41-
opens org.glassfish.jersey.inject.weld.internal.bean;
42-
opens org.glassfish.jersey.inject.weld.internal.inject;
43-
opens org.glassfish.jersey.inject.weld.internal.managed;
44-
opens org.glassfish.jersey.inject.weld.internal.scope;
45-
opens org.glassfish.jersey.inject.weld.internal.type;
46-
opens org.glassfish.jersey.inject.weld.spi;
47-
opens org.glassfish.jersey.inject.weld.managed;
48-
49-
exports org.glassfish.jersey.inject.weld.internal.data;
50-
exports org.glassfish.jersey.inject.weld.internal.bean;
51-
exports org.glassfish.jersey.inject.weld.internal.inject;
52-
exports org.glassfish.jersey.inject.weld.internal.managed;
53-
exports org.glassfish.jersey.inject.weld.internal.scope;
54-
exports org.glassfish.jersey.inject.weld.internal.type;
55-
exports org.glassfish.jersey.inject.weld.spi;
56-
exports org.glassfish.jersey.inject.weld.managed;
33+
34+
exports org.glassfish.jersey.inject.weld.internal.managed to
35+
org.glassfish.jersey.core.common,
36+
weld.core.impl;
37+
exports org.glassfish.jersey.inject.weld.managed to org.glassfish.jersey.core.common;
38+
39+
opens org.glassfish.jersey.inject.weld.internal.managed to weld.core.impl;
40+
opens org.glassfish.jersey.inject.weld.internal.scope to weld.core.impl;
41+
opens org.glassfish.jersey.inject.weld.managed to weld.core.impl;
42+
opens org.glassfish.jersey.inject.weld.internal.injector to weld.core.impl;
43+
44+
uses org.glassfish.jersey.innate.BootstrapPreinitialization;
45+
46+
provides jakarta.enterprise.inject.spi.Extension with
47+
org.glassfish.jersey.inject.weld.internal.managed.BinderRegisterExtension;
48+
49+
provides org.glassfish.jersey.internal.inject.InjectionManagerFactory with
50+
org.glassfish.jersey.inject.weld.managed.CdiInjectionManagerFactory;
5751
}

incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/bean/JerseyBean.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -41,7 +41,7 @@
4141
import org.glassfish.jersey.internal.inject.PerLookup;
4242
import org.glassfish.jersey.internal.inject.PerThread;
4343

44-
import org.jboss.weld.environment.se.contexts.ThreadScoped;
44+
//import org.jboss.weld.environment.se.contexts.ThreadScoped;
4545

4646
/**
4747
* Jersey-specific abstract class which implements {@link Bean} interface. Class particularly contains default implementations
@@ -88,7 +88,7 @@ protected static Class<? extends Annotation> transformScope(Class<? extends Anno
8888
if (scope == PerLookup.class) {
8989
return Dependent.class;
9090
} else if (scope == PerThread.class) {
91-
return ThreadScoped.class;
91+
return RequestScoped.class; // ThreadScoped.class;
9292
} else if (scope == org.glassfish.jersey.process.internal.RequestScoped.class) {
9393
return RequestScoped.class;
9494
}

incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/injector/JerseyInjectionTarget.java

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,8 +19,10 @@
1919
import java.lang.reflect.Modifier;
2020
import java.util.Collection;
2121
import java.util.List;
22+
import java.util.logging.Logger;
2223

2324
import jakarta.enterprise.context.Dependent;
25+
import jakarta.enterprise.inject.spi.DeploymentException;
2426
import jakarta.ws.rs.WebApplicationException;
2527

2628
import jakarta.enterprise.context.spi.CreationalContext;
@@ -32,9 +34,9 @@
3234

3335
import org.glassfish.jersey.inject.weld.internal.bean.BeanHelper;
3436
import org.glassfish.jersey.inject.weld.internal.bean.JerseyBean;
37+
import org.glassfish.jersey.inject.weld.internal.l10n.LocalizationMessages;
3538
import org.glassfish.jersey.inject.weld.managed.CdiInjectionManagerFactory;
3639
import org.glassfish.jersey.internal.inject.InjectionManager;
37-
import org.glassfish.jersey.internal.inject.InjectionManagerFactory;
3840
import org.glassfish.jersey.internal.inject.InjectionResolver;
3941
import org.glassfish.jersey.internal.util.collection.LazyValue;
4042
import org.glassfish.jersey.internal.util.collection.Value;
@@ -56,7 +58,6 @@
5658
import org.jboss.weld.injection.producer.SubclassDecoratorApplyingInstantiator;
5759
import org.jboss.weld.injection.producer.SubclassedComponentInstantiator;
5860
import org.jboss.weld.interceptor.spi.model.InterceptionModel;
59-
import org.jboss.weld.logging.BeanLogger;
6061
import org.jboss.weld.resources.ClassTransformer;
6162
import org.jboss.weld.util.reflection.Formats;
6263

@@ -70,6 +71,8 @@
7071
*/
7172
public class JerseyInjectionTarget<T> extends BasicInjectionTarget<T> {
7273

74+
private static final Logger LOGGER = Logger.getLogger(JerseyInjectionTarget.class.getName());
75+
7376
private final Bean<T> bean;
7477
private final Class<T> clazz;
7578
private final LazyValue<JerseyInstanceInjector<T>> injector;
@@ -78,6 +81,7 @@ public class JerseyInjectionTarget<T> extends BasicInjectionTarget<T> {
7881
private BasicInjectionTarget delegate; // for managed beans the initializeAfterBeanDiscovery is called for it
7982
private final Instantiator<T> instantiator;
8083

84+
8185
/**
8286
* Creates a new injection target which is able to delegate an injection to {@code delegate injection target} and inject
8387
* the fields that are Jersey-specific. The resolvers must be set later on. CDI will select its own constructor.
@@ -156,8 +160,7 @@ public void inject(T instance, CreationalContext<T> ctx) {
156160
} catch (WebApplicationException wae) {
157161
throw wae;
158162
} catch (Throwable cause) {
159-
throw new InjectionException(
160-
"Exception occurred during Jersey/JAX-RS annotations processing in the class: " + clazz, cause);
163+
throw injectionException(LocalizationMessages.IT_PROCESSING_ANNOTATION_EXCEPTION(clazz.getName()), cause);
161164
}
162165

163166
/*
@@ -194,7 +197,7 @@ public void initializeAfterBeanDiscovery(EnhancedAnnotatedType<T> annotatedType)
194197

195198
if (hasNonConstructorInterceptors || hasDecorators) {
196199
if (!(getInstantiator() instanceof DefaultInstantiator<?>)) {
197-
throw new IllegalStateException("Unexpected instantiator " + getInstantiator());
200+
throw illegalStateException(LocalizationMessages.IT_UNEXPECTED_INSTANTIATOR(getInstantiator()));
198201
}
199202

200203
/*
@@ -232,16 +235,16 @@ private void checkNoArgsConstructor(EnhancedAnnotatedType<T> type) {
232235
}
233236
EnhancedAnnotatedConstructor<T> constructor = type.getNoArgsEnhancedConstructor();
234237
if (constructor == null) {
235-
throw BeanLogger.LOG.decoratedHasNoNoargsConstructor(this);
238+
throw deploymentException(LocalizationMessages.IT_DECORATED_HAS_NO_NOARGS_CONSTRUCTOR(type));
236239
} else if (constructor.isPrivate()) {
237-
throw BeanLogger.LOG
238-
.decoratedNoargsConstructorIsPrivate(this, Formats.formatAsStackTraceElement(constructor.getJavaMember()));
240+
String stackTraceElement = Formats.formatAsStackTraceElement(constructor.getJavaMember());
241+
throw deploymentException(LocalizationMessages.IT_DECORATED_NOARGS_CONSTRUCTOR_PRIVATE(type, stackTraceElement));
239242
}
240243
}
241244

242245
private void checkDecoratedMethods(EnhancedAnnotatedType<T> type, List<Decorator<?>> decorators) {
243246
if (type.isFinal()) {
244-
throw BeanLogger.LOG.finalBeanClassWithDecoratorsNotAllowed(this);
247+
throw deploymentException(LocalizationMessages.IT_FINAL_BEAN_CLASS_WITH_DECORATORS_NOT_ALLOWED(type));
245248
}
246249
checkNoArgsConstructor(type);
247250
for (Decorator<?> decorator : decorators) {
@@ -253,13 +256,13 @@ private void checkDecoratedMethods(EnhancedAnnotatedType<T> type, List<Decorator
253256
} else if (decorator instanceof CustomDecoratorWrapper<?>) {
254257
decoratorClass = ((CustomDecoratorWrapper<?>) decorator).getEnhancedAnnotated();
255258
} else {
256-
throw BeanLogger.LOG.nonContainerDecorator(decorator);
259+
throw illegalStateException(LocalizationMessages.IT_NON_CONTAINER_DECORATOR(decorator));
257260
}
258261

259262
for (EnhancedAnnotatedMethod<?, ?> decoratorMethod : decoratorClass.getEnhancedMethods()) {
260263
EnhancedAnnotatedMethod<?, ?> method = type.getEnhancedMethod(decoratorMethod.getSignature());
261264
if (method != null && !method.isStatic() && !method.isPrivate() && method.isFinal()) {
262-
throw BeanLogger.LOG.finalBeanClassWithInterceptorsNotAllowed(this);
265+
throw deploymentException(LocalizationMessages.IT_FINAL_BEAN_CLASS_WITH_INTERCEPTORS_NOT_ALLOWED(type));
263266
}
264267
}
265268
}
@@ -292,6 +295,21 @@ private boolean isInterceptionCandidate() {
292295
return !isInterceptor() && !isDecorator() && !Modifier.isAbstract(getType().getJavaClass().getModifiers());
293296
}
294297

298+
private static IllegalStateException illegalStateException(String message) {
299+
LOGGER.warning(message);
300+
return new IllegalStateException(message);
301+
}
302+
303+
private static DeploymentException deploymentException(String message) {
304+
LOGGER.warning(message);
305+
return new DeploymentException(message);
306+
}
307+
308+
private static InjectionException injectionException(String message, Throwable cause) {
309+
LOGGER.warning(message);
310+
return new InjectionException(message, cause);
311+
}
312+
295313
@Override
296314
public T produce(CreationalContext<T> ctx) {
297315
T instance;

incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/BinderRegisterExtension.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -33,6 +33,7 @@
3333
import java.util.TreeMap;
3434
import java.util.concurrent.atomic.AtomicBoolean;
3535
import java.util.function.Supplier;
36+
import java.util.logging.Logger;
3637
import java.util.stream.Collectors;
3738

3839
import jakarta.annotation.Priority;
@@ -105,7 +106,9 @@
105106
* CDI extension that handles CDI bootstrap events and registers Jersey's internally used components and components registered
106107
* using {@link Application}.
107108
*/
108-
class BinderRegisterExtension implements Extension {
109+
public class BinderRegisterExtension implements Extension {
110+
111+
private static final Logger LOGGER = Logger.getLogger(BinderRegisterExtension.class.getName());
109112

110113
private final AtomicBoolean registrationDone = new AtomicBoolean(false);
111114
private Supplier<BeanManager> beanManagerSupplier;
@@ -679,6 +682,7 @@ public <T> T createAndInitialize(Class<T> createMe) {
679682
Constructor<T> constructor = createMe.getConstructor();
680683
return constructor.newInstance();
681684
} catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
685+
LOGGER.warning(e.getMessage());
682686
return null;
683687
}
684688
}

0 commit comments

Comments
 (0)