From scm-return-10949-apmail-geronimo-scm-archive=geronimo.apache.org@geronimo.apache.org Thu Mar 23 19:21:10 2006 Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 90772 invoked from network); 23 Mar 2006 19:21:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 23 Mar 2006 19:21:10 -0000 Received: (qmail 5207 invoked by uid 500); 23 Mar 2006 19:21:09 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 4886 invoked by uid 500); 23 Mar 2006 19:21:07 -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 4872 invoked by uid 99); 23 Mar 2006 19:21:07 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Mar 2006 11:21:07 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 23 Mar 2006 11:21:03 -0800 Received: (qmail 90629 invoked by uid 65534); 23 Mar 2006 19:20:42 -0000 Message-ID: <20060323192042.90628.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r388236 [1/3] - in /geronimo/trunk: applications/console-core/src/java/org/apache/geronimo/console/util/ applications/console-framework/src/webapp/WEB-INF/data/ applications/console-standard/ applications/console-standard/src/java/org/apach... Date: Thu, 23 Mar 2006 19:20:27 -0000 To: scm@geronimo.apache.org From: ammulder@apache.org X-Mailer: svnmailer-1.0.7 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: ammulder Date: Thu Mar 23 11:20:22 2006 New Revision: 388236 URL: http://svn.apache.org/viewcvs?rev=388236&view=rev Log: Console enhancements - a new portlet to help configure Apache HTTP via mod_jk - start of a new keystore management portlet that can handle multiple keystores Geronimo improvements as necesary to support those - new Keystore GBeans - more logic around parent/child module relationships Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/AJPHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ApacheConfigPortlet.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/BaseApacheHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ConfigHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/IndexHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ResultsHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/WebAppHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/BaseKeystoreHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfigureNewKeyHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmCertificateHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmKeyHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/CreateKeystoreHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/KeystoresPortlet.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ListHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/UnlockKeystoreHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/UploadCertificateHandler.java (with props) geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ViewKeystoreHandler.java (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/jk/ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/jk/ajpPort.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/jk/config.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/jk/index.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/jk/results.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/apache/jk/webApps.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/ geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/configureKey.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/confirmCertificate.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/confirmKey.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/createKeystore.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/index.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/unlockKeystore.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/uploadCertificate.jsp (with props) geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/view/keystore/viewKeystore.jsp (with props) geronimo/trunk/assemblies/j2ee-jetty-server/src/var/security/keystores/ geronimo/trunk/assemblies/j2ee-tomcat-server/src/var/security/keystores/ geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/ geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreInstance.java (with props) geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/FileKeystoreManager.java (with props) geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/KeyIsLocked.java (with props) geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/KeystoreInstance.java (with props) geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/KeystoreIsLocked.java (with props) geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/keystore/KeystoreManager.java (with props) geronimo/trunk/modules/util/src/java/org/apache/geronimo/util/CertificateUtil.java (with props) Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml geronimo/trunk/applications/console-standard/project.xml geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPageAbstractHandler.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPagePortlet.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/util/PortletManager.java geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/portlet.xml geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/web.xml geronimo/trunk/configs/j2ee-security/project.xml geronimo/trunk/configs/j2ee-security/src/plan/plan.xml geronimo/trunk/configs/rmi-naming/project.xml geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/management/impl/J2EEServerImpl.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationInfo.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManagerImpl.java geronimo/trunk/modules/management/src/java/org/apache/geronimo/management/geronimo/J2EEServer.java geronimo/trunk/modules/security/project.xml Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java (original) +++ geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/KernelManagementHelper.java Thu Mar 23 11:20:22 2006 @@ -26,6 +26,8 @@ import java.util.Set; import java.util.HashSet; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.security.auth.Subject; @@ -44,6 +46,11 @@ import org.apache.geronimo.kernel.GBeanNotFoundException; import org.apache.geronimo.kernel.Kernel; import org.apache.geronimo.kernel.config.Configuration; +import org.apache.geronimo.kernel.config.ConfigurationInfo; +import org.apache.geronimo.kernel.config.ConfigurationModuleType; +import org.apache.geronimo.kernel.config.ConfigurationUtil; +import org.apache.geronimo.kernel.config.ConfigurationManager; +import org.apache.geronimo.kernel.config.NoSuchStoreException; import org.apache.geronimo.kernel.proxy.ProxyManager; import org.apache.geronimo.kernel.repository.Repository; import org.apache.geronimo.management.AppClientModule; @@ -81,6 +88,7 @@ import org.apache.geronimo.security.jaas.JaasLoginModuleUse; import org.apache.geronimo.security.jaas.server.JaasLoginServiceMBean; import org.apache.geronimo.security.realm.SecurityRealm; +import org.apache.geronimo.security.keystore.KeystoreManager; import org.apache.geronimo.system.logging.SystemLog; import org.apache.geronimo.system.serverinfo.ServerInfo; @@ -527,7 +535,7 @@ public JaasLoginServiceMBean getLoginService(J2EEServer server) { try { - String name = server.getServerInfo(); + String name = server.getLoginService(); return (JaasLoginServiceMBean) pm.createProxy(ObjectName.getInstance(name), KernelManagementHelper.class.getClassLoader()); } catch (Exception e) { log.error("Unable to look up LoginService for J2EEServer", e); @@ -535,6 +543,16 @@ } } + public KeystoreManager getKeystoreManager(J2EEServer server) { + try { + String name = server.getKeystoreManager(); + return (KeystoreManager) pm.createProxy(ObjectName.getInstance(name), KernelManagementHelper.class.getClassLoader()); + } catch (Exception e) { + log.error("Unable to look up KeystoreManager for J2EEServer", e); + return null; + } + } + public WebManager[] getWebManagers(J2EEServer server) { WebManager[] result = new WebManager[0]; try { @@ -1086,6 +1104,44 @@ result[i++] = kernel.getProxyManager().createProxy(name, iface.getClassLoader()); } return result; + } + + public ConfigurationInfo[] getConfigurations(ConfigurationModuleType type, boolean includeChildModules) { + ConfigurationManager mgr = ConfigurationUtil.getConfigurationManager(kernel); + List stores = mgr.listStores(); + List results = new ArrayList(); + for (Iterator i = stores.iterator(); i.hasNext();) { + ObjectName storeName = (ObjectName) i.next(); + try { + List infos = mgr.listConfigurations(storeName); + for (Iterator j = infos.iterator(); j.hasNext();) { + ConfigurationInfo info = (ConfigurationInfo) j.next(); + if(type == null || type.getValue() == info.getType().getValue()) { + results.add(info); + } + if(includeChildModules && (type == null || info.getType().getValue() == ConfigurationModuleType.EAR.getValue())) { + List kids = mgr.listChildConfigurations(info); + for (Iterator k = kids.iterator(); k.hasNext();) { + ConfigurationInfo child = (ConfigurationInfo) k.next(); + if(type == null || type.getValue() == child.getType().getValue()) { + results.add(child); + } + } + } + } + } catch (NoSuchStoreException e) { + // we just got this list so this should not happen + // in the unlikely event it does, just continue + } + } + Collections.sort(results, new Comparator() { + public int compare(Object o1, Object o2) { + ConfigurationInfo ci1 = (ConfigurationInfo) o1; + ConfigurationInfo ci2 = (ConfigurationInfo) o2; + return ci1.getConfigID().toString().compareTo(ci2.getConfigID().toString()); + } + }); + return (ConfigurationInfo[]) results.toArray(new ConfigurationInfo[results.size()]); } /** Modified: geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java (original) +++ geronimo/trunk/applications/console-core/src/java/org/apache/geronimo/console/util/ManagementHelper.java Thu Mar 23 11:20:22 2006 @@ -22,6 +22,8 @@ import javax.security.auth.login.LoginException; import javax.security.auth.spi.LoginModule; import org.apache.geronimo.kernel.repository.Repository; +import org.apache.geronimo.kernel.config.ConfigurationInfo; +import org.apache.geronimo.kernel.config.ConfigurationModuleType; import org.apache.geronimo.management.AppClientModule; import org.apache.geronimo.management.EJB; import org.apache.geronimo.management.EJBModule; @@ -56,6 +58,7 @@ import org.apache.geronimo.pool.GeronimoExecutor; import org.apache.geronimo.security.jaas.server.JaasLoginServiceMBean; import org.apache.geronimo.security.realm.SecurityRealm; +import org.apache.geronimo.security.keystore.KeystoreManager; import org.apache.geronimo.system.logging.SystemLog; import org.apache.geronimo.system.serverinfo.ServerInfo; @@ -93,6 +96,7 @@ SecurityRealm[] getSecurityRealms(J2EEServer server); ServerInfo getServerInfo(J2EEServer server); JaasLoginServiceMBean getLoginService(J2EEServer server); + KeystoreManager getKeystoreManager(J2EEServer server); WebManager[] getWebManagers(J2EEServer server); WebAccessLog getWebAccessLog(WebManager manager, WebContainer container); WebAccessLog getWebAccessLog(WebManager manager, String containerObjectName); @@ -162,4 +166,5 @@ void testLoginModule(J2EEServer server, LoginModule module, Map options); Subject testLoginModule(J2EEServer server, LoginModule module, Map options, String username, String password) throws LoginException; Object[] findByInterface(Class iface); + ConfigurationInfo[] getConfigurations(ConfigurationModuleType type, boolean includeChildModules); } Modified: geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml (original) +++ geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/pageregistry.xml Thu Mar 23 11:20:22 2006 @@ -223,6 +223,21 @@ + + + + Apache HTTP + ico_servcomp_16x16.gif Hook Geronimo up to the Apache HTTP server + + + + + + + + + + @@ -469,9 +484,24 @@ + + + Keystores + ico_doc_16x16.gif Manage keystores for this server + + + + + + + + + + + - Keystore + Old Keystore ico_doc_16x16.gif Manage the keystore for this server Modified: geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml (original) +++ geronimo/trunk/applications/console-framework/src/webapp/WEB-INF/data/portletentityregistry.xml Thu Mar 23 11:20:22 2006 @@ -139,5 +139,11 @@ console-standard.JMSWizard + + console-standard.ApacheJK + + + console-standard.Keystores + Modified: geronimo/trunk/applications/console-standard/project.xml URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/project.xml?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/project.xml (original) +++ geronimo/trunk/applications/console-standard/project.xml Thu Mar 23 11:20:22 2006 @@ -147,6 +147,11 @@ ${pom.currentVersion} + geronimo + geronimo-util + ${pom.currentVersion} + + mx4j mx4j ${mx4j_version} Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPageAbstractHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPageAbstractHandler.java?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPageAbstractHandler.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPageAbstractHandler.java Thu Mar 23 11:20:22 2006 @@ -16,6 +16,8 @@ */ package org.apache.geronimo.console; +import org.apache.commons.fileupload.portlet.PortletFileUpload; + import javax.portlet.PortletRequestDispatcher; import javax.portlet.PortletConfig; import javax.portlet.PortletException; @@ -25,9 +27,14 @@ import javax.portlet.RenderResponse; import javax.enterprise.deploy.spi.status.ProgressObject; import java.io.IOException; +import java.util.Map; +import java.util.HashMap; +import java.util.Properties; /** - * ReplaceMe + * Base class for handlers for the multi page portlet. Each one is expected + * to handle a single page -- the action request before the page is rendered, + * the render request, and the action request after the page is rendered. * * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ */ @@ -37,6 +44,8 @@ protected PortletRequestDispatcher view; private final String mode; private final String viewName; + private Map uploadFiles = new HashMap(); + private Properties uploadFields = new Properties(); protected MultiPageAbstractHandler(String mode, String viewName) { this.mode = mode; @@ -77,6 +86,13 @@ */ public abstract String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException; + public Map getUploadFiles() { + return uploadFiles; + } + + public Properties getUploadFields() { + return uploadFields; + } protected static void waitForProgress(ProgressObject po) { while(po.getDeploymentStatus().isRunning()) { Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPagePortlet.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPagePortlet.java?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPagePortlet.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/MultiPagePortlet.java Thu Mar 23 11:20:22 2006 @@ -18,6 +18,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.commons.fileupload.portlet.PortletFileUpload; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileUploadException; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; @@ -30,6 +34,7 @@ import java.util.Map; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.io.IOException; /** @@ -55,7 +60,32 @@ public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException, IOException { - String mode = actionRequest.getParameter(MODE_KEY); + String mode = null; + Map files = null; + Map fields = null; + if(actionRequest.getContentType() != null && actionRequest.getContentType().startsWith("multipart/form-data")) { + files = new HashMap(); + fields = new HashMap(); + PortletFileUpload request = new PortletFileUpload(new DiskFileItemFactory()); + try { + List items = request.parseRequest(actionRequest); + for (int i = 0; i < items.size(); i++) { + FileItem item = (FileItem) items.get(i); + if(item.isFormField()) { + if(item.getFieldName().equals(MODE_KEY)) { + mode = item.getString(); + } + fields.put(item.getFieldName(), item.getString()); + } else { + files.put(item.getFieldName(), item); + } + } + } catch (FileUploadException e) { + log.error("Unable to process form including a file upload", e); + } + } else { + mode = actionRequest.getParameter(MODE_KEY); + } MultiPageModel model = getModel(actionRequest); while(true) { if(mode == null) { @@ -72,6 +102,13 @@ log.error("No handler for action mode '"+mode+"'"); break; } + if(files == null) { + handler.getUploadFields().clear(); + handler.getUploadFiles().clear(); + } else { + handler.getUploadFields().putAll(fields); + handler.getUploadFiles().putAll(files); + } log.debug("Using action handler '"+handler.getClass().getName()+"'"); if(type.equals("before")) { mode = handler.actionBeforeView(actionRequest, actionResponse, model); @@ -109,7 +146,7 @@ } catch (Throwable e) { log.error("Unable to render portlet", e); } - renderRequest.setAttribute("data", model); + renderRequest.setAttribute(getModelJSPVariableName(), model); if(handler != null) { handler.getView().include(renderRequest, renderResponse); } @@ -125,6 +162,8 @@ if(helpers.containsKey("index")) return "index"; return null; } + + protected abstract String getModelJSPVariableName(); protected abstract MultiPageModel getModel(PortletRequest request); } Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/AJPHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/AJPHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/AJPHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/AJPHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,103 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPageModel; +import org.apache.geronimo.console.util.PortletManager; +import org.apache.geronimo.management.geronimo.WebManager; +import org.apache.geronimo.management.geronimo.WebConnector; +import org.apache.geronimo.kernel.proxy.GeronimoManagedBean; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.IOException; + +/** + * ReplaceMe + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class AJPHandler extends BaseApacheHandler { + private final static Log log = LogFactory.getLog(AJPHandler.class); + + public AJPHandler() { + super(AJP_MODE, "/WEB-INF/view/apache/jk/ajpPort.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + WebManager[] managers = PortletManager.getWebManagers(request); + // See if any AJP listeners are defined + for (int i = 0; i < managers.length; i++) { + WebManager manager = managers[i]; + String[] connectors = manager.getConnectors(WebManager.PROTOCOL_AJP); + if(connectors.length > 0) { + log.warn("Found AJP listener on port "+PortletManager.getWebConnector(request, connectors[0]).getPort()); + return BASIC_CONFIG_MODE+BEFORE_ACTION; + } + } + // Find an unused port + int port = 8009; + outer: + while(true) { + for (int i = 0; i < managers.length; i++) { + WebManager manager = managers[i]; + WebConnector[] cons = PortletManager.getWebConnectors(request, ((GeronimoManagedBean)manager).getObjectName()); + for (int j = 0; j < cons.length; j++) { + WebConnector con = cons[j]; + if(con.getPort() == port) { + port += 10; + continue outer; + } + } + } + break; + } + + ((ApacheModel)model).setAddAjpPort(new Integer(port)); + + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel amodel) throws PortletException, IOException { + ApacheModel model = (ApacheModel) amodel; + // Make sure port is set and unused + if(model.getAddAjpPort() == null) { + return getMode()+BEFORE_ACTION; //todo: some sort of error message + } + WebManager[] managers = PortletManager.getWebManagers(request); + for (int i = 0; i < managers.length; i++) { + WebManager manager = managers[i]; + WebConnector[] cons = PortletManager.getWebConnectors(request, ((GeronimoManagedBean)manager).getObjectName()); + for (int j = 0; j < cons.length; j++) { + WebConnector con = cons[j]; + if(con.getPort() == model.getAddAjpPort().intValue()) { + return getMode()+BEFORE_ACTION; //todo: some sort of error message + } + } + } + + return BASIC_CONFIG_MODE+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/AJPHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ApacheConfigPortlet.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ApacheConfigPortlet.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ApacheConfigPortlet.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ApacheConfigPortlet.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,48 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPagePortlet; +import org.apache.geronimo.console.MultiPageModel; + +import javax.portlet.PortletConfig; +import javax.portlet.PortletException; +import javax.portlet.PortletRequest; + +/** + * Portlet that helps you configure Geronimo for Apache 2 with mod_jk + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class ApacheConfigPortlet extends MultiPagePortlet { + public void init(PortletConfig config) throws PortletException { + super.init(config); + addHelper(new IndexHandler(), config); + addHelper(new ConfigHandler(), config); + addHelper(new AJPHandler(), config); + addHelper(new WebAppHandler(), config); + addHelper(new ResultsHandler(), config); + } + + protected String getModelJSPVariableName() { + return "model"; + } + + protected MultiPageModel getModel(PortletRequest request) { + return new BaseApacheHandler.ApacheModel(request); + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ApacheConfigPortlet.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/BaseApacheHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/BaseApacheHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/BaseApacheHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/BaseApacheHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,213 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPageAbstractHandler; +import org.apache.geronimo.console.MultiPageModel; +import org.apache.geronimo.console.util.PortletManager; + +import javax.portlet.ActionResponse; +import javax.portlet.PortletRequest; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; +import java.io.Serializable; + +/** + * The base class for all handlers for this portlet + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public abstract class BaseApacheHandler extends MultiPageAbstractHandler { + protected static final String INDEX_MODE = "index"; + protected static final String BASIC_CONFIG_MODE = "basic"; + protected static final String AJP_MODE = "ajp"; + protected static final String WEB_APP_MODE = "webapp"; + protected static final String RESULTS_MODE = "results"; + + protected BaseApacheHandler(String mode, String viewName) { + super(mode, viewName); + } + + public final static class WebAppData implements Serializable { + private String configId; + private boolean enabled; + private String dynamicPattern; + private boolean serveStaticContent; + private String contextRoot; + private String webAppDir; + + public WebAppData(String configId, boolean enabled, String dynamicPattern, boolean serveStaticContent) { + this.configId = configId; + this.enabled = enabled; + this.dynamicPattern = dynamicPattern; + this.serveStaticContent = serveStaticContent; + } + + public WebAppData(PortletRequest request, String prefix) { + configId = request.getParameter(prefix+"configId"); + dynamicPattern = request.getParameter(prefix+"dynamicPattern"); + String test = request.getParameter(prefix+"enabled"); + enabled = test != null && !test.equals("") && !test.equals("false"); + test = request.getParameter(prefix+"serveStaticContent"); + serveStaticContent = test != null && !test.equals("") && !test.equals("false"); + contextRoot = request.getParameter(prefix+"contextRoot"); + webAppDir = request.getParameter(prefix+"webAppDir"); + } + + public void save(ActionResponse response, String prefix) { + response.setRenderParameter(prefix+"configId", configId); + response.setRenderParameter(prefix+"dynamicPattern", dynamicPattern); + response.setRenderParameter(prefix+"enabled", Boolean.toString(enabled)); + response.setRenderParameter(prefix+"serveStaticContent", Boolean.toString(serveStaticContent)); + if(contextRoot != null) response.setRenderParameter(prefix+"contextRoot", contextRoot); + if(webAppDir != null) response.setRenderParameter(prefix+"webAppDir", webAppDir); + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public String getConfigId() { + return configId; + } + + public void setConfigId(String configId) { + this.configId = configId; + } + + public String getDynamicPattern() { + return dynamicPattern; + } + + public void setDynamicPattern(String dynamicPattern) { + this.dynamicPattern = dynamicPattern; + } + + public boolean isServeStaticContent() { + return serveStaticContent; + } + + public void setServeStaticContent(boolean serveStaticContent) { + this.serveStaticContent = serveStaticContent; + } + + public String getContextRoot() { + return contextRoot; + } + + public void setContextRoot(String contextRoot) { + this.contextRoot = contextRoot; + } + + public String getWebAppDir() { + return webAppDir; + } + + public void setWebAppDir(String webAppDir) { + this.webAppDir = webAppDir; + } + } + + public final static class ApacheModel implements MultiPageModel { + private String os; + private Integer addAjpPort; + private String logFilePath; + private String workersPath; + private List webApps = new ArrayList(); + + public ApacheModel(PortletRequest request) { + Map map = request.getParameterMap(); + os = request.getParameter("os"); + logFilePath = request.getParameter("logFilePath"); + if(logFilePath == null) { + logFilePath = PortletManager.getServerInfo(request).resolve("var/log/apache_mod_jk.log").getPath(); + } + workersPath = request.getParameter("workersPath"); + if(workersPath == null) { + workersPath = PortletManager.getServerInfo(request).resolve("var/config/workers.properties").getPath(); + } + String ajp = request.getParameter("addAjpPort"); + if(!isEmpty(ajp)) addAjpPort = new Integer(ajp); + int index = 0; + while(true) { + String key = "webapp."+(index++)+"."; + if(!map.containsKey(key+"configId")) { + break; + } + WebAppData data = new WebAppData(request, key); + webApps.add(data); + } + } + + public void save(ActionResponse response) { + if(!isEmpty(os)) response.setRenderParameter("os", os); + if(!isEmpty(logFilePath)) response.setRenderParameter("logFilePath", logFilePath); + if(!isEmpty(workersPath)) response.setRenderParameter("workersPath", workersPath); + if(addAjpPort != null) response.setRenderParameter("addAjpPort", addAjpPort.toString()); + for (int i = 0; i < webApps.size(); i++) { + WebAppData data = (WebAppData) webApps.get(i); + String key = "webapp."+i+"."; + data.save(response, key); + } + } + + public String getOs() { + return os; + } + + public void setOs(String os) { + this.os = os; + } + + public Integer getAddAjpPort() { + return addAjpPort; + } + + public void setAddAjpPort(Integer addAjpPort) { + this.addAjpPort = addAjpPort; + } + + public String getLogFilePath() { + return logFilePath; + } + + public void setLogFilePath(String logFilePath) { + this.logFilePath = logFilePath; + } + + public String getWorkersPath() { + return workersPath; + } + + public void setWorkersPath(String workersPath) { + this.workersPath = workersPath; + } + + public List getWebApps() { + return webApps; + } + + public void setWebApps(List webApps) { + this.webApps = webApps; + } + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/BaseApacheHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ConfigHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ConfigHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ConfigHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ConfigHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,48 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPageModel; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.IOException; + +/** + * Handler for the basic configuration screen + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class ConfigHandler extends BaseApacheHandler { + public ConfigHandler() { + super(BASIC_CONFIG_MODE, "/WEB-INF/view/apache/jk/config.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return WEB_APP_MODE+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ConfigHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/IndexHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/IndexHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/IndexHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/IndexHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,48 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPageModel; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.IOException; + +/** + * Handler for the front screen for this portlet + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class IndexHandler extends BaseApacheHandler { + public IndexHandler() { + super(INDEX_MODE, "/WEB-INF/view/apache/jk/index.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return AJP_MODE+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/IndexHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ResultsHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ResultsHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ResultsHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ResultsHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,71 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPageModel; +import org.apache.geronimo.console.util.PortletManager; +import org.apache.geronimo.kernel.config.ConfigurationInfo; +import org.apache.geronimo.kernel.config.ConfigurationModuleType; +import org.apache.geronimo.management.geronimo.WebManager; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.IOException; +import java.util.List; + +/** + * Handler for the screen where you select the webapps to expose through Apache + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class ResultsHandler extends BaseApacheHandler { + public ResultsHandler() { + super(RESULTS_MODE, "/WEB-INF/view/apache/jk/results.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + //todo: Add AJP Connector + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel amodel) throws PortletException, IOException { + ApacheModel model = (ApacheModel) amodel; + String port = "unknown"; + if(model.getAddAjpPort() != null) { + port = model.getAddAjpPort().toString(); + } else { + WebManager[] managers = PortletManager.getWebManagers(request); + // See if any AJP listeners are defined + for (int i = 0; i < managers.length; i++) { + WebManager manager = managers[i]; + String[] connectors = manager.getConnectors(WebManager.PROTOCOL_AJP); + if(connectors.length > 0) { + port = Integer.toString(PortletManager.getWebConnector(request, connectors[0]).getPort()); + break; + } + } + } + request.setAttribute("ajpPort", port); + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return getMode()+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/ResultsHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/WebAppHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/WebAppHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/WebAppHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/WebAppHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,99 @@ +/** + * + * Copyright 2005 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.geronimo.console.apache.jk; + +import org.apache.geronimo.console.MultiPageModel; +import org.apache.geronimo.console.util.PortletManager; +import org.apache.geronimo.kernel.config.ConfigurationInfo; +import org.apache.geronimo.kernel.config.ConfigurationModuleType; +import org.apache.geronimo.kernel.config.ConfigurationStore; +import org.apache.geronimo.kernel.config.NoSuchConfigException; +import org.apache.geronimo.management.geronimo.WebModule; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import javax.management.ObjectName; +import javax.management.MalformedObjectNameException; +import java.io.IOException; +import java.io.File; +import java.util.List; +import java.net.URI; + +/** + * Handler for the screen where you select the webapps to expose through Apache + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class WebAppHandler extends BaseApacheHandler { + private final static Log log = LogFactory.getLog(WebAppHandler.class); + + public WebAppHandler() { + super(WEB_APP_MODE, "/WEB-INF/view/apache/jk/webApps.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel amodel) throws PortletException, IOException { + ApacheModel model = (ApacheModel) amodel; + ConfigurationInfo[] webApps = PortletManager.getConfigurations(request, ConfigurationModuleType.WAR, true); + if(model.getWebApps().size() == 0) { + List list = model.getWebApps(); + for (int i = 0; i < webApps.length; i++) { + ConfigurationInfo app = webApps[i]; + if(!app.getState().isRunning()) { + continue; + } + ObjectName base = app.getStoreName(); + WebAppData data = new WebAppData(app.getConfigID().toString(), false, null, false); + try { + ObjectName module = ObjectName.getInstance(base.getDomain()+":J2EEServer="+base.getKeyProperty("J2EEServer")+",J2EEApplication="+app.getParentID()+",j2eeType=WebModule,name="+app.getConfigID()); + WebModule web = (WebModule) PortletManager.getManagedBean(request, module.getCanonicalName()); + data.setContextRoot(web.getContextPath()); + ConfigurationStore store = (ConfigurationStore) PortletManager.getManagedBean(request, app.getStoreName().getCanonicalName()); + String path = getPathToConfiguration(store, app.getParentID() == null ? app.getConfigID() : app.getParentID()); + if(app.getParentID() == null) { + path = path + File.separator + "web"; + } else { + path = path + File.separator + app.getConfigID(); + } + data.setWebAppDir(path); + } catch (MalformedObjectNameException e) { + log.error("I sure didn't expect to get this exception", e); + } catch (NoSuchConfigException e) { + log.error("I sure didn't expect to get this exception", e); + } + list.add(data); + } + } + request.setAttribute("webApps", webApps); + } + + private String getPathToConfiguration(ConfigurationStore store, URI moduleOrParentID) throws NoSuchConfigException { + return "PATH_IN_CONFIG_STORE"; // todo: replace this with code to actually look up the path to the module + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel amodel) throws PortletException, IOException { + return RESULTS_MODE+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/apache/jk/WebAppHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java?rev=388236&r1=388235&r2=388236&view=diff ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java (original) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/JMSResourcePortlet.java Thu Mar 23 11:20:22 2006 @@ -55,6 +55,10 @@ addHelper(new ReviewHandler(), config); } + protected String getModelJSPVariableName() { + return "data"; + } + protected MultiPageModel getModel(PortletRequest request) { return new AbstractHandler.JMSResourceData(request); } Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/BaseKeystoreHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/BaseKeystoreHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/BaseKeystoreHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/BaseKeystoreHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,342 @@ +/** + * + * Copyright 2005 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.geronimo.console.keystores; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.console.MultiPageAbstractHandler; +import org.apache.geronimo.console.MultiPageModel; +import org.apache.geronimo.security.keystore.KeystoreInstance; +import org.apache.geronimo.util.CertificateUtil; + +import javax.portlet.ActionResponse; +import javax.portlet.PortletRequest; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.Serializable; +import java.io.IOException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.security.NoSuchAlgorithmException; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * The base class for all handlers for this portlet + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public abstract class BaseKeystoreHandler extends MultiPageAbstractHandler { + private final static Log log = LogFactory.getLog(BaseKeystoreHandler.class); + protected static final String KEYSTORE_DATA_PREFIX="org.apache.geronimo.keystore."; + protected static final String LIST_MODE = "list"; + protected static final String UNLOCK_KEYSTORE_FOR_EDITING = "unlockEdit"; + protected static final String UNLOCK_KEYSTORE_FOR_USAGE = "unlockKeystore"; + protected static final String LOCK_KEYSTORE_FOR_EDITING = "lockEdit"; + protected static final String LOCK_KEYSTORE_FOR_USAGE = "lockKeystore"; + protected static final String CREATE_KEYSTORE = "createKeystore"; + protected static final String VIEW_KEYSTORE = "viewKeystore"; + protected static final String UPLOAD_CERTIFICATE = "uploadCertificate"; + protected static final String CONFIRM_CERTIFICATE = "confirmCertificate"; + protected static final String CONFIGURE_KEY = "configureKey"; + protected static final String CONFIRM_KEY = "confirmKey"; + + protected BaseKeystoreHandler(String mode, String viewName) { + super(mode, viewName); + } + + public final static class KeystoreModel implements MultiPageModel { + public KeystoreModel(PortletRequest request) { + } + + public void save(ActionResponse response) { + } + } + + public final static class KeystoreData implements Serializable { + private KeystoreInstance instance; + private char[] password; + private String[] certificates; + private String[] keys; + private Map fingerprints; + + public KeystoreInstance getInstance() { + return instance; + } + + public void setInstance(KeystoreInstance instance) { + this.instance = instance; + } + + public void setPassword(char[] password) { + this.password = password; + } + + public boolean isLocked() { + return password == null; + } + + public String[] getCertificates() { + return certificates; + } + + public void setCertificates(String[] certificates) { + this.certificates = certificates; + } + + public String[] getKeys() { + return keys; + } + + public void setKeys(String[] keys) { + this.keys = keys; + } + + public Map getFingerprints() { + if(fingerprints == null) { + fingerprints = new HashMap(); + for (int i = 0; i < certificates.length; i++) { + String alias = certificates[i]; + try { + fingerprints.put(alias, CertificateUtil.generateFingerprint(instance.getCertificate(alias, password), "MD5")); + } catch (Exception e) { + log.error("Unable to generate certificate fingerprint", e); + } + } + for (int i = 0; i < keys.length; i++) { + String alias = keys[i]; + try { + fingerprints.put(alias, CertificateUtil.generateFingerprint(instance.getCertificate(alias, password), "MD5")); + } catch (Exception e) { + log.error("Unable to generate certificate fingerprint", e); + } + } + } + return fingerprints; + } + + public boolean importTrustCert(String fileName, String alias) throws FileNotFoundException, CertificateException { + InputStream is = new FileInputStream(fileName); + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + Collection certs = cf.generateCertificates(is); + X509Certificate cert = (X509Certificate) certs.iterator().next(); + boolean result = instance.importTrustCertificate(cert, alias, password); + if(result) { + String[] update = new String[certificates.length+1]; + System.arraycopy(certificates, 0, update, 0, certificates.length); + update[certificates.length] = alias; + certificates = update; + try { + fingerprints.put(alias, CertificateUtil.generateFingerprint(instance.getCertificate(alias, password), "MD5")); + } catch (Exception e) { + log.error("Unable to generate certificate fingerprint", e); + } + } + return result; + } + + public boolean createKeyPair(String alias, String keyPassword, String keyAlgorithm, int keySize, + String signatureAlgorithm, int validity, String commonName, String orgUnit, + String organization, String locality, String state, String country) { + boolean result = instance.generateKeyPair(alias, password, keyPassword.toCharArray(), keyAlgorithm, keySize, + signatureAlgorithm, validity, commonName, orgUnit, organization, locality, state, country); + if(result) { + String[] update = new String[keys.length+1]; + System.arraycopy(keys, 0, update, 0, keys.length); + update[keys.length] = alias; + keys = update; + try { + fingerprints.put(alias, CertificateUtil.generateFingerprint(instance.getCertificate(alias, password), "MD5")); + } catch (Exception e) { + log.error("Unable to generate certificate fingerprint", e); + } + } + return result; + } + } + +// public final static class WebAppData implements Serializable { +// private String configId; +// private boolean enabled; +// private String dynamicPattern; +// private boolean serveStaticContent; +// private String contextRoot; +// private String webAppDir; +// +// public WebAppData(String configId, boolean enabled, String dynamicPattern, boolean serveStaticContent) { +// this.configId = configId; +// this.enabled = enabled; +// this.dynamicPattern = dynamicPattern; +// this.serveStaticContent = serveStaticContent; +// } +// +// public WebAppData(PortletRequest request, String prefix) { +// configId = request.getParameter(prefix+"configId"); +// dynamicPattern = request.getParameter(prefix+"dynamicPattern"); +// String test = request.getParameter(prefix+"enabled"); +// enabled = test != null && !test.equals("") && !test.equals("false"); +// test = request.getParameter(prefix+"serveStaticContent"); +// serveStaticContent = test != null && !test.equals("") && !test.equals("false"); +// contextRoot = request.getParameter(prefix+"contextRoot"); +// webAppDir = request.getParameter(prefix+"webAppDir"); +// } +// +// public void save(ActionResponse response, String prefix) { +// response.setRenderParameter(prefix+"configId", configId); +// response.setRenderParameter(prefix+"dynamicPattern", dynamicPattern); +// response.setRenderParameter(prefix+"enabled", Boolean.toString(enabled)); +// response.setRenderParameter(prefix+"serveStaticContent", Boolean.toString(serveStaticContent)); +// if(contextRoot != null) response.setRenderParameter(prefix+"contextRoot", contextRoot); +// if(webAppDir != null) response.setRenderParameter(prefix+"webAppDir", webAppDir); +// } +// +// public boolean isEnabled() { +// return enabled; +// } +// +// public void setEnabled(boolean enabled) { +// this.enabled = enabled; +// } +// +// public String getConfigId() { +// return configId; +// } +// +// public void setConfigId(String configId) { +// this.configId = configId; +// } +// +// public String getDynamicPattern() { +// return dynamicPattern; +// } +// +// public void setDynamicPattern(String dynamicPattern) { +// this.dynamicPattern = dynamicPattern; +// } +// +// public boolean isServeStaticContent() { +// return serveStaticContent; +// } +// +// public void setServeStaticContent(boolean serveStaticContent) { +// this.serveStaticContent = serveStaticContent; +// } +// +// public String getContextRoot() { +// return contextRoot; +// } +// +// public void setContextRoot(String contextRoot) { +// this.contextRoot = contextRoot; +// } +// +// public String getWebAppDir() { +// return webAppDir; +// } +// +// public void setWebAppDir(String webAppDir) { +// this.webAppDir = webAppDir; +// } +// } +// +// public final static class ApacheModel implements MultiPageModel { +// private String os; +// private Integer addAjpPort; +// private String logFilePath; +// private String workersPath; +// private List webApps = new ArrayList(); +// +// public ApacheModel(PortletRequest request) { +// Map map = request.getParameterMap(); +// os = request.getParameter("os"); +// logFilePath = request.getParameter("logFilePath"); +// if(logFilePath == null) { +// logFilePath = PortletManager.getServerInfo(request).resolve("var/log/apache_mod_jk.log").getPath(); +// } +// workersPath = request.getParameter("workersPath"); +// if(workersPath == null) { +// workersPath = PortletManager.getServerInfo(request).resolve("var/config/workers.properties").getPath(); +// } +// String ajp = request.getParameter("addAjpPort"); +// if(!isEmpty(ajp)) addAjpPort = new Integer(ajp); +// int index = 0; +// while(true) { +// String key = "webapp."+(index++)+"."; +// if(!map.containsKey(key+"configId")) { +// break; +// } +// BaseKeystoreHandler.WebAppData data = new BaseKeystoreHandler.WebAppData(request, key); +// webApps.add(data); +// } +// } +// +// public void save(ActionResponse response) { +// if(!isEmpty(os)) response.setRenderParameter("os", os); +// if(!isEmpty(logFilePath)) response.setRenderParameter("logFilePath", logFilePath); +// if(!isEmpty(workersPath)) response.setRenderParameter("workersPath", workersPath); +// if(addAjpPort != null) response.setRenderParameter("addAjpPort", addAjpPort.toString()); +// for (int i = 0; i < webApps.size(); i++) { +// BaseKeystoreHandler.WebAppData data = (BaseKeystoreHandler.WebAppData) webApps.get(i); +// String key = "webapp."+i+"."; +// data.save(response, key); +// } +// } +// +// public String getOs() { +// return os; +// } +// +// public void setOs(String os) { +// this.os = os; +// } +// +// public Integer getAddAjpPort() { +// return addAjpPort; +// } +// +// public void setAddAjpPort(Integer addAjpPort) { +// this.addAjpPort = addAjpPort; +// } +// +// public String getLogFilePath() { +// return logFilePath; +// } +// +// public void setLogFilePath(String logFilePath) { +// this.logFilePath = logFilePath; +// } +// +// public String getWorkersPath() { +// return workersPath; +// } +// +// public void setWorkersPath(String workersPath) { +// this.workersPath = workersPath; +// } +// +// public List getWebApps() { +// return webApps; +// } +// +// public void setWebApps(List webApps) { +// this.webApps = webApps; +// } +// } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/BaseKeystoreHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfigureNewKeyHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfigureNewKeyHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfigureNewKeyHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfigureNewKeyHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,81 @@ +/** + * + * Copyright 2005 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.geronimo.console.keystores; + +import org.apache.geronimo.console.MultiPageModel; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.IOException; + +/** + * Handler for collecting the settings necessary to generate a new private key. + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class ConfigureNewKeyHandler extends BaseKeystoreHandler { + public ConfigureNewKeyHandler() { + super(CONFIGURE_KEY, "/WEB-INF/view/keystore/configureKey.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + String id = request.getParameter("keystore"); + if(id != null) { + response.setRenderParameter("keystore", id); + } // else we hope this is after a failure and the actionAfterView took care of it below! + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { + request.setAttribute("keystore", request.getParameter("keystore")); + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + String keystore = request.getParameter("keystore"); + String alias = request.getParameter("alias"); + String password = request.getParameter("password"); + String keySize = request.getParameter("keySize"); + String algorithm = request.getParameter("algorithm"); + String valid = request.getParameter("valid"); + String certCN = request.getParameter("certCN"); + String certOU = request.getParameter("certOU"); + String certO = request.getParameter("certO"); + String certL = request.getParameter("certL"); + String certST = request.getParameter("certST"); + String certC = request.getParameter("certC"); + + //todo: validation + + response.setRenderParameter("keystore", keystore); + response.setRenderParameter("alias", alias); + response.setRenderParameter("password", password); + response.setRenderParameter("keySize", keySize); + response.setRenderParameter("algorithm", algorithm); + response.setRenderParameter("valid", valid); + response.setRenderParameter("certCN", certCN); + response.setRenderParameter("certOU", certOU); + response.setRenderParameter("certO", certO); + response.setRenderParameter("certL", certL); + response.setRenderParameter("certST", certST); + response.setRenderParameter("certC", certC); + + return CONFIRM_KEY+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfigureNewKeyHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmCertificateHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmCertificateHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmCertificateHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmCertificateHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,97 @@ +/** + * + * Copyright 2005 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.geronimo.console.keystores; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.console.MultiPageModel; +import org.apache.geronimo.util.CertificateUtil; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.SimpleDateFormat; +import java.util.Collection; + +/** + * Handler for entering a password to unlock a keystore + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class ConfirmCertificateHandler extends BaseKeystoreHandler { + private final static Log log = LogFactory.getLog(ConfirmCertificateHandler.class); + + public ConfirmCertificateHandler() { + super(CONFIRM_CERTIFICATE, "/WEB-INF/view/keystore/confirmCertificate.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { + SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); + request.setAttribute("id", request.getParameter("id")); + request.setAttribute("alias", request.getParameter("alias")); + String certFile = request.getParameter("certificate"); + request.setAttribute("certificate", certFile); + InputStream is = new FileInputStream(certFile); + try { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + Collection certificates = cf.generateCertificates(is); + X509Certificate cert = (X509Certificate) certificates.iterator().next(); + request.setAttribute("fingerprint", CertificateUtil.generateFingerprint(cert, "MD5")); + request.setAttribute("issuer", cert.getIssuerDN().getName()); + request.setAttribute("subject", cert.getSubjectDN().getName()); + request.setAttribute("serial", cert.getSerialNumber()); + request.setAttribute("validStart", sdf.format(cert.getNotBefore())); + request.setAttribute("validEnd", sdf.format(cert.getNotAfter())); + } catch (CertificateException e) { + log.error("Unable to process uploaded certificate", e); + } catch (NoSuchAlgorithmException e) { + log.error("Unable to process uploaded certificate", e); + } + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + String id = request.getParameter("id"); + String alias = request.getParameter("alias"); + String certificate = request.getParameter("certificate"); + if(id == null || id.equals("") || alias == null || alias.equals("") || certificate == null || certificate.equals("")) { + return LIST_MODE+BEFORE_ACTION; //todo: better handling + } + KeystoreData data = ((KeystoreData) request.getPortletSession(true).getAttribute(KEYSTORE_DATA_PREFIX + id)); + try { + if(!data.importTrustCert(certificate, alias)) { + log.error("Unable to import certificate"); + } + } catch (CertificateException e) { + log.error("Unable to import certificate", e); + } + response.setRenderParameter("id", id); + return VIEW_KEYSTORE+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmCertificateHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Added: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmKeyHandler.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmKeyHandler.java?rev=388236&view=auto ============================================================================== --- geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmKeyHandler.java (added) +++ geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmKeyHandler.java Thu Mar 23 11:20:22 2006 @@ -0,0 +1,104 @@ +/** + * + * Copyright 2005 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.geronimo.console.keystores; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.geronimo.console.MultiPageModel; + +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.PortletException; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * Handler for entering a password to unlock a keystore + * + * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue, 14 Sep 2004) $ + */ +public class ConfirmKeyHandler extends BaseKeystoreHandler { + private final static Log log = LogFactory.getLog(ConfirmKeyHandler.class); + + public ConfirmKeyHandler() { + super(CONFIRM_KEY, "/WEB-INF/view/keystore/confirmKey.jsp"); + } + + public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + return getMode(); + } + + public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { + SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); + String keystore = request.getParameter("keystore"); + String alias = request.getParameter("alias"); + String password = request.getParameter("password"); + String keySize = request.getParameter("keySize"); + String algorithm = request.getParameter("algorithm"); + String valid = request.getParameter("valid"); + String certCN = request.getParameter("certCN"); + String certOU = request.getParameter("certOU"); + String certO = request.getParameter("certO"); + String certL = request.getParameter("certL"); + String certST = request.getParameter("certST"); + String certC = request.getParameter("certC"); + request.setAttribute("keystore", keystore); + request.setAttribute("alias", alias); + request.setAttribute("password", password); + request.setAttribute("keySize", keySize); + request.setAttribute("algorithm", algorithm); + request.setAttribute("valid", valid); + request.setAttribute("validFrom", sdf.format(new Date())); + Calendar cal = new GregorianCalendar(); + cal.add(Calendar.DAY_OF_YEAR, Integer.parseInt(valid)); + request.setAttribute("validTo", sdf.format(cal.getTime())); + request.setAttribute("certCN", certCN); + request.setAttribute("certOU", certOU); + request.setAttribute("certO", certO); + request.setAttribute("certL", certL); + request.setAttribute("certST", certST); + request.setAttribute("certC", certC); + } + + public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { + String keystore = request.getParameter("keystore"); + String alias = request.getParameter("alias"); + String password = request.getParameter("password"); + String keySize = request.getParameter("keySize"); + String algorithm = request.getParameter("algorithm"); + String valid = request.getParameter("valid"); + String certCN = request.getParameter("certCN"); + String certOU = request.getParameter("certOU"); + String certO = request.getParameter("certO"); + String certL = request.getParameter("certL"); + String certST = request.getParameter("certST"); + String certC = request.getParameter("certC"); + + KeystoreData data = ((KeystoreData) request.getPortletSession(true).getAttribute(KEYSTORE_DATA_PREFIX + keystore)); + if(!data.createKeyPair(alias, password, "RSA", Integer.parseInt(keySize), algorithm, Integer.parseInt(valid), + certCN, certOU, certO, certL, certST, certC)) { + ConfirmKeyHandler.log.error("Unable to import certificate"); + } + response.setRenderParameter("id", keystore); + return VIEW_KEYSTORE+BEFORE_ACTION; + } +} Propchange: geronimo/trunk/applications/console-standard/src/java/org/apache/geronimo/console/keystores/ConfirmKeyHandler.java ------------------------------------------------------------------------------ svn:eol-style = native