You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by wo...@apache.org on 2009/03/19 16:40:29 UTC

svn commit: r756049 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/providers/ components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/ components/jetspeed-registry/s...

Author: woonsan
Date: Thu Mar 19 15:40:28 2009
New Revision: 756049

URL: http://svn.apache.org/viewvc?rev=756049&view=rev
Log:
JS2-871: Upgrade Pluto container
- Adds Jetspeed implementation for FilterManagerService interface for simple optimization

Added:
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java   (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java   (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java   (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java   (with props)
Removed:
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/providers/FilterManagerImpl.java
Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedPortletURLListenerService.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/FilterImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/ListenerImpl.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Filter.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Listener.java
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pluto-services.xml

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java?rev=756049&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java Thu Mar 19 15:40:28 2009
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.container.services;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.EventPortlet;
+import javax.portlet.EventRequest;
+import javax.portlet.EventResponse;
+import javax.portlet.Portlet;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.ResourceRequest;
+import javax.portlet.ResourceResponse;
+import javax.portlet.ResourceServingPortlet;
+import javax.portlet.filter.ActionFilter;
+import javax.portlet.filter.EventFilter;
+import javax.portlet.filter.FilterChain;
+import javax.portlet.filter.RenderFilter;
+import javax.portlet.filter.ResourceFilter;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.om.portlet.Filter;
+
+public class JetspeedFilterChain implements FilterChain
+{
+    private static final Log LOG = LogFactory.getLog(JetspeedFilterChain.class);
+    
+    private List<Filter> filterList = new ArrayList<Filter>();
+    private String lifeCycle;
+    Portlet portlet;
+    EventPortlet eventPortlet;
+    ResourceServingPortlet resourceServingPortlet;
+    ClassLoader loader;
+    PortletContext portletContext;
+    int filterListIndex = 0;
+
+    public JetspeedFilterChain(String lifeCycle){
+        this.lifeCycle = lifeCycle;
+    }
+    public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, EventPortlet eventPortlet, PortletContext portletContext) throws IOException, PortletException{
+        this.eventPortlet = eventPortlet;
+        this.loader = loader;
+        this.portletContext = portletContext;
+        doFilter((EventRequest)req,(EventResponse) res);
+    }
+    public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, ResourceServingPortlet resourceServingPortlet, PortletContext portletContext) throws IOException, PortletException{
+        this.resourceServingPortlet = resourceServingPortlet;
+        this.loader = loader;
+        this.portletContext = portletContext;
+        doFilter((ResourceRequest)req,(ResourceResponse) res);
+    }
+    
+    public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, Portlet portlet, PortletContext portletContext) throws IOException, PortletException{
+        this.portlet = portlet;
+        this.loader = loader;
+        this.portletContext = portletContext;
+        if (lifeCycle.equals(PortletRequest.ACTION_PHASE)){
+            doFilter((ActionRequest)req,(ActionResponse) res);
+        }
+        else if (lifeCycle.equals(PortletRequest.RENDER_PHASE)){
+            doFilter((RenderRequest)req, (RenderResponse)res);
+        }
+    }
+    
+    public void addFilter(Filter filter){
+        filterList.add(filter);
+    }
+    
+    public void doFilter(ActionRequest request, ActionResponse response) throws IOException, PortletException {
+        if (filterListIndex <filterList.size()){
+            Filter filter = filterList.get(filterListIndex);
+            filterListIndex++;
+            try {
+                ActionFilter actionFilter = (ActionFilter) filter.getFilterInstance(loader);
+                JetspeedFilterConfig filterConfig = new JetspeedFilterConfig(filter.getFilterName(),filter.getInitParams(),portletContext);
+                actionFilter.init(filterConfig);
+                actionFilter.doFilter(request, response, this);
+                actionFilter.destroy();
+            } catch (InstantiationException e) {
+                LOG.error("Failed to instantiate the filter: " + filter.getFilterClass());
+            } catch (IllegalAccessException e) {
+                LOG.error("Illegal access to the filter: " + filter.getFilterClass());
+            } catch (ClassNotFoundException e) {
+                LOG.error("Cannot find the filter class: " + filter.getFilterClass());
+            }
+        }
+        else{
+            portlet.processAction(request, response);
+        }
+    }
+    
+    public void doFilter(EventRequest request, EventResponse response) throws IOException, PortletException {
+        if (filterListIndex <filterList.size()){
+            Filter filter = filterList.get(filterListIndex);
+            filterListIndex++;
+            try {
+                EventFilter eventFilter = (EventFilter) filter.getFilterInstance(loader);
+                JetspeedFilterConfig filterConfig = new JetspeedFilterConfig(filter.getFilterName(),filter.getInitParams(),portletContext);
+                eventFilter.init(filterConfig);
+                eventFilter.doFilter(request, response, this);
+                eventFilter.destroy();
+            } catch (InstantiationException e) {
+                LOG.error("Failed to instantiate the filter: " + filter.getFilterClass());
+            } catch (IllegalAccessException e) {
+                LOG.error("Illegal access to the filter: " + filter.getFilterClass());
+            } catch (ClassNotFoundException e) {
+                LOG.error("Cannot find the filter class: " + filter.getFilterClass());
+            }
+        }
+        else{
+            eventPortlet.processEvent(request, response);
+        }
+    }
+
+    public void doFilter(RenderRequest request, RenderResponse response) throws IOException, PortletException {
+        if (filterListIndex <filterList.size()){
+            Filter filter = filterList.get(filterListIndex);
+            filterListIndex++;
+            try {
+                RenderFilter renderFilter = (RenderFilter) filter.getFilterInstance(loader);
+                JetspeedFilterConfig filterConfig = new JetspeedFilterConfig(filter.getFilterName(),filter.getInitParams(),portletContext);
+                renderFilter.init(filterConfig);
+                renderFilter.doFilter(request, response, this);
+                renderFilter.destroy();
+            } catch (InstantiationException e) {
+                LOG.error("Failed to instantiate the filter: " + filter.getFilterClass());
+            } catch (IllegalAccessException e) {
+                LOG.error("Illegal access to the filter: " + filter.getFilterClass());
+            } catch (ClassNotFoundException e) {
+                LOG.error("Cannot find the filter class: " + filter.getFilterClass());
+            }
+        }
+        else{
+            portlet.render(request, response);
+        }
+    }
+
+    public void doFilter(ResourceRequest request, ResourceResponse response) throws IOException, PortletException {
+        if (filterListIndex <filterList.size()){
+            Filter filter = filterList.get(filterListIndex);
+            filterListIndex++;
+            try {
+                ResourceFilter resourceFilter = (ResourceFilter) filter.getFilterInstance(loader);
+                JetspeedFilterConfig filterConfig = new JetspeedFilterConfig(filter.getFilterName(),filter.getInitParams(),portletContext);
+                resourceFilter.init(filterConfig);
+                resourceFilter.doFilter(request, response, this);
+                resourceFilter.destroy();
+            } catch (InstantiationException e) {
+                LOG.error("Failed to instantiate the filter: " + filter.getFilterClass());
+            } catch (IllegalAccessException e) {
+                LOG.error("Illegal access to the filter: " + filter.getFilterClass());
+            } catch (ClassNotFoundException e) {
+                LOG.error("Cannot find the filter class: " + filter.getFilterClass());
+            }
+        }
+        else{
+            resourceServingPortlet.serveResource(request, response);
+        }
+    }
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterChain.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java?rev=756049&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java Thu Mar 19 15:40:28 2009
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.container.services;
+
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Vector;
+
+import javax.portlet.PortletContext;
+import javax.portlet.filter.FilterConfig;
+
+import org.apache.pluto.container.om.portlet.InitParam;
+
+public class JetspeedFilterConfig implements FilterConfig
+{
+    private final String filterName;
+    private final List<? extends InitParam> initParameters;
+    private final PortletContext portletContext;
+
+    public JetspeedFilterConfig(String filterName, List<? extends InitParam> initParameters, PortletContext portletContext){
+        this.filterName = filterName;
+        this.initParameters = initParameters;
+        this.portletContext = portletContext;
+    }
+
+    /**
+     * @see javax.portlet.filter.FilterConfig#getFilterName()
+     */
+    public String getFilterName() {
+        return filterName;
+    }
+
+    /**
+     * @see javax.portlet.filter.FilterConfig#getInitParameter(java.lang.String)
+     */
+    public String getInitParameter(String name) {
+        if (initParameters != null) {
+            for (InitParam initParameter2 : initParameters) {
+                if (initParameter2.getParamName().equals(name)){
+                    return initParameter2.getParamValue();
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @see javax.portlet.filter.FilterConfig#getInitParameterNames()
+     */
+    public Enumeration<String> getInitParameterNames() {
+        Vector<String> enum1 = new Vector<String>();
+        if ( initParameters != null ) {
+            for(InitParam ip : this.initParameters ) {
+                enum1.add(ip.getParamName());
+            }
+        }
+        return enum1.elements();
+    }
+
+    /**
+     * @see javax.portlet.filter.FilterConfig#getPortletContext()
+     */
+    public PortletContext getPortletContext() {
+        return portletContext;
+    }
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterConfig.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java?rev=756049&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java Thu Mar 19 15:40:28 2009
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.container.services;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.portlet.EventPortlet;
+import javax.portlet.Portlet;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+import javax.portlet.ResourceServingPortlet;
+
+import org.apache.jetspeed.om.portlet.Filter;
+import org.apache.jetspeed.om.portlet.FilterMapping;
+import org.apache.jetspeed.om.portlet.PortletApplication;
+import org.apache.pluto.container.FilterManager;
+
+public class JetspeedFilterManager implements FilterManager{
+    private JetspeedFilterChain filterchain;
+    private PortletApplication portletApp;
+    private String portletName;
+    private String lifeCycle;
+    
+    public JetspeedFilterManager(PortletApplication portletApp, String portletName, String lifeCycle){
+        this.portletApp = portletApp;
+        this.portletName =  portletName;
+        this.lifeCycle = lifeCycle;
+        filterchain = new JetspeedFilterChain(lifeCycle);
+        initFilterChain();
+    }
+    
+    private void initFilterChain(){
+        List<? extends FilterMapping> filterMappingList = portletApp.getFilterMappings();
+        if (filterMappingList!= null){
+            for (FilterMapping filterMapping : filterMappingList) {
+                if (isFilter(filterMapping, portletName)){
+                    //the filter is specified for the portlet, check the filter for the lifecycle
+                    List<? extends Filter> filterList = portletApp.getFilters();
+                    for (Filter filter : filterList) {
+                        //search for the filter in the filter
+                        if (filter.getFilterName().equals(filterMapping.getFilterName())){
+                            //check the lifecycle
+                            if (isLifeCycle(filter, lifeCycle)){
+                                //the filter match to the portlet and has the specified lifecycle -> add to chain
+                                filterchain.addFilter(filter);
+                            }
+                        }
+                    }
+                }
+            }
+        }   
+    }
+    
+    public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, EventPortlet eventPortlet,PortletContext portletContext)throws PortletException, IOException{
+        filterchain.processFilter(req, res, loader, eventPortlet, portletContext);
+    }
+    
+    public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, ResourceServingPortlet resourceServingPortlet,PortletContext portletContext)throws PortletException, IOException{
+        filterchain.processFilter(req, res, loader, resourceServingPortlet, portletContext);
+    }
+    
+    public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, Portlet portlet,PortletContext portletContext) throws PortletException, IOException{
+        filterchain.processFilter(req, res, loader, portlet, portletContext);
+    }
+    
+    private boolean isLifeCycle(Filter filter, String lifeCycle){
+        List <String> lifeCyclesList = filter.getLifecycles();
+        for (String string : lifeCyclesList) {
+            if (string.equals(lifeCycle))
+                return true;
+        }
+        return false;
+    }
+    
+    private boolean isFilter(FilterMapping filterMapping,String portletName){
+        List <String> portletNamesList = filterMapping.getPortletNames();
+        for (String portletNameFromFilterList : portletNamesList) {
+            if (portletNameFromFilterList.endsWith("*")){
+                if (portletNameFromFilterList.length()==1){
+                    //if name contains only *
+                    return true;
+                }
+                portletNameFromFilterList = portletNameFromFilterList.substring(0, portletNameFromFilterList.length()-1);
+                if (portletName.length()>= portletNameFromFilterList.length()){
+                    if (portletName.substring(0, portletNameFromFilterList.length()).equals(portletNameFromFilterList)){
+                        return true;
+                    }
+                }
+            }
+            else if (portletNameFromFilterList.equals(portletName))
+                return true;
+        }
+        return false;
+    }
+    
+
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java?rev=756049&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java Thu Mar 19 15:40:28 2009
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.container.services;
+
+import org.apache.jetspeed.om.portlet.PortletApplication;
+import org.apache.pluto.container.FilterManager;
+import org.apache.pluto.container.FilterManagerService;
+import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
+
+public class JetspeedFilterManagerService implements FilterManagerService
+{
+    public FilterManager getFilterManager(PortletApplicationDefinition portletAppDD, String portletName, String lifeCycle)
+    {
+        return new JetspeedFilterManager((PortletApplication) portletAppDD, portletName, lifeCycle);
+    }
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedFilterManagerService.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedPortletURLListenerService.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedPortletURLListenerService.java?rev=756049&r1=756048&r2=756049&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedPortletURLListenerService.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/services/JetspeedPortletURLListenerService.java Thu Mar 19 15:40:28 2009
@@ -42,7 +42,7 @@
         if (portletURLFilterList != null){
             for (Listener listener : portletURLFilterList) {
                 try {
-                    listeners.add(listener.getListenerInstance());
+                    listeners.add(listener.getListenerInstance(Thread.currentThread().getContextClassLoader()));
                 } catch (ClassNotFoundException e) {
                     String message = "The listener class isn't found: " + listener.getListenerClass();
                     LOG.error(message);

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/FilterImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/FilterImpl.java?rev=756049&r1=756048&r2=756049&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/FilterImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/FilterImpl.java Thu Mar 19 15:40:28 2009
@@ -22,12 +22,13 @@
 import java.util.List;
 import java.util.Locale;
 
+import javax.portlet.filter.PortletFilter;
+
 import org.apache.jetspeed.om.portlet.Description;
 import org.apache.jetspeed.om.portlet.DisplayName;
 import org.apache.jetspeed.om.portlet.Filter;
 import org.apache.jetspeed.om.portlet.FilterLifecycle;
 import org.apache.jetspeed.om.portlet.InitParam;
-import org.apache.jetspeed.om.portlet.SupportedPublicRenderParameter;
 import org.apache.jetspeed.util.JetspeedLocale;
 
 /**
@@ -42,6 +43,7 @@
     protected List<InitParam> initParams;
     protected List<Description> descriptions;
     protected List<DisplayName> displayNames;
+    protected PortletFilter filterInstance;
     
     public Description getDescription(Locale locale)
     {
@@ -181,4 +183,15 @@
         initParams.add(param);
         return param;
     }
+    
+    public PortletFilter getFilterInstance(ClassLoader loader) throws InstantiationException, IllegalAccessException, ClassNotFoundException 
+    {
+        if (this.filterInstance == null) 
+        {
+            Class<? extends Object> clazz = loader.loadClass(getFilterClass());
+            this.filterInstance = (PortletFilter) clazz.newInstance();
+        }
+        
+        return this.filterInstance;
+    }
 }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/ListenerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/ListenerImpl.java?rev=756049&r1=756048&r2=756049&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/ListenerImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/om/portlet/impl/ListenerImpl.java Thu Mar 19 15:40:28 2009
@@ -107,11 +107,10 @@
         return d;
     }
     
-    public PortletURLGenerationListener getListenerInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException 
+    public PortletURLGenerationListener getListenerInstance(ClassLoader loader) throws ClassNotFoundException, InstantiationException, IllegalAccessException 
     {
         if (this.listenerInstance == null) 
         {
-            ClassLoader loader = Thread.currentThread().getContextClassLoader();
             Class<? extends Object> clazz = loader.loadClass(getListenerClass());
             this.listenerInstance = (PortletURLGenerationListener) clazz.newInstance();
         }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Filter.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Filter.java?rev=756049&r1=756048&r2=756049&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Filter.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Filter.java Thu Mar 19 15:40:28 2009
@@ -19,6 +19,8 @@
 import java.util.List;
 import java.util.Locale;
 
+import javax.portlet.filter.PortletFilter;
+
 /**
  * 
  * @version $Id$
@@ -37,4 +39,6 @@
 	InitParam getInitParam(String paramName);
 	List<InitParam> getInitParams();
 	InitParam addInitParam(String paramName);
+	
+	PortletFilter getFilterInstance(ClassLoader loader) throws InstantiationException, IllegalAccessException, ClassNotFoundException;
 }
\ No newline at end of file

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Listener.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Listener.java?rev=756049&r1=756048&r2=756049&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Listener.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/portlet/Listener.java Thu Mar 19 15:40:28 2009
@@ -36,5 +36,5 @@
     List<DisplayName> getDisplayNames();
     DisplayName addDisplayName(String lang);
     
-    PortletURLGenerationListener getListenerInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException;
+    PortletURLGenerationListener getListenerInstance(ClassLoader loader) throws ClassNotFoundException, InstantiationException, IllegalAccessException;
 }
\ No newline at end of file

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pluto-services.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pluto-services.xml?rev=756049&r1=756048&r2=756049&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pluto-services.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pluto-services.xml Thu Mar 19 15:40:28 2009
@@ -30,7 +30,7 @@
       <constructor-arg><ref bean="PortalContext"/></constructor-arg>
       <constructor-arg><ref bean="org.apache.pluto.services.EventCoordinationService"/></constructor-arg>
       <constructor-arg><ref bean="org.apache.pluto.container.PortletRequestContextService"/></constructor-arg>
-      <constructor-arg><null/></constructor-arg>
+      <constructor-arg><ref bean="org.apache.pluto.container.FilterManagerService"/></constructor-arg>
       <constructor-arg><ref bean="org.apache.pluto.container.PortletURLListenerService"/></constructor-arg>
     </bean>
     
@@ -64,8 +64,8 @@
       <constructor-arg><ref bean="DynamicTitleService"/></constructor-arg>   
     </bean>
     
-    <bean id='org.apache.pluto.services.FilterManager'
-          class='org.apache.jetspeed.container.providers.FilterManagerImpl'>
+    <bean id="org.apache.pluto.container.FilterManagerService"
+          class="org.apache.jetspeed.container.services.JetspeedFilterManagerService">
       <meta key="j2:cat" value="default" />       
     </bean>
     



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org