[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