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;
 
 }