Author: taylor
Date: Sun Feb 18 18:49:45 2007
New Revision: 509066

URL: http://svn.apache.org/viewvc?view=rev&rev=509066
Log:
little utility portlet for managing out of service portlets

Added:
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/tracking/
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/tracking/PortletTrackingPortlet.java
    
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/tracking/
    
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/tracking/tracking.vm
Modified:
    
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
    
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java
    portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml

Added: 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/tracking/PortletTrackingPortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/tracking/PortletTrackingPortlet.java?view=auto&rev=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/tracking/PortletTrackingPortlet.java
 (added)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/tracking/PortletTrackingPortlet.java
 Sun Feb 18 18:49:45 2007
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2000-2001,2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.portlets.tracking;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.aggregator.PortletTrackingManager;
+import 
org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
+import org.apache.pluto.om.window.PortletWindow;
+import org.apache.portals.bridges.velocity.GenericVelocityPortlet;
+import org.apache.velocity.context.Context;
+
+public class PortletTrackingPortlet extends GenericVelocityPortlet
+{
+    private PortletEntityAccessComponent entityAccess;
+    private PortletRegistry registry;
+    private PortletTrackingManager trackingManager;
+    
+
+     /* (non-Javadoc)
+     * @see 
org.apache.portals.bridges.velocity.GenericVelocityPortlet#init(javax.portlet.PortletConfig)
+     */
+    public void init(PortletConfig config) throws PortletException
+    {
+        super.init(config);
+        PortletContext context = getPortletContext();
+        entityAccess = 
(PortletEntityAccessComponent)context.getAttribute(CommonPortletServices.CPS_ENTITY_ACCESS_COMPONENT);
+        registry = 
(PortletRegistry)context.getAttribute(CommonPortletServices.CPS_REGISTRY_COMPONENT);
+        trackingManager = 
(PortletTrackingManager)context.getAttribute(CommonPortletServices.CPS_PORTLET_TRACKING_MANAGER);
+    }
+
+    public void doView(RenderRequest request, RenderResponse response) throws 
PortletException, IOException
+    {
+        List outOfService = createList();
+        Context context = getContext(request);
+        context.put("outOfService", outOfService);
+        context.put("count", new Integer(outOfService.size()));
+        super.doView(request, response);
+    }
+    
+    protected List createList()
+    {
+        List result = new ArrayList();
+        Iterator outOfService = 
trackingManager.getOutOfServiceList().iterator();
+        Map portlets = new HashMap();
+        while (outOfService.hasNext())
+        {
+            PortletWindow window = (PortletWindow)outOfService.next();
+            String id = window.getId().toString();
+            PortletDefinitionComposite pd = 
(PortletDefinitionComposite)window.getPortletEntity().getPortletDefinition();
+            String uniqueName = pd.getUniqueName();
+            if (!portlets.containsKey(uniqueName))
+            {
+                portlets.put(uniqueName, id);
+                result.add(pd);              
+            }
+        }
+        return result;
+    }
+    
+    public void processAction(ActionRequest request, ActionResponse 
actionResponse)
+    throws PortletException, IOException
+    {
+        List result = new ArrayList();
+        Enumeration e = request.getParameterNames();
+        while (e.hasMoreElements())
+        {
+            String param = (String)e.nextElement();
+            if (param.indexOf("::") > 0)
+            {
+                String[] values = request.getParameterValues(param);
+                if (values[0] != null)
+                {
+                    result.add(param);
+                }
+            }
+        }
+        if (result.size() > 0)
+        {            
+            trackingManager.putIntoService(result);
+        }
+        
+    }
+}

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml?view=diff&rev=509066&r1=509065&r2=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
 Sun Feb 18 18:49:45 2007
@@ -79,7 +79,8 @@
         <js:service name="SSO" />                 
         <js:service name='UserManager'/>     
         <js:service name='DecorationFactory'/> 
-        <js:service name='SecurityAccessController'/>       
+        <js:service name='SecurityAccessController'/>  
+        <js:service name='PortletTrackingManager'/>     
        </js:services>
 
 </portlet-app>

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml?view=diff&rev=509066&r1=509065&r2=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml 
(original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/portlet.xml 
Sun Feb 18 18:49:45 2007
@@ -1478,5 +1478,28 @@
     </portlet-info>
   </portlet>
 
+  <portlet>
+    <description>Portlet Tracking Manager</description>
+    <portlet-name>PortletTracking</portlet-name>
+    <display-name>Portlet Tracking Manager</display-name>
+    
<portlet-class>org.apache.jetspeed.portlets.tracking.PortletTrackingPortlet</portlet-class>
+    <init-param>
+      <name>ViewPage</name>
+      <value>/WEB-INF/view/tracking/tracking.vm</value>
+    </init-param>
+    <expiration-cache>-1</expiration-cache>
+    <supports>
+      <mime-type>text/html</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <supported-locale>en</supported-locale>
+    <!-- resource-bundle></resource-bundle -->
+    <portlet-info>
+      <title>Portlet Tracking</title>
+      <short-title>Tracking</short-title>
+      <keywords>admin,tracking,out of service</keywords>
+    </portlet-info>
+  </portlet>
+
 </portlet-app>
 

Added: 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/tracking/tracking.vm
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/tracking/tracking.vm?view=auto&rev=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/tracking/tracking.vm
 (added)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/tracking/tracking.vm
 Sun Feb 18 18:49:45 2007
@@ -0,0 +1,36 @@
+<h3>List of Portlets out of Service: </h3>
+<p>
+#set ($formAction = $renderResponse.createActionURL())
+<form name='trackingForm' action="$formAction" method="post">
+<input type="submit" name="refresh" value="Refresh" 
class="portlet-form-button"/>
+<input type="submit" name="checks" value="Put in Service" 
class="portlet-form-button"/>
+</p>
+<p>Count: $!count</p>
+<br/>
+
+<table cellpadding=0 cellspacing=1 border=0 width='100%' >
+  <input type="hidden" name="group" value="$!group">
+  <input type="submit" id="removeChecked$Targets" 
name="group.action.Remove_Checked_$Targets" 
value='$MESSAGES.getString("removechecked$targets")' style="display:none"/>
+  <tr>
+     <th width="10"></th>
+      <th align='center' class="portlet-section-header" nowrap>
+        Portlet
+      </th>
+  </tr>
+#foreach ( $entry in $outOfService )
+  <tr>
+#if ($velocityCount % 2 == 0)
+#set($rowstyle = "portlet-section-body")
+#else
+#set($rowstyle = "portlet-section-alternate")
+#end  
+    <td class="$rowstyle" width="10">
+        <input type="checkbox" name="$entry.UniqueName"/>
+    </td>
+    <td class="$rowstyle" nowrap>
+      <div align="center">$entry.UniqueName</div>
+    </td>
+   </tr>
+#end
+</table>
+</form>

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java?view=diff&rev=509066&r1=509065&r2=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletTrackingManagerImpl.java
 Sun Feb 18 18:49:45 2007
@@ -110,7 +110,7 @@
     public void setExpiration(PortletWindow window, long expiration)
     {
         RenderTrackable trackable = (RenderTrackable)window.getPortletEntity();
-        trackable.setExpiration(expiration * 1000);                
+        trackable.setExpiration(expiration); // * 1000);                
     }
         
     public void takeOutOfService(PortletWindow window)
@@ -125,13 +125,32 @@
         trackable.setRenderTimeoutCount(0);        
     }
     
+    public void putIntoService(List fullPortletNames)
+    {
+        Iterator windows = this.windowAccessor.getPortletWindows().iterator();
+        while (windows.hasNext())
+        {
+            Map.Entry entry = (Map.Entry)windows.next();
+            PortletWindow window = (PortletWindow)entry.getValue();
+            PortletDefinitionComposite pd = 
(PortletDefinitionComposite)window.getPortletEntity().getPortletDefinition();   
       
+            for (int ix = 0; ix < fullPortletNames.size(); ix++)
+            {
+                if (pd.getUniqueName().equals(fullPortletNames.get(ix)))
+                {
+                    putIntoService(window);
+                }
+            }
+        }        
+    }
+    
     public List getOutOfServiceList(String fullPortletName)
     {
         List outs = new ArrayList();
         Iterator windows = this.windowAccessor.getPortletWindows().iterator();
         while (windows.hasNext())
         {
-            PortletWindow window = (PortletWindow)windows.next();
+            Map.Entry entry = (Map.Entry)windows.next();
+            PortletWindow window = (PortletWindow)entry.getValue();
             PortletDefinitionComposite pd = 
(PortletDefinitionComposite)window.getPortletEntity().getPortletDefinition();
             if (pd.getUniqueName().equals(fullPortletName) && 
isOutOfService(window))
             {
@@ -147,10 +166,11 @@
         Iterator windows = this.windowAccessor.getPortletWindows().iterator();
         while (windows.hasNext())
         {
-            PortletWindow window = (PortletWindow)windows.next();
+            Map.Entry entry = (Map.Entry)windows.next();
+            PortletWindow window = (PortletWindow)entry.getValue();
             if (isOutOfService(window))
             {
-                outs.add(window);
+                outs.add(window);                
             }
         }
         return outs;

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java?view=diff&rev=509066&r1=509065&r2=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
 Sun Feb 18 18:49:45 2007
@@ -46,4 +46,5 @@
     public final static String CPS_DECORATION_FACTORY = 
"cps:DecorationFactory";
     public final static String CPS_PASSWORD_ENCODER_COMPONENT = 
"cps:PasswordEncodingService";
     public final static String CPS_SECURITY_ACCESS_CONTROLLER = 
"cps:SecurityAccessController";
+    public final static String CPS_PORTLET_TRACKING_MANAGER = 
"cps:PortletTrackingManager";
 }

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java?view=diff&rev=509066&r1=509065&r2=509066
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletTrackingManager.java
 Sun Feb 18 18:49:45 2007
@@ -58,6 +58,11 @@
     void takeOutOfService(PortletWindow window);
     
     void putIntoService(PortletWindow window);
+    /**
+     * 
+     * @param fullPortletNames a list of Strings of full portlet names
+     */
+    void putIntoService(List fullPortletNames);
     
     List getOutOfServiceList(String fullPortletName);
     

Modified: 
portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml?view=diff&rev=509066&r1=509065&r2=509066
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml 
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml 
Sun Feb 18 18:49:45 2007
@@ -101,6 +101,9 @@
           <entry key="SecurityAccessController">
             <ref bean="org.apache.jetspeed.security.SecurityAccessController"/>
           </entry>
+          <entry key="PortletTrackingManager">
+            <ref bean="org.apache.jetspeed.aggregator.PortletTrackingManager"/>
+          </entry>
           
 <!-- first uncomment the below service bean in security-spi-atn.xml
          <entry key="PasswordEncodingService">



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to