Author: woonsan
Date: Thu Apr  7 03:02:35 2011
New Revision: 1089713

URL: http://svn.apache.org/viewvc?rev=1089713&view=rev
Log:
JS2-1247: Invoking portlet cloning on registry

Modified:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java?rev=1089713&r1=1089712&r2=1089713&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/ClonePortletInfo.java
 Thu Apr  7 03:02:35 2011
@@ -24,6 +24,7 @@ public class ClonePortletInfo implements
 {
     private static final long serialVersionUID = 1L;
     
+    private String originalPortletUniqueName;
     private String portletName;
     private String portletDisplayName;
     private String portletTitle;
@@ -31,6 +32,16 @@ public class ClonePortletInfo implements
     private String portletKeywords;
     private Map<String, List<String>> portletPreferences;
     
+    public String getOriginalPortletUniqueName()
+    {
+        return originalPortletUniqueName;
+    }
+
+    public void setOriginalPortletUniqueName(String originalPortletUniqueName)
+    {
+        this.originalPortletUniqueName = originalPortletUniqueName;
+    }
+
     public String getPortletName()
     {
         return portletName;

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java?rev=1089713&r1=1089712&r2=1089713&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/clone/PortletCloneManagerPortlet.java
 Thu Apr  7 03:02:35 2011
@@ -35,6 +35,7 @@ import javax.portlet.RenderResponse;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.jetspeed.CommonPortletServices;
+import 
org.apache.jetspeed.components.portletregistry.FailedToStorePortletDefinitionException;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.om.portlet.PortletDefinition;
 import org.apache.jetspeed.om.portlet.Preference;
@@ -65,21 +66,22 @@ public class PortletCloneManagerPortlet 
     public void doView(RenderRequest request, RenderResponse response) throws 
PortletException, IOException
     {
         RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);
-        String portletUniqueId = rc.getRequestParameter("portlet");
+        String portletUniqueName = rc.getRequestParameter("portlet");
         PortletDefinition def = null;
         
-        if (!StringUtils.isBlank(portletUniqueId))
+        if (!StringUtils.isBlank(portletUniqueName))
         {
-            def = registry.getPortletDefinitionByUniqueName(portletUniqueId);
+            def = registry.getPortletDefinitionByUniqueName(portletUniqueName);
         }
         
         if (def == null)
         {
-            log.error("Cannot find the portlet or clone: {}", portletUniqueId);
+            log.error("Cannot find the portlet or clone: {}", 
portletUniqueName);
         }
         else
         {
             ClonePortletInfo clonePortletInfo = new ClonePortletInfo();
+            clonePortletInfo.setOriginalPortletUniqueName(portletUniqueName);
             clonePortletInfo.setPortletName(def.getPortletName());
             
clonePortletInfo.setPortletDisplayName(def.getDisplayNameText(Locale.getDefault()));
             clonePortletInfo.setPortletTitle(def.getPortletInfo().getTitle());
@@ -109,12 +111,38 @@ public class PortletCloneManagerPortlet 
         if ("clone".equals(action))
         {
             ClonePortletInfo clonePortletInfo = 
readClonePortletInfoFromRequest(request);
+            PortletDefinition def = 
registry.getPortletDefinitionByUniqueName(clonePortletInfo.getOriginalPortletUniqueName());
+            
+            if (def == null)
+            {
+                log.error("Cannot find the portlet or clone: {}", 
clonePortletInfo.getOriginalPortletUniqueName());
+            }
+            else
+            {
+                if (!StringUtils.isBlank(clonePortletInfo.getPortletName()))
+                {
+                    try
+                    {
+                        PortletDefinition clone = 
registry.clonePortletDefinition(def, 
StringUtils.trim(clonePortletInfo.getPortletName()));
+                        
clone.getPortletInfo().setTitle(StringUtils.defaultString(clonePortletInfo.getPortletTitle()));
+                        
clone.getPortletInfo().setShortTitle(StringUtils.defaultString(clonePortletInfo.getPortletShortTitle()));
+                        
clone.getPortletInfo().setKeywords(StringUtils.defaultString(clonePortletInfo.getPortletKeywords()));
+                        // TODO displayName, preferences..
+                        registry.savePortletDefinition(clone);
+                    }
+                    catch (FailedToStorePortletDefinitionException e)
+                    {
+                        log.error("Failed to clone portlet from " + 
clonePortletInfo.getOriginalPortletUniqueName() + " to " + 
clonePortletInfo.getPortletName(), e);
+                    }
+                }
+            }
         }
     }
     
     private ClonePortletInfo readClonePortletInfoFromRequest(ActionRequest 
request)
     {
         ClonePortletInfo clonePortletInfo = new ClonePortletInfo();
+        
clonePortletInfo.setOriginalPortletUniqueName(request.getParameter("originalPortletUniqueName"));
         clonePortletInfo.setPortletName(request.getParameter("portlet_name"));
         
clonePortletInfo.setPortletDisplayName(request.getParameter("portlet_displayName"));
         
clonePortletInfo.setPortletTitle(request.getParameter("portlet_title"));

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp?rev=1089713&r1=1089712&r2=1089713&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/prm/portlet-clone-manager-view.jsp
 Thu Apr  7 03:02:35 2011
@@ -106,6 +106,7 @@ limitations under the License.
         <th class="portlet-section-alternate" colspan="2">
           <input type="submit" value="<fmt:message 
key='portlet.clone.label.action.clone'/>" />
           <input type="hidden" name="action" value="clone" />
+          <input type="hidden" name="originalPortletUniqueName" value="<c:out 
value='${clonePortletInfo.originalPortletUniqueName}'/>" />
         </th>
       </tr>
     </tbody>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to