[exo-jcr-commits] exo-jcr SVN: r220 - in jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web: fckeditor and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Oct 5 07:07:27 EDT 2009


Author: nfilotto
Date: 2009-10-05 07:07:27 -0400 (Mon, 05 Oct 2009)
New Revision: 220

Modified:
   jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/CommandControllerServlet.java
   jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/DisplayJCRContentServlet.java
   jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/ThreadLocalSessionProviderInitializedFilter.java
   jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/fckeditor/JCRContentFCKeditor.java
Log:
EXOJCR-166: Support separated ear delivery

Modified: jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/CommandControllerServlet.java
===================================================================
--- jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/CommandControllerServlet.java	2009-10-05 11:06:46 UTC (rev 219)
+++ jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/CommandControllerServlet.java	2009-10-05 11:07:27 UTC (rev 220)
@@ -20,16 +20,19 @@
 
 import org.apache.commons.chain.Command;
 import org.exoplatform.container.ExoContainer;
-import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.PortalContainer;
 import org.exoplatform.frameworks.jcr.command.web.GenericWebAppContext;
 import org.exoplatform.services.command.impl.CommandService;
 import org.exoplatform.services.jcr.RepositoryService;
 import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
 import org.exoplatform.services.jcr.ext.app.SessionProviderService;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
 
 import java.io.IOException;
 
 import javax.jcr.RepositoryException;
+import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -42,19 +45,31 @@
  * @version $Id: CommandControllerServlet.java 14756 2008-05-26 14:47:15Z pnedonosko $
  */
 
+ at SuppressWarnings("serial")
 public class CommandControllerServlet extends HttpServlet
 {
 
+   private static Log log = ExoLogger.getLogger("jcr:CommandControllerServlet");
+   
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
       IOException
    {
 
-      ExoContainer container = (ExoContainer)getServletContext().getAttribute(WebConstants.EXO_CONTAINER);
+      ServletContext servletCtx = getServletContext();
+      ExoContainer container = (ExoContainer)servletCtx.getAttribute(WebConstants.EXO_CONTAINER);
+      final ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
+      boolean hasChanged = false;
+      ClassLoader pcClassLoader = null;
       if (container == null)
       {
-         String portalName = getServletContext().getServletContextName();
-         container = ExoContainerContext.getCurrentContainer();
+         container = PortalContainer.getCurrentInstance(servletCtx);
+         if (container instanceof PortalContainer)
+         {
+            PortalContainer pc = (PortalContainer)container;
+            pcClassLoader = pc.getPortalClassLoader();
+            servletCtx = pc.getPortalContext();
+         }
       }
 
       SessionProviderService sessionProviderService =
@@ -67,7 +82,7 @@
       try
       {
          ctx =
-            new GenericWebAppContext(getServletContext(), request, response, sessionProviderService
+            new GenericWebAppContext(servletCtx, request, response, sessionProviderService
                .getSessionProvider(null), // null for
                // ThreadLocalSessionProvider
                repositoryService.getDefaultRepository());
@@ -112,13 +127,27 @@
          throw new ServletException("No Command found " + commandName);
       try
       {
+         if (pcClassLoader != null)
+         {
+            // Set the portal classloader to get all the resources defined within the portal context
+            Thread.currentThread().setContextClassLoader(pcClassLoader);
+            hasChanged = true;
+         }         
          cmd.execute(ctx);
       }
       catch (Exception e)
       {
-         e.printStackTrace();
+         log.error("An error occurs while executing the command " + commandName, e);
          throw new ServletException(e);
       }
+      finally
+      {
+         if (hasChanged)
+         {
+            // Re-set the old classloader
+            Thread.currentThread().setContextClassLoader(currentClassLoader);
+         }
+      }
    }
 
 }

Modified: jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/DisplayJCRContentServlet.java
===================================================================
--- jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/DisplayJCRContentServlet.java	2009-10-05 11:06:46 UTC (rev 219)
+++ jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/DisplayJCRContentServlet.java	2009-10-05 11:07:27 UTC (rev 220)
@@ -20,7 +20,7 @@
 
 import org.apache.commons.chain.Command;
 import org.exoplatform.container.ExoContainer;
-import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.PortalContainer;
 import org.exoplatform.frameworks.jcr.command.web.GenericWebAppContext;
 import org.exoplatform.services.command.impl.CommandService;
 import org.exoplatform.services.jcr.RepositoryService;
@@ -57,8 +57,7 @@
       ExoContainer container = (ExoContainer)getServletContext().getAttribute(WebConstants.EXO_CONTAINER);
       if (container == null)
       {
-         String portalName = getServletContext().getServletContextName();
-         container = ExoContainerContext.getCurrentContainer();
+         container = PortalContainer.getCurrentInstance(getServletContext());
       }
 
       SessionProviderService sessionProviderService =

Modified: jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/ThreadLocalSessionProviderInitializedFilter.java
===================================================================
--- jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/ThreadLocalSessionProviderInitializedFilter.java	2009-10-05 11:06:46 UTC (rev 219)
+++ jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/ThreadLocalSessionProviderInitializedFilter.java	2009-10-05 11:07:27 UTC (rev 220)
@@ -19,7 +19,7 @@
 package org.exoplatform.frameworks.jcr.web;
 
 import org.exoplatform.container.ExoContainer;
-import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.web.AbstractFilter;
 import org.exoplatform.services.jcr.ext.app.SessionProviderService;
 import org.exoplatform.services.jcr.ext.common.SessionProvider;
 import org.exoplatform.services.log.ExoLogger;
@@ -31,9 +31,7 @@
 
 import java.io.IOException;
 
-import javax.servlet.Filter;
 import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
@@ -49,7 +47,7 @@
  * @author Gennady Azarenkov
  * @version $Id: $
  */
-public class ThreadLocalSessionProviderInitializedFilter implements Filter
+public class ThreadLocalSessionProviderInitializedFilter extends AbstractFilter
 {
 
    private ConversationRegistry stateRegistry;
@@ -60,14 +58,6 @@
 
    /*
     * (non-Javadoc)
-    * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
-    */
-   public void init(FilterConfig config) throws ServletException
-   {
-   }
-
-   /*
-    * (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse,
     * javax.servlet.FilterChain)
     */
@@ -75,7 +65,7 @@
       ServletException
    {
 
-      ExoContainer container = ExoContainerContext.getCurrentContainer();
+      ExoContainer container = getContainer();
 
       providerService = (SessionProviderService)container.getComponentInstanceOfType(SessionProviderService.class);
       stateRegistry = (ConversationRegistry)container.getComponentInstanceOfType(ConversationRegistry.class);

Modified: jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/fckeditor/JCRContentFCKeditor.java
===================================================================
--- jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/fckeditor/JCRContentFCKeditor.java	2009-10-05 11:06:46 UTC (rev 219)
+++ jcr/trunk/frameworks/web/src/main/java/org/exoplatform/frameworks/jcr/web/fckeditor/JCRContentFCKeditor.java	2009-10-05 11:07:27 UTC (rev 220)
@@ -19,7 +19,7 @@
 package org.exoplatform.frameworks.jcr.web.fckeditor;
 
 import org.exoplatform.container.ExoContainer;
-import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.container.PortalContainer;
 import org.exoplatform.frameworks.jcr.web.WebConstants;
 import org.exoplatform.services.jcr.RepositoryService;
 import org.exoplatform.services.jcr.core.ManageableRepository;
@@ -56,11 +56,8 @@
       ExoContainer container =
          (ExoContainer)req.getSession().getServletContext().getAttribute(WebConstants.EXO_CONTAINER);
       if (container == null)
-      { // this
-         String portalName = req.getSession().getServletContext().getServletContextName(); // req.
-         // getContextPath
-         // ();
-         container = ExoContainerContext.getCurrentContainer();
+      {
+         container = PortalContainer.getCurrentInstance(req.getSession().getServletContext());
       }
 
       SessionProviderService sessionProviderService =



More information about the exo-jcr-commits mailing list