Return-Path: X-Original-To: apmail-geronimo-scm-archive@www.apache.org Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 482BADDED for ; Wed, 20 Jun 2012 01:43:08 +0000 (UTC) Received: (qmail 53313 invoked by uid 500); 20 Jun 2012 01:43:08 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 53267 invoked by uid 500); 20 Jun 2012 01:43:08 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 53258 invoked by uid 99); 20 Jun 2012 01:43:08 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Jun 2012 01:43:08 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Jun 2012 01:43:04 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 9C33F2388860; Wed, 20 Jun 2012 01:42:42 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1351912 - in /geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main: java/org/apache/geronimo/console/obrmanager/ webapp/WEB-INF/view/obrmanager/ Date: Wed, 20 Jun 2012 01:42:42 -0000 To: scm@geronimo.apache.org From: gawor@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120620014242.9C33F2388860@eris.apache.org> Author: gawor Date: Wed Jun 20 01:42:41 2012 New Revision: 1351912 URL: http://svn.apache.org/viewvc?rev=1351912&view=rev Log: GERONIMO-6360: Support 'resolve' operation from within the portlet Added: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp (with props) Modified: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/obrmanager/OBRManagerPortlet.java geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/OBRManager.jsp Modified: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/obrmanager/OBRManagerPortlet.java URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/obrmanager/OBRManagerPortlet.java?rev=1351912&r1=1351911&r2=1351912&view=diff ============================================================================== --- geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/obrmanager/OBRManagerPortlet.java (original) +++ geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/obrmanager/OBRManagerPortlet.java Wed Jun 20 01:42:41 2012 @@ -30,7 +30,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; @@ -46,6 +48,7 @@ import org.apache.felix.bundlerepository import org.apache.felix.bundlerepository.Repository; import org.apache.felix.bundlerepository.RepositoryAdmin; import org.apache.felix.bundlerepository.Requirement; +import org.apache.felix.bundlerepository.Resolver; import org.apache.felix.bundlerepository.Resource; import org.apache.geronimo.console.BasePortlet; import org.apache.geronimo.console.util.PortletManager; @@ -65,6 +68,8 @@ public class OBRManagerPortlet extends B private PortletRequestDispatcher helpView; private PortletRequestDispatcher obrManagerView; + + private PortletRequestDispatcher resolveView; private static final String SERACH_ACTION = "search"; @@ -75,6 +80,8 @@ public class OBRManagerPortlet extends B private static final String REFRESH_URL_ACTION = "refreshurl"; private static final String ADD_URL_ACTION = "add_url"; + + private static final String RESOLVE_ACTION = "resolve"; private static final String SEARCH_TYPE_ALL = "ALL"; @@ -82,7 +89,7 @@ public class OBRManagerPortlet extends B super.init(portletConfig); helpView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/obrmanager/OBRManager.jsp"); obrManagerView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/obrmanager/OBRManager.jsp"); - + resolveView = portletConfig.getPortletContext().getRequestDispatcher("/WEB-INF/view/obrmanager/resolve.jsp"); } public void destroy() { @@ -130,7 +137,12 @@ public class OBRManagerPortlet extends B String searchType = actionRequest.getParameter("searchType"); actionResponse.setRenderParameter("searchType", searchType); } - + else if (RESOLVE_ACTION.equals(action)) { + actionResponse.setRenderParameter("mode", RESOLVE_ACTION); + String[] selectedResources = actionRequest.getParameterValues("selected-resources"); + actionResponse.setRenderParameter("selected-resources", selectedResources); + + } } private void refreshRepository(ActionRequest actionRequest) throws Exception { @@ -228,7 +240,16 @@ public class OBRManagerPortlet extends B if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) { // minimal view return; } else { // normal and maximal view - + if (RESOLVE_ACTION.equals(renderRequest.getParameter("mode"))) { + try { + resolveResources(renderRequest, renderResponse); + } catch (Exception e) { + addErrorMessage(renderRequest, getLocalizedString(renderRequest, "consolebase.obrmanager.err.actionError"), e.getMessage()); + logger.error("Exception", e); + } + return; + } + BundleContext bundleContext = getBundleContext(renderRequest); ServiceReference reference = bundleContext.getServiceReference(RepositoryAdmin.class.getName()); RepositoryAdmin repositoryAdmin = (RepositoryAdmin) bundleContext.getService(reference); @@ -543,7 +564,46 @@ public class OBRManagerPortlet extends B logger.error("Error while persisting repository list", e); } } + + private void resolveResources(RenderRequest request, RenderResponse response) throws Exception { + String[] selectedResources = request.getParameterValues("selected-resources"); + if (selectedResources == null || selectedResources.length == 0) { + throw new IllegalArgumentException("No resources selected"); + } + + BundleContext bundleContext = getBundleContext(request); + ServiceReference reference = null; + + try { + reference = bundleContext.getServiceReference(RepositoryAdmin.class.getName()); + RepositoryAdmin repositoryAdmin = (RepositoryAdmin) bundleContext.getService(reference); + Map resourceMap = new HashMap(); + Resource[] resources = getAllResources(repositoryAdmin); + for (Resource resource : resources) { + resourceMap.put(resource.getSymbolicName() + "/" + resource.getVersion(), resource); + } + + Resolver resolver = repositoryAdmin.resolver(); + + for (String resourceName : selectedResources) { + Resource resource = resourceMap.get(resourceName); + if (resource == null) { + throw new IllegalArgumentException("Resource not found: " + resourceName); + } + resolver.add(resource); + } + + request.setAttribute("resolved", resolver.resolve()); + request.setAttribute("resolver", resolver); + resolveView.include(request, response); + } finally { + if (reference != null) { + bundleContext.ungetService(reference); + } + } + } + private BundleContext getBundleContext(PortletRequest request) { return (BundleContext) request.getPortletSession().getPortletContext().getAttribute("osgi-bundlecontext"); } Modified: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/OBRManager.jsp URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/OBRManager.jsp?rev=1351912&r1=1351911&r2=1351912&view=diff ============================================================================== --- geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/OBRManager.jsp (original) +++ geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/OBRManager.jsp Wed Jun 20 01:42:41 2012 @@ -119,8 +119,12 @@ + +
+ + @@ -135,6 +139,9 @@ +
Selected Symbolic Name and Version
+ +
${resourceInfo.symbolicName} (${resourceInfo.version})
@@ -179,4 +186,7 @@
+

+ +
Added: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp?rev=1351912&view=auto ============================================================================== --- geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp (added) +++ geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp Wed Jun 20 01:42:41 2012 @@ -0,0 +1,171 @@ +<%-- + 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. +--%> + +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> + + + + + +

All resources resolved successfully

+ + Resolved resources: + + + + + + + + + + + + + + + + + + + + + + + + + + +
Symbolic NameVersion
${resource.symbolicName}${resource.version}
+ + + + + + +
+ Additional dependent resources: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Symbolic NameVersionRequired
${resource.symbolicName}${resource.version}Yes
${resource.symbolicName}${resource.version}No
+
+
+ +

+ +

+ +
+ +
+ + +

One or more resources cannot be resolved

+ + Unsatisfied requirements: + + + + + + + + + + + + + + + + + + + + + + + + + + +
Symbolic NameUnsatisfied Requirement
${reason.resource.symbolicName}${reason.requirement.filter}
+ +

+ +

+ +
+
+
Propchange: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/branches/3.0/plugins/console/console-base-portlets/src/main/webapp/WEB-INF/view/obrmanager/resolve.jsp ------------------------------------------------------------------------------ svn:mime-type = text/plain