You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2016/01/18 13:41:33 UTC
[31/35] portals-pluto git commit: Modified the portlet servlet to use
the bean-based portlet invoker. added beans.xml file to the V3 demos.
Modified the portlet servlet to use the bean-based portlet invoker.
added beans.xml file to the V3 demos.
Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/92f8e874
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/92f8e874
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/92f8e874
Branch: refs/heads/V3Prototype
Commit: 92f8e874f8ff304e12ab93acb7445b2437bd7d56
Parents: afb1a42
Author: Scott Nicklous <ms...@apache.org>
Authored: Fri Jan 15 09:59:46 2016 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Fri Jan 15 09:59:46 2016 +0100
----------------------------------------------------------------------
.../src/main/resources/logging.properties | 4 +-
.../src/main/webapp/WEB-INF/beans.xml | 7 +
.../src/main/resources/logging.properties | 2 +-
.../src/main/webapp/WEB-INF/beans.xml | 7 +
.../src/main/resources/logging.properties | 2 +-
PortletV3Demo/src/main/webapp/WEB-INF/beans.xml | 7 +
.../pluto/container/driver/PortletServlet3.java | 132 +++++--------------
.../src/main/resources/META-INF/beans.xml | 18 ++-
8 files changed, 75 insertions(+), 104 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/PortletHubDemo/src/main/resources/logging.properties
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/resources/logging.properties b/PortletHubDemo/src/main/resources/logging.properties
index 04c2b66..30b4ec8 100644
--- a/PortletHubDemo/src/main/resources/logging.properties
+++ b/PortletHubDemo/src/main/resources/logging.properties
@@ -28,10 +28,10 @@ handlers = org.apache.juli.FileHandler
#
############################################################
-org.apache.juli.FileHandler.level = FINEST
+org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
#Log file will be named pluto.<yyyy-mm-dd>.log
org.apache.juli.FileHandler.prefix = PortletHubDemo.
-org.apache.pluto.level=FINEST
+org.apache.pluto.level=FINE
basic.portlet.level=FINEST
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/PortletHubDemo/src/main/webapp/WEB-INF/beans.xml
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/beans.xml b/PortletHubDemo/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..6c3e86c
--- /dev/null
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+ version="1.1" bean-discovery-mode="all">
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/PortletV3AnnotatedDemo/src/main/resources/logging.properties
----------------------------------------------------------------------
diff --git a/PortletV3AnnotatedDemo/src/main/resources/logging.properties b/PortletV3AnnotatedDemo/src/main/resources/logging.properties
index 0e27358..09bae36 100644
--- a/PortletV3AnnotatedDemo/src/main/resources/logging.properties
+++ b/PortletV3AnnotatedDemo/src/main/resources/logging.properties
@@ -33,5 +33,5 @@ org.apache.juli.FileHandler.directory = ${catalina.base}/logs
#Log file will be named pluto.<yyyy-mm-dd>.log
org.apache.juli.FileHandler.prefix = PortletV3AnnotatedDemo.
-org.apache.pluto.level=FINEST
+org.apache.pluto.level=FINE
basic.portlet.level=FINEST
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/PortletV3AnnotatedDemo/src/main/webapp/WEB-INF/beans.xml
----------------------------------------------------------------------
diff --git a/PortletV3AnnotatedDemo/src/main/webapp/WEB-INF/beans.xml b/PortletV3AnnotatedDemo/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..6c3e86c
--- /dev/null
+++ b/PortletV3AnnotatedDemo/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+ version="1.1" bean-discovery-mode="all">
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/PortletV3Demo/src/main/resources/logging.properties
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/resources/logging.properties b/PortletV3Demo/src/main/resources/logging.properties
index 42a1f93..a83e946 100644
--- a/PortletV3Demo/src/main/resources/logging.properties
+++ b/PortletV3Demo/src/main/resources/logging.properties
@@ -33,5 +33,5 @@ org.apache.juli.FileHandler.directory = ${catalina.base}/logs
#Log file will be named pluto.<yyyy-mm-dd>.log
org.apache.juli.FileHandler.prefix = PortletV3Demo.
-org.apache.pluto.level=FINEST
+org.apache.pluto.level=FINE
basic.portlet.level=FINEST
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/PortletV3Demo/src/main/webapp/WEB-INF/beans.xml
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/beans.xml b/PortletV3Demo/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..6c3e86c
--- /dev/null
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+ version="1.1" bean-discovery-mode="all">
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
----------------------------------------------------------------------
diff --git a/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java b/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
index d939d24..7155e04 100644
--- a/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
+++ b/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
@@ -20,16 +20,13 @@ import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
+import javax.inject.Inject;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
-import javax.portlet.EventPortlet;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
-import javax.portlet.HeaderPortlet;
import javax.portlet.HeaderRequest;
import javax.portlet.HeaderResponse;
-import javax.portlet.Portlet;
-import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
@@ -37,7 +34,6 @@ import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
-import javax.portlet.ResourceServingPortlet;
import javax.portlet.UnavailableException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
@@ -53,12 +49,13 @@ import org.apache.pluto.container.PortletRequestContext;
import org.apache.pluto.container.PortletResourceRequestContext;
import org.apache.pluto.container.PortletResponseContext;
import org.apache.pluto.container.PortletWindow;
-import org.apache.pluto.container.om.portlet.PortletDefinition;
+import org.apache.pluto.container.bean.processor.AnnotatedConfigBean;
+import org.apache.pluto.container.bean.processor.PortletInvoker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Portlet Invocation Servlet. This servlet recieves cross context requests from the the container and services the
+ * Portlet Invocation Servlet. This servlet receives cross context requests from the the container and services the
* portlet request for the specified method.
*
* @version 1.1
@@ -69,42 +66,16 @@ public class PortletServlet3 extends HttpServlet {
/** Logger. */
private static final Logger LOG = LoggerFactory.getLogger(PortletServlet3.class);
- private static final boolean isDebug = LOG.isDebugEnabled();
-
/**
* Portlet name constant, needed by portlet container initializer
*/
public static final String PORTLET_NAME = "portlet-name";
- private class NullPortlet implements EventPortlet, ResourceServingPortlet, Portlet, HeaderPortlet {
- public void processEvent(EventRequest arg0, EventResponse arg1) throws PortletException, IOException {
- }
-
- public void serveResource(ResourceRequest arg0, ResourceResponse arg1) throws PortletException, IOException {
- }
-
- public void destroy() {
- }
-
- public void init(PortletConfig arg0) throws PortletException {
- }
-
- public void processAction(ActionRequest arg0, ActionResponse arg1) throws PortletException, IOException {
- }
-
- public void render(RenderRequest arg0, RenderResponse arg1) throws PortletException, IOException {
- }
-
- @Override
- public void renderHeaders(HeaderRequest request, HeaderResponse response) throws PortletException, IOException {
- if (isDebug) {
- LOG.debug("NullPortlet renderHeaders! Portlet name: " + portletName);
- }
- }
- }
-
// Private Member Variables ------------------------------------------------
+
+ @Inject
+ private AnnotatedConfigBean acb;
/**
* The portlet name as defined in the portlet app descriptor.
@@ -114,7 +85,7 @@ public class PortletServlet3 extends HttpServlet {
/**
* The portlet instance wrapped by this servlet.
*/
- private Portlet portlet;
+ private PortletInvoker invoker = null;
/**
* The internal portlet context instance.
@@ -126,19 +97,6 @@ public class PortletServlet3 extends HttpServlet {
*/
private DriverPortletConfig portletConfig;
- /**
- * The Event Portlet instance (the same object as portlet) wrapped by this servlet.
- */
- private EventPortlet eventPortlet;
-
- /**
- * Header portlet instance
- */
- private HeaderPortlet headerPortlet;
-
- /** The resource serving portlet instance wrapped by this servlet. */
- private ResourceServingPortlet resourceServingPortlet;
-
private PortletContextService contextService;
private boolean started = false;
@@ -163,6 +121,20 @@ public class PortletServlet3 extends HttpServlet {
// Retrieve portlet name as defined as an initialization parameter.
portletName = getInitParameter(PORTLET_NAME);
+
+ // Get the config bean and create the invoker
+ try {
+ if (acb == null || acb.getMethodStore() == null) {
+ LOG.error("Could not obtain configuration bean for portlet " + portletName + ". Exiting.");
+ return;
+ } else {
+ invoker = new PortletInvoker(acb, portletName);
+ LOG.debug("Created the portlet invoker for portlet: " + portletName);
+ }
+ } catch(Exception e) {
+ LOG.error("Exception obtaining configuration bean for portlet " + portletName + ". Exiting. Exception: " + e.toString());
+ return;
+ }
started = false;
@@ -204,21 +176,14 @@ public class PortletServlet3 extends HttpServlet {
return true;
}
- PortletDefinition portletDD = portletConfig.getPortletDefinition();
-
- // Create and initialize the portlet wrapped in the servlet.
+ // initialize the portlet wrapped in the servlet.
try {
- Class<?> clazz = paClassLoader.loadClass((portletDD.getPortletClass()));
- portlet = (Portlet) clazz.newInstance();
- portlet.init(portletConfig);
- initializeEventPortlet();
- initializeResourceServingPortlet();
- initializeHeaderPortlet();
+ invoker.init(portletConfig);
return true;
} catch (Exception ex) {
context.log(ex.getMessage(), ex);
// take out of service
- portlet = null;
+ invoker = null;
portletConfig = null;
return true;
}
@@ -234,13 +199,13 @@ public class PortletServlet3 extends HttpServlet {
} else if (started && portletContext != null) {
started = false;
contextService.unregister(portletContext);
- if (portlet != null) {
+ if (invoker != null) {
try {
- portlet.destroy();
+ invoker.destroy();
} catch (Exception e) {
// ignore
}
- portlet = null;
+ invoker = null;
}
}
super.destroy();
@@ -278,7 +243,7 @@ public class PortletServlet3 extends HttpServlet {
* @throws IOException
*/
private void dispatch(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- if (portlet == null) {
+ if (invoker == null) {
throw new javax.servlet.UnavailableException("Portlet " + portletName + " unavailable");
}
@@ -325,7 +290,7 @@ public class PortletServlet3 extends HttpServlet {
renderRequest.setAttribute(PortletRequest.RENDER_PART, rh);
}
RenderResponse renderResponse = (RenderResponse) portletResponse;
- filterManager.processFilter(renderRequest, renderResponse, portlet, portletContext);
+ filterManager.processFilter(renderRequest, renderResponse, invoker, portletContext);
}
// The requested method is HEADER: call
@@ -333,7 +298,7 @@ public class PortletServlet3 extends HttpServlet {
else if (methodId == PortletInvokerService.METHOD_HEADER) {
HeaderRequest headerRequest = (HeaderRequest) portletRequest;
HeaderResponse headerResponse = (HeaderResponse) portletResponse;
- filterManager.processFilter(headerRequest, headerResponse, headerPortlet, portletContext);
+ filterManager.processFilter(headerRequest, headerResponse, invoker, portletContext);
}
// The requested method is RESOURCE: call
@@ -350,21 +315,21 @@ public class PortletServlet3 extends HttpServlet {
}
ResourceResponse resourceResponse = (ResourceResponse) portletResponse;
- filterManager.processFilter(resourceRequest, resourceResponse, resourceServingPortlet, portletContext);
+ filterManager.processFilter(resourceRequest, resourceResponse, invoker, portletContext);
}
// The requested method is ACTION: call Portlet.processAction(..)
else if (methodId == PortletInvokerService.METHOD_ACTION) {
ActionRequest actionRequest = (ActionRequest) portletRequest;
ActionResponse actionResponse = (ActionResponse) portletResponse;
- filterManager.processFilter(actionRequest, actionResponse, portlet, portletContext);
+ filterManager.processFilter(actionRequest, actionResponse, invoker, portletContext);
}
// The request methode is Event: call Portlet.processEvent(..)
else if (methodId == PortletInvokerService.METHOD_EVENT) {
EventRequest eventRequest = (EventRequest) portletRequest;
EventResponse eventResponse = (EventResponse) portletResponse;
- filterManager.processFilter(eventRequest, eventResponse, eventPortlet, portletContext);
+ filterManager.processFilter(eventRequest, eventResponse, invoker, portletContext);
}
// The requested method is ADMIN: call handlers.
else if (methodId == PortletInvokerService.METHOD_ADMIN) {
@@ -392,15 +357,14 @@ public class PortletServlet3 extends HttpServlet {
// Portlet.destroy() isn't called by Tomcat, so we have to fix it.
try {
- portlet.destroy();
+ invoker.destroy();
} catch (Throwable th) {
// Don't care for Exception
this.getServletContext().log("Error during portlet destroy.", th);
}
// take portlet out of service
- portlet = null;
+ invoker = null;
- // TODO: Handle everything as permanently for now.
throw new javax.servlet.UnavailableException(ex.getMessage());
} catch (PortletException ex) {
@@ -423,28 +387,4 @@ public class PortletServlet3 extends HttpServlet {
}
}
}
-
- private void initializeEventPortlet() {
- if (portlet instanceof EventPortlet) {
- eventPortlet = (EventPortlet) portlet;
- } else {
- eventPortlet = new NullPortlet();
- }
- }
-
- private void initializeResourceServingPortlet() {
- if (portlet instanceof ResourceServingPortlet) {
- resourceServingPortlet = (ResourceServingPortlet) portlet;
- } else {
- resourceServingPortlet = new NullPortlet();
- }
- }
-
- private void initializeHeaderPortlet() {
- if (portlet instanceof HeaderPortlet) {
- headerPortlet = (HeaderPortlet) portlet;
- } else {
- headerPortlet = new NullPortlet();
- }
- }
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/92f8e874/pluto-container/src/main/resources/META-INF/beans.xml
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/resources/META-INF/beans.xml b/pluto-container/src/main/resources/META-INF/beans.xml
index 115420e..451d465 100644
--- a/pluto-container/src/main/resources/META-INF/beans.xml
+++ b/pluto-container/src/main/resources/META-INF/beans.xml
@@ -1,5 +1,15 @@
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
-http://java.sun.com/xml/ns/javaee
-http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+ version="1.1" bean-discovery-mode="all">
+
+ <scan>
+ <exclude name="org.apache.container.impl.*"></exclude>
+ <exclude name="org.apache.container.util.*"></exclude>
+ <exclude name="org.apache.container.om.portlet.impl.*"></exclude>
+ <exclude name="org.apache.container.om.portlet10.impl.*"></exclude>
+ <exclude name="org.apache.container.om.portlet20.impl.*"></exclude>
+ <exclude name="org.apache.container.om.portlet30.impl.*"></exclude>
+ </scan>
</beans>
\ No newline at end of file