You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsrp4j-dev@portals.apache.org by dl...@apache.org on 2006/12/20 18:17:18 UTC

svn commit: r489147 - in /portals/wsrp4j/trunk/producer: ./ src/java/org/apache/wsrp4j/producer/configapp/ src/java/org/apache/wsrp4j/producer/configapp/controller/ src/java/org/apache/wsrp4j/producer/configapp/exception/ src/java/org/apache/wsrp4j/pro...

Author: dlouzan
Date: Wed Dec 20 09:17:16 2006
New Revision: 489147

URL: http://svn.apache.org/viewvc?view=rev&rev=489147
Log:
Initial version of configuration servlet for producer

Added:
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/controller/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/controller/DeployApp.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/exception/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/exception/ConfigAppException.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegate.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegateFactory.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/impl/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/impl/ProviderServicesDelegateImpl.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/services/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/services/DeployAppService.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/Constants.java
    portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/ServletUtils.java
    portals/wsrp4j/trunk/producer/src/resources/
    portals/wsrp4j/trunk/producer/src/resources/Messages.properties
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/c.tld
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/fmt.tld
    portals/wsrp4j/trunk/producer/src/webapp/jsp/
    portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/
    portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/ShowPortletApps.jsp
    portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadFail.jsp
    portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadSuccess.jsp
    portals/wsrp4j/trunk/producer/src/webapp/jsp/index.jsp
Modified:
    portals/wsrp4j/trunk/producer/pom.xml
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/classes/wsrp4j-config.properties
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/config/services.properties
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletcontexts.txt
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletentityregistry.xml
    portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/web.xml

Modified: portals/wsrp4j/trunk/producer/pom.xml
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/pom.xml?view=diff&rev=489147&r1=489146&r2=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/pom.xml (original)
+++ portals/wsrp4j/trunk/producer/pom.xml Wed Dec 20 09:17:16 2006
@@ -33,6 +33,15 @@
   </description>
   <build>
     <sourceDirectory>src/java</sourceDirectory>
+    <resources>
+        <resource>
+            <directory>${basedir}/src/resources</directory>
+            <targetPath>org/apache/wsrp4j/producer/configapp/messages</targetPath>
+            <includes>
+                <include>Messages.properties</include>
+            </includes>
+        </resource>
+    </resources>
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -57,6 +66,7 @@
               <filtering>true</filtering>
               <includes>
                 <include>WEB-INF/classes/log4j.properties</include>
+                <include>WEB-INF/classes/wsrp4j-config.properties</include>
               </includes>
             </resource>
           </webResources>
@@ -103,6 +113,11 @@
       <version>${commons-discovery.version}</version>
     </dependency>
     <dependency>
+      <artifactId>commons-fileupload</artifactId>
+      <groupId>commons-fileupload</groupId>
+      <version>${commons-fileupload.version}</version>
+    </dependency>
+    <dependency>
       <artifactId>pluto</artifactId>
       <groupId>org.apache.pluto</groupId>
       <version>${pluto.version}</version>
@@ -114,9 +129,29 @@
       <version>${pluto.version}</version>
     </dependency>
     <dependency>
+      <artifactId>pluto-deploy</artifactId>
+      <groupId>org.apache.pluto</groupId>
+      <version>${pluto.version}</version>
+    </dependency>
+        <dependency>
+      <artifactId>pluto-descriptors</artifactId>
+      <groupId>org.apache.pluto</groupId>
+      <version>${pluto.version}</version>
+    </dependency>    
+    <dependency>
       <artifactId>log4j</artifactId>
       <groupId>log4j</groupId>
       <version>${log4j.version}</version>
+    </dependency>
+    <dependency>
+        <artifactId>jstl</artifactId>
+        <groupId>javax.servlet</groupId>
+        <version>${jstl.version}</version>
+    </dependency>
+    <dependency>
+        <artifactId>standard</artifactId>
+        <groupId>taglibs</groupId>
+        <version>${jstl.version}</version>
     </dependency>
   </dependencies>
 </project>

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/controller/DeployApp.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/controller/DeployApp.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/controller/DeployApp.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/controller/DeployApp.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,77 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.controller;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.wsrp4j.producer.configapp.services.DeployAppService;
+
+import org.apache.wsrp4j.producer.configapp.exception.ConfigAppException;
+
+import org.apache.wsrp4j.producer.configapp.util.Constants;
+import org.apache.wsrp4j.producer.configapp.util.ServletUtils;
+
+
+/**
+ * Servlet that lets a user upload a portlet application for producer to
+ * deploy.
+ *
+ * @version $Id$
+ */
+public class DeployApp extends HttpServlet {
+    
+    private DeployAppService service;
+    
+    public void init() throws ServletException {
+        super.init();
+        try {
+            service = new DeployAppService(
+                    getServletConfig());
+        } catch (ConfigAppException e) {
+            throw new ServletException("Error while initializing required services",
+                    e);
+        }
+    }
+    
+    protected void doGet(HttpServletRequest request, HttpServletResponse response)
+    throws ServletException, IOException {
+        
+        String action = request.getParameter(Constants.PARAM_ACTION);
+        
+        try {
+            if (action == null) {
+                service.processFileUpload(request, response);
+            } else if (action.equals(Constants.ACTION_SHOW_PORTLETS)) {
+                service.processShowPortletApplications(request, response);
+            }
+        } catch (ConfigAppException e) {
+            throw new ServletException(e);
+        }
+        
+    }
+    
+    protected void doPost(HttpServletRequest request, HttpServletResponse response)
+    throws ServletException, IOException {
+        doGet(request, response);
+    }
+    
+}

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/exception/ConfigAppException.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/exception/ConfigAppException.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/exception/ConfigAppException.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/exception/ConfigAppException.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,41 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.exception;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+import org.apache.commons.lang.exception.NestableException;
+
+import org.apache.wsrp4j.commons.exception.WSRPException;
+
+
+/**
+ * Model exception for configapp.
+ *
+ * @version $Id$
+ */
+public class ConfigAppException extends NestableException {
+
+    public ConfigAppException(Throwable throwable) {
+        super(throwable);
+    }
+    
+    public ConfigAppException(String message, Throwable t) {
+        super(message, t);
+    }
+    
+}

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegate.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegate.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegate.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegate.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,49 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.model.delegate;
+
+import java.util.Collection;
+
+import org.apache.wsrp4j.producer.configapp.exception.ConfigAppException;
+
+
+/**
+ * Model delegate class that lets us request Provider services
+ * like deploying a portlet application or getting the list of deployed
+ * portlet applications.
+ *
+ * @version $Id$
+ */
+public interface ProviderServicesDelegate {
+    
+    /**
+     * Returns a Collection of 
+     * <code>org.apache.wsrp4j.commons.producer.provider.interfaces.ProducerOfferedPortlet</code>
+     * deployed to a portal.
+     */
+    public Collection getProducerOfferedPortlets()
+    throws ConfigAppException;
+    
+    /**
+     * Deploy a given portlet application to a portal. The portlet app
+     * can be a .war or an exploded dir: in case of being a .war file,
+     * the file is exploded to webappsDir.
+     */
+    public void deployPortletApplication(String portletApp, String portalDir,
+            String webappsDir)
+    throws ConfigAppException;
+    
+}

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegateFactory.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegateFactory.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegateFactory.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/ProviderServicesDelegateFactory.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,72 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.model.delegate;
+
+import org.apache.wsrp4j.commons.util.configuration.ConfigurationParametersManager;
+
+import org.apache.wsrp4j.producer.configapp.exception.ConfigAppException;
+
+
+/**
+ * Factory for ProviderServicesDelegate
+ * 
+ * @version $Id$
+ */
+public class ProviderServicesDelegateFactory {
+    
+    private final static String DELEGATE_CLASS_NAME_PARAMETER =
+        "wsrp4j.producer.configapp.providerservices.delegate";
+    
+    private final static Class delegateClass = getDelegateClass();
+    
+    private static ProviderServicesDelegate instance = null;
+    
+    private ProviderServicesDelegateFactory() {}
+    
+    private static Class getDelegateClass() {
+    
+        Class theClass = null;
+    
+        try {
+        
+            String delegateClassName = 
+                ConfigurationParametersManager.getParameter(
+                    DELEGATE_CLASS_NAME_PARAMETER);
+            
+            theClass = Class.forName(delegateClassName);
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        
+        return theClass;
+        
+    }
+    
+    public static ProviderServicesDelegate getDelegate() 
+    throws ConfigAppException {
+        
+        try {
+            if (instance == null) {
+                instance = (ProviderServicesDelegate) delegateClass.newInstance();
+            }
+            return instance;
+        } catch (Exception e) {
+            throw new ConfigAppException(e);
+        }
+    }
+    
+}

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/impl/ProviderServicesDelegateImpl.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/impl/ProviderServicesDelegateImpl.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/impl/ProviderServicesDelegateImpl.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/model/delegate/impl/ProviderServicesDelegateImpl.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,123 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.model.delegate.impl;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.pluto.driver.deploy.CLI;
+
+import org.apache.wsrp4j.commons.exception.WSRPException;
+
+import org.apache.wsrp4j.commons.producer.provider.interfaces.PortletPool;
+import org.apache.wsrp4j.commons.producer.provider.interfaces.Portlet;
+import org.apache.wsrp4j.commons.producer.provider.interfaces.Provider;
+import org.apache.wsrp4j.commons.producer.provider.interfaces.ProviderAccess;
+
+import org.apache.wsrp4j.producer.configapp.exception.ConfigAppException;
+import org.apache.wsrp4j.producer.configapp.model.delegate.ProviderServicesDelegate;
+
+
+/**
+ * Relies on Pluto services for servicing the Provider interfaces.
+ *
+ * @version $Id$
+ */
+public class ProviderServicesDelegateImpl implements ProviderServicesDelegate {
+    
+    private static final Log log = LogFactory.getLog(ProviderServicesDelegateImpl.class);
+    
+    private Provider provider;
+    
+    public ProviderServicesDelegateImpl() {
+        
+        try {
+            /* This call ensures that all provider services are correctly
+               initiated */
+            provider = ProviderAccess.getProvider();
+        } catch (WSRPException e) {
+            if (log.isErrorEnabled()) {
+                log.error("Error accessing the underlying provider", e);
+            }
+        }
+        
+    }
+    
+    /**
+     * Returns a Collection of 
+     * <code>org.apache.wsrp4j.commons.producer.provider.interfaces.ProducerOfferedPortlet</code>
+     * deployed to a portal.
+     */
+    public Collection getProducerOfferedPortlets()
+    throws ConfigAppException {
+        
+        Collection result = new ArrayList();
+        
+        PortletPool pool = provider.getPortletPool();
+        for (Iterator iter = pool.getAllProducerOfferedPortlets(); 
+                iter.hasNext(); ) {
+            Portlet offeredPortlet = (Portlet) iter.next();
+            result.add(offeredPortlet);
+        }
+        
+        return result;
+        
+    }
+    
+    /**
+     * Deploy a given portlet application to a portal. The portlet app
+     * can be a .war or an exploded dir: in case of being a .war file,
+     * the file is exploded to webappsDir.
+     */
+    public void deployPortletApplication(String portletApp, String portalDir,
+            String webappsDir)
+    throws ConfigAppException {
+        
+        try {
+
+            /* Args needed by pluto-deploy Deploy utility:
+             * -verbose
+             *     Print verbose information about deployment
+             * -destination <destDir>
+             *     Directory where to store the new portletapp
+             * -portal <portalDir>
+             *     Directory where the portal application resides
+             * <portletApp>
+             *     PortletApplication war to deploy
+             */
+             List args = new ArrayList();
+             args.add("-destination"); args.add(webappsDir);
+             args.add("-portal");      args.add(portalDir);
+             args.add(portletApp);
+             
+             String[] argsString = 
+                     (String[]) args.toArray(new String[args.size()]);
+
+             CLI.main(argsString);
+            
+        } catch (Exception e) {
+            throw new ConfigAppException(e);
+        }
+        
+    }
+    
+}

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/services/DeployAppService.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/services/DeployAppService.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/services/DeployAppService.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/services/DeployAppService.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,191 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.services;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.pluto.driver.deploy.CLI;
+
+import org.apache.wsrp4j.commons.util.configuration.ConfigurationParametersManager;
+import org.apache.wsrp4j.commons.util.configuration.MissingConfigurationParameterException;
+
+import org.apache.wsrp4j.commons.producer.util.ServletAccess;
+
+import org.apache.wsrp4j.producer.configapp.exception.ConfigAppException;
+
+import org.apache.wsrp4j.producer.configapp.model.delegate.ProviderServicesDelegate;
+import org.apache.wsrp4j.producer.configapp.model.delegate.ProviderServicesDelegateFactory;
+
+import org.apache.wsrp4j.producer.configapp.util.Constants;
+import org.apache.wsrp4j.producer.configapp.util.ServletUtils;
+
+
+/**
+ * Services needed by the DeployApp servlet.
+ *
+ * @version $Id$
+ */
+public class DeployAppService {
+    
+    private static final Log log = LogFactory.getLog(DeployAppService.class);
+    
+    private String portalDir = null;
+    private String webappsDir = null;
+    
+    private ProviderServicesDelegate delegate = null;
+    
+    public DeployAppService(ServletConfig config) throws ConfigAppException {
+        
+        try {
+            
+            /* Deploy the portlets to the current application */
+            portalDir = config.getServletContext().getRealPath("");
+            
+            /* Read the webapps dir from the configuration */
+            webappsDir =
+                    ConfigurationParametersManager.getParameter(
+                    Constants.CONFIGAPP_WEBAPPS_DIR);
+            
+            /* Obtain the delegate for model operations */
+            delegate = ProviderServicesDelegateFactory.getDelegate();
+            
+        } catch (MissingConfigurationParameterException e) {
+            throw new ConfigAppException("Missing webapps directory conf parameter", e);
+        } catch (Exception e) {
+            throw new ConfigAppException(e);
+        }
+        
+    }
+    
+    public void processShowPortletApplications(HttpServletRequest request,
+            HttpServletResponse response)
+    throws ConfigAppException, ServletException, IOException {
+        
+        Collection portlets = delegate.getProducerOfferedPortlets();
+        request.setAttribute(Constants.ATTR_PORTLETS, portlets);
+        
+        ServletUtils.forward(request, response,
+                "/jsp/configapp/ShowPortletApps.jsp");
+        
+    }
+    
+    public void processFileUpload(HttpServletRequest request,
+            HttpServletResponse response)
+    throws ConfigAppException, ServletException, IOException {
+        
+        String fileName = null;
+        String serverFileName = null;
+        
+        if (ServletFileUpload.isMultipartContent(request)) {
+
+            try {
+                FileItemFactory factory = new DiskFileItemFactory();
+                ServletFileUpload upload = new ServletFileUpload(factory);
+                List items = upload.parseRequest(request);
+
+                for (Iterator iter = items.iterator(); iter.hasNext(); ) {
+                    FileItem item = (FileItem) iter.next();
+
+                    if (item.isFormField()) {
+
+                    } else {
+                        
+                        if (item.getSize() <= 0) {
+                            if (log.isDebugEnabled()) {
+                                log.debug("Error while uploading portlet app. No data found.");
+                            }
+                            ServletUtils.forward(request, response,
+                                    "/jsp/configapp/UploadFail.jsp");
+                        } else {
+
+                            fileName = item.getName();
+                        
+                            String tempDir = System.getProperty("java.io.tmpdir");
+                            serverFileName = getRootFileName(File.separatorChar, fileName);
+                        
+                            File serverFile = new File(tempDir, serverFileName);
+
+                            item.write(serverFile);
+
+                            /* Args needed by pluto-deploy Deploy utility:
+                             * -verbose
+                             *     Print verbose information about deployment
+                             * -destination <destDir>
+                             *     Directory where to store the new portletapp
+                             * -portal <portalDir>
+                             *     Directory where the portal application resides
+                             * <portletApp>
+                             *     PortletApplication war to deploy
+                             */
+
+                            delegate.deployPortletApplication(serverFile.getAbsolutePath(),
+                                    portalDir, webappsDir);
+                                            /* Deployment successful */
+                            ServletUtils.forward(request, response,
+                                    "/jsp/configapp/UploadSuccess.jsp");
+                            
+                        }
+
+                    }
+                }
+                
+            } catch (Exception e) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Error while uploading portlet app", e);
+                }
+                ServletUtils.forward(request, response,
+                        "/jsp/configapp/UploadFail.jsp");
+            }
+            
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("Error while uploading portlet app. No data found");
+            }
+            /* Redirect to error page */
+            ServletUtils.forward(request, response,
+                    "/jsp/configapp/UploadFail.jsp");
+        }
+        
+    }
+    
+    private String getRootFileName(char delimiter, String pathName) {
+        int startFilenameIndex = pathName.lastIndexOf(delimiter)  + 1;
+        String filename = pathName.substring(startFilenameIndex);
+        return filename;
+    }
+    
+}
\ No newline at end of file

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/Constants.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/Constants.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/Constants.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/Constants.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,40 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.util;
+
+
+/**
+ * Constants needed for DeployApp servlet.
+ *
+ * @version $Id$
+ */
+public final class Constants {
+    
+    private Constants() {}
+    
+    public final static String PARAM_ACTION = "action";
+    
+    public final static String ACTION_SHOW_PORTLETS = "showPortlets";
+    public final static String ACTION_SHOW_UPLOAD = "showUpload";
+    
+    public final static String ATTR_PORTLETS = "portlets";
+    
+    /* Configuration parameter storing the directory where configapp stores
+     * the deployed portletapps */
+    public final static String CONFIGAPP_WEBAPPS_DIR =
+            "wsrp4j.producer.configapp.webapps.dir";
+    
+}

Added: portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/ServletUtils.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/ServletUtils.java?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/ServletUtils.java (added)
+++ portals/wsrp4j/trunk/producer/src/java/org/apache/wsrp4j/producer/configapp/util/ServletUtils.java Wed Dec 20 09:17:16 2006
@@ -0,0 +1,42 @@
+/**
+ * Copyright 2003-2006 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.wsrp4j.producer.configapp.util;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+/**
+ * Provides some convenient methods for using with servlets.
+ *
+ * @version $Id$
+ */
+public class ServletUtils {
+    
+    private ServletUtils() {}
+    
+    public static void forward(HttpServletRequest request,
+            HttpServletResponse response, String path)
+    throws ServletException, IOException {
+        RequestDispatcher dispatcher = request.getRequestDispatcher(path);
+        dispatcher.forward(request, response);
+    }
+    
+}

Added: portals/wsrp4j/trunk/producer/src/resources/Messages.properties
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/resources/Messages.properties?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/resources/Messages.properties (added)
+++ portals/wsrp4j/trunk/producer/src/resources/Messages.properties Wed Dec 20 09:17:16 2006
@@ -0,0 +1,47 @@
+# Copyright 2003-2006 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.
+
+MainPage.bugMessage=Due to the current design of Producer, the configuration \
+    utility won't work until an actual call to the Axis servlet is made. \
+    Please click below on the test link before using the deploy utility.
+MainPage.bugTitle=Important (known bug)
+MainPage.confLink=Deploy Utility
+MainPage.mainTitle=WSRP4J Producer
+MainPage.message=This is the WSRP4J Producer main page. It includes an upload \
+    utility to easily add new Portlet Applications. See the links below.
+MainPage.pageTitle=WSRP4J Producer
+MainPage.producerLink=View Producer ServiceDescription (test link)
+MainPage.servicesLink=View Deployed Services
+
+ShowPortletApps.mainTitle=Portlets Deployed
+ShowPortletApps.noPortletsFound=No Portlets Found
+ShowPortletApps.pageTitle=Portlets Deployed
+ShowPortletApps.uploadLink=Upload a Portlet Application
+
+ShowUpload.mainTitle=Deploy Application for WSRP4JProducer
+ShowUpload.pageTitle=DeployApp for WSRP4JProducer
+ShowUpload.selectWar=Please Select a War File
+ShowUpload.submit=Submit
+ShowUpload.upload=Upload a Portlet Application
+
+UploadFail.mainTitle=Upload Failed
+UploadFail.message=Upload of Portlet Application failed. Please see log files \
+    for more details.
+UploadFail.pageTitle=Upload Fail
+
+UploadSuccess.indexLink=Go back
+UploadSuccess.mainTitle=Upload Successful
+UploadSuccess.message=Upload of Portlet Application has been successful. Please \
+    restart Producer to reload settings.
+UploadSuccess.pageTitle=Upload Success

Modified: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/classes/wsrp4j-config.properties
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/classes/wsrp4j-config.properties?view=diff&rev=489147&r1=489146&r2=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/classes/wsrp4j-config.properties (original)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/classes/wsrp4j-config.properties Wed Dec 20 09:17:16 2006
@@ -30,3 +30,10 @@
 # Set wether the producer processes consumer-supplied templates for
 # producer template processing
 wsrp4j.producer.provider.doesurltemplateprocessing=false
+
+# Directory when configapp stores the deployed portletapps
+wsrp4j.producer.configapp.webapps.dir=${maven.tomcat.producer.home}/webapps
+
+# Class that implements the Provider Services needed by the config app
+wsrp4j.producer.configapp.providerservices.delegate=\
+    org.apache.wsrp4j.producer.configapp.model.delegate.impl.ProviderServicesDelegateImpl

Modified: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/config/services.properties
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/config/services.properties?view=diff&rev=489147&r1=489146&r2=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/config/services.properties (original)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/config/services.properties Wed Dec 20 09:17:16 2006
@@ -23,6 +23,6 @@
 
 org.apache.pluto.portalImpl.services.factorymanager.FactoryManagerService=org.apache.pluto.portalImpl.services.factorymanager.FactoryManagerServiceImpl
 
-org.apache.pluto.portalImpl.services.portletdefinitionregistry.PortletDefinitionRegistryService=org.apache.pluto.portalImpl.services.portletdefinitionregistry.PortletDefinitionRegistryServiceFileImpl
+org.apache.pluto.portalImpl.services.portletdefinitionregistry.PortletDefinitionRegistryService=org.apache.pluto.portalImpl.services.portletdefinitionregistry.PortletDefinitionRegistryServiceContextImpl
 
 org.apache.pluto.portalImpl.services.portletentityregistry.PortletEntityRegistryService=org.apache.wsrp4j.producer.provider.pluto.driver.PortletPoolImpl

Modified: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletcontexts.txt
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletcontexts.txt?view=diff&rev=489147&r1=489146&r2=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletcontexts.txt (original)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletcontexts.txt Wed Dec 20 09:17:16 2006
@@ -1,2 +1 @@
-/wsrp4j-producer
 /wsrp4j-testportlet

Modified: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletentityregistry.xml
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletentityregistry.xml?view=diff&rev=489147&r1=489146&r2=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletentityregistry.xml (original)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/data/portletentityregistry.xml Wed Dec 20 09:17:16 2006
@@ -16,15 +16,10 @@
 -->
 
 <portlet-entity-registry>
-    
-    <application id="0">
+    <application id="wsrp4j-testportlet">
         <definition-id>wsrp4j-testportlet</definition-id>
-        <portlet id="1">
-            <definition-id>wsrp4j-testportlet.WSRP4JTestPortlet</definition-id>
-        </portlet>
-        <portlet id="2">
+        <portlet id="WSRP4JTestPortlet">
             <definition-id>wsrp4j-testportlet.WSRP4JTestPortlet</definition-id>
         </portlet>
     </application>
-    
 </portlet-entity-registry>

Added: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/c.tld
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/c.tld?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/c.tld (added)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/c.tld Wed Dec 20 09:17:16 2006
@@ -0,0 +1,416 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib
+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+  <tlib-version>1.0</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>c</short-name>
+  <uri>http://java.sun.com/jstl/core</uri>
+  <display-name>JSTL core</display-name>
+  <description>JSTL 1.0 core library</description>
+
+  <validator>
+    <validator-class>
+	org.apache.taglibs.standard.tlv.JstlCoreTLV
+    </validator-class>
+    <init-param>
+	<param-name>expressionAttributes</param-name>
+	<param-value>
+	    out:value
+	    out:default
+	    out:escapeXml
+	    if:test
+	    import:url
+	    import:context
+	    import:charEncoding
+	    forEach:items
+	    forEach:begin
+	    forEach:end
+	    forEach:step
+	    forTokens:items
+	    forTokens:begin
+	    forTokens:end
+	    forTokens:step
+	    param:encode
+	    param:name
+	    param:value
+            redirect:context
+            redirect:url
+	    set:property
+	    set:target
+	    set:value
+	    url:context
+	    url:value
+	    when:test
+	</param-value>
+	<description>
+	    Whitespace-separated list of colon-separated token pairs
+	    describing tag:attribute combinations that accept expressions.
+	    The validator uses this information to determine which
+	    attributes need their syntax validated.
+	</description>
+     </init-param>
+  </validator>
+
+  <tag>
+    <name>catch</name>
+    <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Catches any Throwable that occurs in its body and optionally
+        exposes it.
+    </description>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>choose</name>
+    <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Simple conditional tag that establishes a context for
+        mutually exclusive conditional operations, marked by
+        &lt;when&gt; and &lt;otherwise&gt;
+    </description>
+  </tag>
+
+  <tag>
+    <name>out</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.OutTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Like &lt;%= ... &gt;, but for expressions.
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>default</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>escapeXml</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>if</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.IfTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Simple conditional tag, which evalutes its body if the
+        supplied condition is true and optionally exposes a Boolean
+        scripting variable representing the evaluation of this condition
+    </description>
+    <attribute>
+        <name>test</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>import</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.ImportTag</tag-class>
+    <tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
+    <body-content>JSP</body-content>
+    <description>
+	Retrieves an absolute or relative URL and exposes its contents
+	to either the page, a String in 'var', or a Reader in 'varReader'.
+    </description>
+    <attribute>
+        <name>url</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>varReader</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>context</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>charEncoding</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>forEach</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.ForEachTag</tag-class>
+    <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class>
+    <body-content>JSP</body-content>
+    <description>
+	The basic iteration tag, accepting many different
+        collection types and supporting subsetting and other
+        functionality
+    </description>
+    <attribute>
+	<name>items</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>begin</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>end</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>step</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>var</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>varStatus</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>forTokens</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.ForTokensTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Iterates over tokens, separated by the supplied delimeters
+    </description>
+    <attribute>
+	<name>items</name>
+	<required>true</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>delims</name>
+	<required>true</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>begin</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>end</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>step</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>var</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+	<name>varStatus</name>
+	<required>false</required>
+	<rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>otherwise</name>
+    <tag-class>org.apache.taglibs.standard.tag.common.core.OtherwiseTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Subtag of &lt;choose&gt; that follows &lt;when&gt; tags
+	and runs only if all of the prior conditions evaluated to
+	'false'
+    </description>
+  </tag>
+
+  <tag>
+    <name>param</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.ParamTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Adds a parameter to a containing 'import' tag's URL.
+    </description>
+    <attribute>
+        <name>name</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>redirect</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.RedirectTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Redirects to a new URL.
+    </description>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>url</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>context</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>remove</name>
+    <tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+	Removes a scoped variable (from a particular scope, if specified).
+    </description>
+    <attribute>
+        <name>var</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>set</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.SetTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Sets the result of an expression evaluation in a 'scope'
+    </description>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>target</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>property</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>url</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.UrlTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+	Prints or exposes a URL with optional query parameters
+        (via the c:param tag).
+    </description>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>value</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>context</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>when</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.core.WhenTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Subtag of &lt;choose&gt; that includes its body if its
+        condition evalutes to 'true'
+    </description>
+    <attribute>
+        <name>test</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>

Added: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/fmt.tld
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/fmt.tld?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/fmt.tld (added)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/tld/fmt.tld Wed Dec 20 09:17:16 2006
@@ -0,0 +1,442 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib
+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+  <tlib-version>1.0</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>fmt</short-name>
+  <uri>http://java.sun.com/jstl/fmt</uri>
+  <display-name>JSTL fmt</display-name>
+  <description>JSTL 1.0 i18n-capable formatting library</description>
+
+  <validator>
+    <validator-class>
+	org.apache.taglibs.standard.tlv.JstlFmtTLV
+    </validator-class>
+    <init-param>
+	<param-name>expressionAttributes</param-name>
+	<param-value>
+            requestEncoding:value 
+	    setLocale:value
+	    setLocale:variant
+	    timeZone:value
+	    setTimeZone:value
+	    bundle:basename
+	    bundle:prefix
+            setBundle:basename
+	    message:key
+	    message:bundle
+	    param:value
+	    formatNumber:value
+	    formatNumber:pattern
+            formatNumber:currencyCode
+            formatNumber:currencySymbol
+            formatNumber:groupingUsed
+            formatNumber:maxIntegerDigits
+            formatNumber:minIntegerDigits
+            formatNumber:maxFractionDigits
+            formatNumber:minFractionDigits
+	    parseNumber:value
+	    parseNumber:pattern
+	    parseNumber:parseLocale
+            parseNumber:integerOnly
+	    formatDate:value
+	    formatDate:pattern
+	    formatDate:timeZone
+	    parseDate:value
+	    parseDate:pattern
+	    parseDate:timeZone
+	    parseDate:parseLocale
+	</param-value>
+	<description>
+	    Whitespace-separated list of colon-separated token pairs
+	    describing tag:attribute combinations that accept expressions.
+	    The validator uses this information to determine which
+	    attributes need their syntax validated.
+	</description>
+     </init-param>
+  </validator>
+
+  <tag>
+    <name>requestEncoding</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.RequestEncodingTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+        Sets the request character encoding
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>setLocale</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.SetLocaleTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+        Stores the given locale in the locale configuration variable
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>variant</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>timeZone</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.TimeZoneTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Specifies the time zone for any time formatting or parsing actions
+        nested in its body
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>setTimeZone</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.SetTimeZoneTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+        Stores the given time zone in the time zone configuration variable
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>bundle</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.BundleTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Loads a resource bundle to be used by its tag body
+    </description>
+    <attribute>
+        <name>basename</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>prefix</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>setBundle</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.SetBundleTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+        Loads a resource bundle and stores it in the named scoped variable or
+        the bundle configuration variable
+    </description>
+    <attribute>
+        <name>basename</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>message</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.MessageTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Maps key to localized message and performs parametric replacement
+    </description>
+    <attribute>
+        <name>key</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>bundle</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>param</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.ParamTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Supplies an argument for parametric replacement to a containing
+        &lt;message&gt; tag
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>formatNumber</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.FormatNumberTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Formats a numeric value as a number, currency, or percentage
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>type</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>pattern</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>currencyCode</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>currencySymbol</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>groupingUsed</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>maxIntegerDigits</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>minIntegerDigits</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>maxFractionDigits</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>minFractionDigits</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>parseNumber</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.ParseNumberTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Parses the string representation of a number, currency, or percentage
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>type</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>pattern</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>parseLocale</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>integerOnly</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>formatDate</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.FormatDateTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+        Formats a date and/or time using the supplied styles and pattern
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>true</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>type</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>dateStyle</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>timeStyle</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>pattern</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>timeZone</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+  <tag>
+    <name>parseDate</name>
+    <tag-class>org.apache.taglibs.standard.tag.el.fmt.ParseDateTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+        Parses the string representation of a date and/or time
+    </description>
+    <attribute>
+        <name>value</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>type</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>dateStyle</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>timeStyle</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>pattern</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>timeZone</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>parseLocale</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>var</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+        <name>scope</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>

Modified: portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/web.xml?view=diff&rev=489147&r1=489146&r2=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/web.xml (original)
+++ portals/wsrp4j/trunk/producer/src/webapp/WEB-INF/web.xml Wed Dec 20 09:17:16 2006
@@ -21,6 +21,11 @@
 <web-app>
 
     <display-name>WSRP4J Producer</display-name>
+    
+    <context-param>
+        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
+        <param-value>org.apache.wsrp4j.producer.configapp.messages.Messages</param-value>
+    </context-param>
 
     <servlet>
         <servlet-name>WSRP4JProducer</servlet-name>
@@ -28,6 +33,7 @@
         <servlet-class>
             org.apache.axis.transport.http.AxisServlet
         </servlet-class>
+        <load-on-startup>100</load-on-startup>
     </servlet>
 
     <servlet>
@@ -38,6 +44,14 @@
         </servlet-class>
         <load-on-startup>100</load-on-startup>
     </servlet>
+    
+    <servlet>
+        <servlet-name>DeployApp</servlet-name>
+        <display-name>DeployApplication</display-name>
+        <servlet-class>
+            org.apache.wsrp4j.producer.configapp.controller.DeployApp
+        </servlet-class>
+    </servlet>
 
     <servlet-mapping>
         <servlet-name>WSRP4JProducer</servlet-name>
@@ -48,6 +62,11 @@
         <servlet-name>WSRP4JProducer</servlet-name>
         <url-pattern>/services/*</url-pattern>
     </servlet-mapping>
+    
+    <servlet-mapping>
+        <servlet-name>DeployApp</servlet-name>
+        <url-pattern>/DeployApp/*</url-pattern>
+    </servlet-mapping>
 
     <!-- uncomment this if you want the admin servlet -->
     <!--
@@ -74,5 +93,19 @@
         <extension>xsd</extension>
         <mime-type>text/xml</mime-type>
     </mime-mapping>
+    
+    <welcome-file-list>
+        <welcome-file>/jsp/index.jsp</welcome-file>
+    </welcome-file-list>
+    
+    <taglib>
+        <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
+        <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
+    </taglib>
+    
+    <taglib>
+        <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
+        <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
+    </taglib>
 
 </web-app>

Added: portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/ShowPortletApps.jsp
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/ShowPortletApps.jsp?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/ShowPortletApps.jsp (added)
+++ portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/ShowPortletApps.jsp Wed Dec 20 09:17:16 2006
@@ -0,0 +1,61 @@
+<%--
+Copyright 2003-2006 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.
+--%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
+<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title><fmt:message key="ShowPortletApps.pageTitle"/></title>
+    </head>
+    <body>
+
+    <h1><fmt:message key="ShowPortletApps.mainTitle"/></h1>
+    
+    <c:choose>
+        
+    <c:when test="${not empty portlets}">
+        <c:forEach var="portlet" items="${portlets}">
+            <p>
+                <c:out value="${portlet.portletHandle}"/>
+            </p>
+        </c:forEach>
+    </c:when>
+
+    <c:otherwise>
+        <p><fmt:message key="ShowPortletApps.noPortletsFound"/></p>
+    </c:otherwise>
+        
+    </c:choose>
+    
+    <h2><fmt:message key="ShowUpload.upload"/></h2>
+
+    <form action="<c:url value="/DeployApp"/>"
+          enctype="multipart/form-data" method="post">
+              
+        <fmt:message key="ShowUpload.selectWar"/>:
+        <input type="file" name="fileupload"/>
+        <p>
+            <input type="submit" value="<fmt:message key='ShowUpload.submit'/>"/>
+        </p>
+    </form>
+    
+    </body>
+</html>

Added: portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadFail.jsp
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadFail.jsp?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadFail.jsp (added)
+++ portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadFail.jsp Wed Dec 20 09:17:16 2006
@@ -0,0 +1,34 @@
+<%--
+Copyright 2003-2006 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.
+--%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
+<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title><fmt:message key="UploadFail.pageTitle"/></title>
+    </head>
+    <body>
+
+    <h1><fmt:message key="UploadFail.mainTitle"/></h1>
+    <p><fmt:message key="UploadFail.message"/></p>
+    
+    </body>
+</html>
\ No newline at end of file

Added: portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadSuccess.jsp
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadSuccess.jsp?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadSuccess.jsp (added)
+++ portals/wsrp4j/trunk/producer/src/webapp/jsp/configapp/UploadSuccess.jsp Wed Dec 20 09:17:16 2006
@@ -0,0 +1,40 @@
+<%--
+Copyright 2003-2006 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.
+--%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
+<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title><fmt:message key="UploadSuccess.pageTitle"/></title>
+    </head>
+    <body>
+
+    <h1><fmt:message key="UploadSuccess.mainTitle"/></h1>
+    <p><fmt:message key="UploadSuccess.message"/></p>
+    
+    <p>
+        <a href="<c:url value="/jsp/index.jsp"/>">
+            <fmt:message key="UploadSuccess.indexLink"/>
+        </a>
+    </p>
+    
+    </body>
+</html>
\ No newline at end of file

Added: portals/wsrp4j/trunk/producer/src/webapp/jsp/index.jsp
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/producer/src/webapp/jsp/index.jsp?view=auto&rev=489147
==============================================================================
--- portals/wsrp4j/trunk/producer/src/webapp/jsp/index.jsp (added)
+++ portals/wsrp4j/trunk/producer/src/webapp/jsp/index.jsp Wed Dec 20 09:17:16 2006
@@ -0,0 +1,64 @@
+<%--
+Copyright 2003-2006 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.
+--%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
+<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title><fmt:message key="MainPage.pageTitle"/></title>
+    </head>
+    <body>
+
+    <h1><fmt:message key="MainPage.mainTitle"/></h1>
+    
+    <p><fmt:message key="MainPage.message"/></p>
+    
+    <p>
+        <h2><fmt:message key="MainPage.bugTitle"/></h2>
+        <div><fmt:message key="MainPage.bugMessage"/></div>
+    </p>
+    
+    <c:url var="producerLink" value="/services/WSRPServiceDescriptionService">
+        <c:param name="method" value="getServiceDescription"/>
+    </c:url>
+    <p>
+        <a href="<c:out value="${producerLink}" escapeXml="false"/>">
+            <fmt:message key="MainPage.producerLink"/>
+        </a>
+    </p>
+    
+    <p>
+        <a href="<c:url value="/WSRP4JProducer"/>">
+            <fmt:message key="MainPage.servicesLink"/>
+        </a>
+    </p>
+    
+    <c:url var="confLink" value="/DeployApp">
+        <c:param name="action" value="showPortlets"/>
+    </c:url>
+    <p>
+        <a href="<c:out value="${confLink}" escapeXml="false"/>">
+            <fmt:message key="MainPage.confLink"/>
+        </a>
+    </p>
+    
+    </body>
+</html>
\ No newline at end of file