You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ro...@apache.org on 2018/12/13 05:12:12 UTC
svn commit: r1848820 - in /aries/trunk/cdi/cdi-extension-http: pom.xml
src/main/java/org/apache/aries/cdi/extension/http/HttpExtension.java
Author: rotty3000
Date: Thu Dec 13 05:12:12 2018
New Revision: 1848820
URL: http://svn.apache.org/viewvc?rev=1848820&view=rev
Log:
[CDI] prototype ELResolver wiring
Signed-off-by: Raymond Auge <ro...@apache.org>
Modified:
aries/trunk/cdi/cdi-extension-http/pom.xml
aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpExtension.java
Modified: aries/trunk/cdi/cdi-extension-http/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-http/pom.xml?rev=1848820&r1=1848819&r2=1848820&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-http/pom.xml (original)
+++ aries/trunk/cdi/cdi-extension-http/pom.xml Thu Dec 13 05:12:12 2018
@@ -38,6 +38,14 @@
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
+ <configuration>
+ <bnd><![CDATA[
+ Import-Package:\
+ javax.el;resolution:=optional;-remove-attribute:=version,\
+ javax.servlet.jsp;resolution:=optional;-remove-attribute:=version,\
+ *
+ ]]></bnd>
+ </configuration>
</plugin>
</plugins>
</build>
@@ -54,6 +62,11 @@
<version>1.1</version>
</dependency>
<dependency>
+ <groupId>org.glassfish</groupId>
+ <artifactId>javax.el</artifactId>
+ <version>3.0.1-b05</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jcdi_2.0_spec</artifactId>
<version>1.1</version>
@@ -64,6 +77,11 @@
<version>1.1.2</version>
</dependency>
<dependency>
+ <groupId>javax.servlet.jsp</groupId>
+ <artifactId>javax.servlet.jsp-api</artifactId>
+ <version>2.3.3</version>
+ </dependency>
+ <dependency>
<groupId>org.jboss.weld.module</groupId>
<artifactId>weld-web</artifactId>
<version>${weld.release}</version>
Modified: aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpExtension.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpExtension.java?rev=1848820&r1=1848819&r2=1848820&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpExtension.java (original)
+++ aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpExtension.java Thu Dec 13 05:12:12 2018
@@ -32,13 +32,17 @@ import javax.enterprise.inject.spi.BeanM
import javax.enterprise.inject.spi.BeforeShutdown;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionTargetFactory;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionListener;
+import org.jboss.weld.module.web.el.WeldELContextListener;
import org.jboss.weld.module.web.servlet.WeldInitialListener;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceRegistration;
import org.osgi.framework.wiring.BundleCapability;
import org.osgi.framework.wiring.BundleRequirement;
@@ -71,12 +75,52 @@ public class HttpExtension implements Ex
_listenerRegistration = _bundle.getBundleContext().registerService(
LISTENER_CLASSES, initialListener, properties);
+
+ _elAdaptorRegistration = _bundle.getBundleContext().registerService(
+ ServletContextListener.class,
+ new ServletContextListener() {
+ @Override
+ public void contextInitialized(ServletContextEvent event) {
+ ServletContext servletContext = event.getServletContext();
+
+ try {
+ FrameworkUtil.getBundle(getClass()).loadClass("javax.servlet.jsp.JspFactory");
+ }
+ catch (ClassNotFoundException e) {
+ servletContext.log("No JSP API found. Skiping ELResolver wiring for: " + _bundle);
+
+ return;
+ }
+
+ javax.servlet.jsp.JspApplicationContext jspApplicationContext = javax.servlet.jsp.JspFactory.getDefaultFactory().getJspApplicationContext(servletContext);
+
+ // Register the ELResolver with JSP
+ jspApplicationContext.addELResolver(beanManager.getELResolver());
+
+ // Register ELContextListener with JSP
+ try {
+ jspApplicationContext.addELContextListener(new WeldELContextListener());
+ }
+ catch (Exception e) {
+ servletContext.log("Failure registering ELContextListener", e);
+ }
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent event) {
+ // Nothing to do here
+ }
+ },
+ properties);
}
void beforeShutdown(@Observes BeforeShutdown bs) {
if (_listenerRegistration != null) {
_listenerRegistration.unregister();
}
+ if (_elAdaptorRegistration != null) {
+ _elAdaptorRegistration.unregister();
+ }
}
private Map<String, Object> getAttributes() {
@@ -137,5 +181,6 @@ public class HttpExtension implements Ex
private final Bundle _bundle;
private String _contextSelect;
private ServiceRegistration<?> _listenerRegistration;
+ private ServiceRegistration<?> _elAdaptorRegistration;
}