You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2007/02/09 06:38:39 UTC

svn commit: r505189 - in /webservices/axis2/trunk/java/modules/kernel: src/org/apache/axis2/context/ src/org/apache/axis2/deployment/ src/org/apache/axis2/deployment/repository/util/ src/org/apache/axis2/deployment/util/ src/org/apache/axis2/engine/ te...

Author: deepal
Date: Thu Feb  8 21:38:38 2007
New Revision: 505189

URL: http://svn.apache.org/viewvc?view=rev&rev=505189
Log:
hmm , adding the code that I mentioned in the 

http://marc.theaimsgroup.com/?l=axis-dev&m=117099886501476&w=2

Added:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/Deployer.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java   (contents, props changed)
      - copied, changed from r504800, webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java
Removed:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java
Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java Thu Feb  8 21:38:38 2007
@@ -261,7 +261,7 @@
         InputStream in = cl.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
 
         AxisConfiguration axisConfig = new AxisConfiguration();
-        AxisConfigBuilder builder = new AxisConfigBuilder(in, axisConfig);
+        AxisConfigBuilder builder = new AxisConfigBuilder(in, axisConfig,null);
         builder.populateConfig();
         axisConfig.validateSystemPredefinedPhases();
         ConfigurationContext configContext = new ConfigurationContext(axisConfig);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/AxisConfigBuilder.java Thu Feb  8 21:38:38 2007
@@ -32,8 +32,8 @@
 import org.apache.axis2.transport.MessageFormatter;
 import org.apache.axis2.transport.TransportListener;
 import org.apache.axis2.transport.TransportSender;
-import org.apache.axis2.util.TargetResolver;
 import org.apache.axis2.util.Loader;
+import org.apache.axis2.util.TargetResolver;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -50,10 +50,13 @@
 public class AxisConfigBuilder extends DescriptionBuilder {
 
     protected static final Log log = LogFactory.getLog(AxisConfigBuilder.class);
+    private DeploymentEngine deploymentEngine;
 
     public AxisConfigBuilder(InputStream serviceInputStream,
-                             AxisConfiguration axisConfiguration) {
+                             AxisConfiguration axisConfiguration,
+                             DeploymentEngine deploymentEngine) {
         super(serviceInputStream, axisConfiguration);
+        this.deploymentEngine = deploymentEngine;
     }
 
     public void populateConfig() throws DeploymentException {
@@ -135,7 +138,7 @@
             if (defaultModuleVerionElement != null) {
                 processDefaultModuleVersions(defaultModuleVerionElement);
             }
-            
+
             // process MessageBuilders
             OMElement messageBuildersElement = config_element.getFirstChildWithName(new QName(TAG_MESSAGE_BUILDERS));
             if (messageBuildersElement != null) {
@@ -146,7 +149,7 @@
                     axisConfig.addMessageBuilder(key, (Class) builderSelector.get(key));
                 }
             }
-            
+
             // process MessageFormatters
             OMElement messageFormattersElement = config_element.getFirstChildWithName(new QName(TAG_MESSAGE_FORMATTERS));
             if (messageFormattersElement != null) {
@@ -157,7 +160,11 @@
                     axisConfig.addMessageFormatter(key, (MessageFormatter) messageFormatters.get(key));
                 }
             }
-
+            //Processing deployers.
+            Iterator deployerItr = config_element.getChildrenWithName(new QName(DEPLOYER));
+            if(deployerItr!=null){
+                processDeployers(deployerItr);
+            }
         } catch (XMLStreamException e) {
             throw new DeploymentException(e);
         }
@@ -183,6 +190,41 @@
         }
     }
 
+    private void processDeployers(Iterator deployerItr) {
+        HashMap directoryToExtensionMappingMap = new HashMap();
+        HashMap extensioToDeployerMappingMap = new HashMap();
+        while (deployerItr.hasNext()) {
+            OMElement element = (OMElement) deployerItr.next();
+            String directory = element.getAttributeValue(new QName(DIRECTORY));
+            if(directory!=null){
+                String extension = element.getAttributeValue(new QName(EXTENSION));
+                if(extension!=null){
+                    try {
+                        String deployerValue = element.getAttributeValue(new QName(TAG_CLASS_NAME));
+                        Class deployerClass;
+                        deployerClass = Loader.loadClass(deployerValue);
+                        Deployer deployer =
+                                (Deployer) deployerClass.newInstance();
+                        deployer.setDirctory(directory);
+                        deployer.setExtension(extension);
+                        directoryToExtensionMappingMap.put(directory, extension);
+                        extensioToDeployerMappingMap.put(extension,deployer);
+                    } catch (ClassNotFoundException e) {
+                        log.error(e);
+                    } catch (InstantiationException e) {
+                        log.error(e);
+                    } catch (IllegalAccessException e) {
+                        log.error(e);
+                    }
+                }
+            }
+        }
+        if(deploymentEngine!=null){
+            deploymentEngine.setDirectoryToExtensionMappingMap(directoryToExtensionMappingMap);
+            deploymentEngine.setExtensioToDeployerMappingMap(extensioToDeployerMappingMap);
+        }
+    }
+
     protected void processModuleConfig(Iterator moduleConfigs, ParameterInclude parent,
                                        AxisConfiguration config)
             throws DeploymentException {
@@ -238,13 +280,13 @@
 
                 Class observerclass;
                 try {
-                  observerclass = (Class) org.apache.axis2.java.security.AccessController.doPrivileged(new PrivilegedExceptionAction() {
-                    public Object run() throws ClassNotFoundException {
-                      return Loader.loadClass(clasName);      
-                    }
-                  });  
+                    observerclass = (Class) org.apache.axis2.java.security.AccessController.doPrivileged(new PrivilegedExceptionAction() {
+                        public Object run() throws ClassNotFoundException {
+                            return Loader.loadClass(clasName);
+                        }
+                    });
                 } catch (PrivilegedActionException e) {
-                  throw (ClassNotFoundException)e.getException();
+                    throw (ClassNotFoundException) e.getException();
                 }
                 observer = (AxisObserver) observerclass.newInstance();
                 // processing Parameters
@@ -363,7 +405,7 @@
                     try {
                         String clasName = trsClas.getAttributeValue();
                         Class receiverClass;
-                        receiverClass = Loader.loadClass(clasName); 
+                        receiverClass = Loader.loadClass(clasName);
 
                         TransportListener receiver =
                                 (TransportListener) receiverClass.newInstance();

Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/Deployer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/Deployer.java?view=auto&rev=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/Deployer.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/Deployer.java Thu Feb  8 21:38:38 2007
@@ -0,0 +1,37 @@
+package org.apache.axis2.deployment;
+
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.context.ConfigurationContext;
+
+/*
+* Copyright 2004,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.
+*
+*
+*/
+/**
+ * This interface is used to provide the custom deployment mechanism , where you
+ * can write your owm Deployer to process a particular type and make that to
+ * a service or a module.
+ */
+public interface Deployer {
+    //To initialize the deployer
+    void init(ConfigurationContext configCtx);
+
+    //Will process the file and add that to axisConfig
+    void deploy(DeploymentFileData deploymentFileData);
+    void setDirctory(String directory);
+    void setExtension(String extension);
+}

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentConstants.java Thu Feb  8 21:38:38 2007
@@ -31,9 +31,9 @@
     public static String MODULE_PATH = "modules";
     public static String MODULE_DRI_PATH = "ModulesDirectory";
 
-    int TYPE_SERVICE = 0;                // is it a service
-    int TYPE_DEFAULT = -1;                // is it a service
-    int TYPE_MODULE = 1;                // is it a module
+    String TYPE_SERVICE = "service";                // is it a service
+    String TYPE_DEFAULT = "none";                // is it a service
+    String TYPE_MODULE = "module";                // is it a module
 
     String TAG_AXISCONFIG = "axisconfig";
     String TAG_PHASE_ORDER = "phaseOrder";
@@ -92,6 +92,11 @@
     String TAG_BEFORE = "before";
     String TAG_SUPPORTED_POLICY_NAMESPACES = "supported-policy-namespaces";
     String TAG_NAMESPACES = "namespaces";
+
+    //Deployer related cons
+    String DIRECTORY ="directory";
+    String EXTENSION ="extension";
+    String DEPLOYER = "deployer";
 
     // for parameters
     String ATTRIBUTE_NAME = "name";

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java Thu Feb  8 21:38:38 2007
@@ -20,7 +20,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.deployment.repository.util.ArchiveFileData;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
 import org.apache.axis2.deployment.repository.util.ArchiveReader;
 import org.apache.axis2.deployment.repository.util.WSInfo;
 import org.apache.axis2.deployment.scheduler.DeploymentIterator;
@@ -64,7 +64,7 @@
     protected List wsToUnDeploy = new ArrayList();
 
     //to keep the web resource location if any
-    protected String webLocationString = null;
+    protected static String webLocationString = null;
 
     /**
      * to keep a ref to engine register
@@ -81,6 +81,18 @@
     protected File servicesDir = null;
     protected String modulesPath = null;
     protected File modulesDir = null;
+    private File repositoryDir = null;
+    //to deploy service (both aar and expanded)
+    protected ServiceDeployer serviceDeployer;
+    //To deploy modules (both mar and expanded)
+    protected ModuleDeployer moduleDeployer;
+
+    //To keep the mapping that which directory will contain which type ,
+    // for exmaple directory services will contains .aar
+    private HashMap directoryToExtensionMappingMap = new HashMap();
+    //to keep map of which deployer can process which file extension ,
+    // for example ServiceDeployer will process .aar file
+    private HashMap extensioToDeployerMappingMap = new HashMap();
 
     public void loadServices() {
         repoListener.checkServices();
@@ -146,7 +158,7 @@
                     ArrayList servicelist = populateService(serviceGroup,
                             servicesURL,
                             fileUrl.substring(0, fileUrl.indexOf(".aar")));
-                    addServiceGroup(serviceGroup, servicelist, servicesURL, null);
+                    addServiceGroup(serviceGroup, servicelist, servicesURL, null,axisConfig);
                 }
             }
         } catch (MalformedURLException e) {
@@ -182,7 +194,7 @@
                     module.setName(new QName(moduleName));
                     populateModule(module, moduleurl);
                     module.setFileName(moduleurl);
-                    addNewModule(module);
+                    addNewModule(module,axisConfig);
                 }
             }
             org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
@@ -345,7 +357,8 @@
         return axisConfig.getMessageReceiver(mepURL);
     }
 
-    protected void addNewModule(AxisModule modulemetadata) throws AxisFault {
+    public static void addNewModule(AxisModule modulemetadata ,
+                                    AxisConfiguration axisConfiguration) throws AxisFault {
 
         Flow inflow = modulemetadata.getInFlow();
         ClassLoader moduleClassLoader = modulemetadata.getModuleClassLoader();
@@ -372,19 +385,20 @@
             Utils.addFlowHandlers(faultOutFlow, moduleClassLoader);
         }
 
-        axisConfig.addModule(modulemetadata);
+        axisConfiguration.addModule(modulemetadata);
         log.debug(Messages.getMessage(DeploymentErrorMsgs.ADDING_NEW_MODULE));
     }
 
-    protected void addServiceGroup(AxisServiceGroup serviceGroup,
+    public static void addServiceGroup(AxisServiceGroup serviceGroup,
                                  ArrayList serviceList,
                                  URL serviceLocation,
-                                 ArchiveFileData currentArchiveFile)
+                                 DeploymentFileData currentDeploymentFile,
+                                 AxisConfiguration axisConfiguration)
             throws AxisFault {
-        fillServiceGroup(serviceGroup, serviceList, serviceLocation, axisConfig);
-        axisConfig.addServiceGroup(serviceGroup);
-        if (currentArchiveFile != null) {
-            addAsWebResources(currentArchiveFile.getFile(),
+        fillServiceGroup(serviceGroup, serviceList, serviceLocation, axisConfiguration);
+        axisConfiguration.addServiceGroup(serviceGroup);
+        if (currentDeploymentFile != null) {
+            addAsWebResources(currentDeploymentFile.getFile(),
                     serviceGroup.getServiceGroupName(), serviceGroup);
         }
     }
@@ -457,7 +471,9 @@
         }
     }
 
-    protected void addAsWebResources(File in, String serviceFileName, AxisServiceGroup serviceGroup) {
+    private static void addAsWebResources(File in,
+                                     String serviceFileName,
+                                     AxisServiceGroup serviceGroup) {
         try {
             if (webLocationString == null) {
                 return;
@@ -503,7 +519,7 @@
     /**
      * @param file ArchiveFileData
      */
-    public void addWSToDeploy(ArchiveFileData file) {
+    public void addWSToDeploy(DeploymentFileData file) {
         wsToDeploy.add(file);
     }
 
@@ -517,159 +533,21 @@
     public void doDeploy() {
         if (wsToDeploy.size() > 0) {
             for (int i = 0; i < wsToDeploy.size(); i++) {
-                ArchiveFileData currentArchiveFile = (ArchiveFileData) wsToDeploy.get(i);
-                boolean explodedDir = currentArchiveFile.getFile().isDirectory();
-                int type = currentArchiveFile.getType();
-                try {
-                    ArchiveReader archiveReader;
-                    StringWriter errorWriter = new StringWriter();
-                    switch (type) {
-                        case TYPE_SERVICE :
-                            currentArchiveFile.setClassLoader(explodedDir,
-                                    axisConfig.getServiceClassLoader());
-                            archiveReader = new ArchiveReader();
-                            String serviceStatus = "";
-                            try {
-                                HashMap wsdlservice = archiveReader.processWSDLs(currentArchiveFile);
-                                if (wsdlservice != null && wsdlservice.size() > 0) {
-                                    Iterator services = wsdlservice.values().iterator();
-                                    while (services.hasNext()) {
-                                        AxisService service = (AxisService) services.next();
-                                        Iterator operations = service.getOperations();
-                                        while (operations.hasNext()) {
-                                            AxisOperation axisOperation = (AxisOperation) operations.next();
-                                            axisConfig.getPhasesInfo().setOperationPhases(axisOperation);
-                                        }
-                                    }
-                                }
-                                AxisServiceGroup sericeGroup = new AxisServiceGroup(axisConfig);
-                                sericeGroup.setServiceGroupClassLoader(
-                                        currentArchiveFile.getClassLoader());
-                                ArrayList serviceList = archiveReader.processServiceGroup(
-                                        currentArchiveFile.getAbsolutePath(), currentArchiveFile,
-                                        sericeGroup, explodedDir, wsdlservice,
-                                        configContext);
-                                addServiceGroup(sericeGroup, serviceList, currentArchiveFile.getFile().toURL(), currentArchiveFile);
-                                log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_WS,
-                                        currentArchiveFile.getName()));
-                            } catch (DeploymentException de) {
-                                de.printStackTrace();
-                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
-                                        currentArchiveFile.getName(),
-                                        de.getMessage()),
-                                        de);
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                de.printStackTrace(error_ptintWriter);
-                                serviceStatus = "Error:\n" + errorWriter.toString();
-                            } catch (AxisFault axisFault) {
-                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
-                                        currentArchiveFile.getName(),
-                                        axisFault.getMessage()),
-                                        axisFault);
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                axisFault.printStackTrace(error_ptintWriter);
-                                serviceStatus = "Error:\n" + errorWriter.toString();
-                            } catch (Exception e) {
-                                if (log.isInfoEnabled()) {
-                                    StringWriter sw = new StringWriter();
-                                    PrintWriter pw = new PrintWriter(sw);
-                                    e.printStackTrace(pw);
-                                    log.info(Messages.getMessage(
-                                            DeploymentErrorMsgs.INVALID_SERVICE,
-                                            currentArchiveFile.getName(),
-                                            sw.getBuffer().toString()));
-                                }
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                e.printStackTrace(error_ptintWriter);
-                                serviceStatus = "Error:\n" + errorWriter.toString();
-                            } catch (Throwable t) {
-                                if (log.isInfoEnabled()) {
-                                    StringWriter sw = new StringWriter();
-                                    PrintWriter pw = new PrintWriter(sw);
-                                    t.printStackTrace(pw);
-                                    log.info(Messages.getMessage(
-                                            DeploymentErrorMsgs.INVALID_SERVICE,
-                                            currentArchiveFile.getName(),
-                                            sw.getBuffer().toString()));
-                                }
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                t.printStackTrace(error_ptintWriter);
-                                serviceStatus = "Error:\n" + errorWriter.toString();
-                            } finally {
-                                if (serviceStatus.startsWith("Error:")) {
-                                    axisConfig.getFaultyServices().put(currentArchiveFile.getFile().getAbsolutePath(),
-                                            serviceStatus);
-                                }
-                            }
-                            break;
-                        case TYPE_MODULE :
-                            currentArchiveFile.setClassLoader(explodedDir,
-                                    axisConfig.getModuleClassLoader());
-                            archiveReader = new ArchiveReader();
-                            String moduleStatus = "";
-                            try {
-                                AxisModule metaData = new AxisModule();
-                                metaData.setModuleClassLoader(currentArchiveFile.getClassLoader());
-                                metaData.setParent(axisConfig);
-                                archiveReader.readModuleArchive(currentArchiveFile, metaData, explodedDir,
-                                        axisConfig);
-                                metaData.setFileName(currentArchiveFile.getFile().toURL());
-                                addNewModule(metaData);
-                                log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_MODULE,
-                                        metaData.getName().getLocalPart()));
-                            } catch (DeploymentException e) {
-                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
-                                        currentArchiveFile.getName(),
-                                        e.getMessage()),
-                                        e);
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                e.printStackTrace(error_ptintWriter);
-                                moduleStatus = "Error:\n" + errorWriter.toString();
-                            } catch (AxisFault axisFault) {
-                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
-                                        currentArchiveFile.getName(),
-                                        axisFault.getMessage()),
-                                        axisFault);
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                axisFault.printStackTrace(error_ptintWriter);
-                                moduleStatus = "Error:\n" + errorWriter.toString();
-                            } catch (MalformedURLException e) {
-                                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
-                                        currentArchiveFile.getName(),
-                                        e.getMessage()),
-                                        e);
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                e.printStackTrace(error_ptintWriter);
-                                moduleStatus = "Error:\n" + errorWriter.toString();
-                            } catch (Throwable t) {
-                                if (log.isInfoEnabled()) {
-                                    StringWriter sw = new StringWriter();
-                                    PrintWriter pw = new PrintWriter(sw);
-                                    t.printStackTrace(pw);
-                                    log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
-                                            currentArchiveFile.getName(),
-                                            t.getMessage()),
-                                            t);
-                                }
-                                PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
-                                t.printStackTrace(error_ptintWriter);
-                                moduleStatus = "Error:\n" + errorWriter.toString();
-                            } finally {
-                                if (moduleStatus.startsWith("Error:")) {
-                                    axisConfig.getFaultyModules().put(
-                                            getAxisServiceName(currentArchiveFile.getName()), moduleStatus);
-                                }
-                            }
-                            break;
+                DeploymentFileData currentDeploymentFile = (DeploymentFileData) wsToDeploy.get(i);
+                String type = currentDeploymentFile.getType();
+                if(TYPE_SERVICE.equals(type)){
+                    serviceDeployer.deploy(currentDeploymentFile);
+                } else if (TYPE_MODULE.equals(type)){
+                    moduleDeployer.deploy(currentDeploymentFile);
+                } else{
+                    Deployer deployer = (Deployer) extensioToDeployerMappingMap.get(type);
+                    if(deployer!=null){
+                        deployer.deploy(currentDeploymentFile);
                     }
-                } catch (AxisFault axisFault) {
-                    log.info(Messages.getMessage(DeploymentErrorMsgs.ERROR_SETTING_CLIENT_HOME,
-                            axisFault.getMessage()),
-                            axisFault);
                 }
+
             }
         }
-
         wsToDeploy.clear();
     }
 
@@ -705,7 +583,7 @@
      */
     public AxisConfiguration populateAxisConfiguration(InputStream in) throws DeploymentException {
         axisConfig = new AxisConfiguration();
-        AxisConfigBuilder builder = new AxisConfigBuilder(in, axisConfig);
+        AxisConfigBuilder builder = new AxisConfigBuilder(in, axisConfig,this);
         builder.populateConfig();
         try {
             if (in != null) {
@@ -714,6 +592,7 @@
         } catch (IOException e) {
             log.info("error in closing input stream");
         }
+        moduleDeployer = new ModuleDeployer(axisConfig);
         return axisConfig;
     }
 
@@ -733,7 +612,7 @@
             if (wsToUnDeploy.size() > 0) {
                 for (int i = 0; i < wsToUnDeploy.size(); i++) {
                     WSInfo wsInfo = (WSInfo) wsToUnDeploy.get(i);
-                    if (wsInfo.getType() == TYPE_SERVICE) {
+                    if (TYPE_SERVICE.equals(wsInfo.getType())) {
                         if (isHotUpdate()) {
                             try {
                                 fileName = getAxisServiceName(wsInfo.getFileName());
@@ -772,7 +651,7 @@
      * @param fileName
      * @return Returns String.
      */
-    protected String getAxisServiceName(String fileName) {
+    public static String getAxisServiceName(String fileName) {
         char seperator = '.';
         String value;
         int index = fileName.indexOf(seperator);
@@ -890,28 +769,28 @@
      */
 
     protected void prepareRepository(String repositoryName) {
-        File repository = new File(repositoryName);
+        repositoryDir = new File(repositoryName);
         if (servicesPath != null) {
             servicesDir = new File(servicesPath);
             if (!servicesDir.exists()) {
-                servicesDir = new File(repository, servicesPath);
+                servicesDir = new File(repositoryDir, servicesPath);
             }
         } else {
-            servicesDir = new File(repository, DeploymentConstants.SERVICE_PATH);
+            servicesDir = new File(repositoryDir, DeploymentConstants.SERVICE_PATH);
         }
         if (!servicesDir.exists()) {
-            log.info(Messages.getMessage("noservicedirfound", getRepositoryPath(repository)));
+            log.info(Messages.getMessage("noservicedirfound", getRepositoryPath(repositoryDir)));
         }
         if (modulesPath != null) {
             modulesDir = new File(modulesPath);
             if (!modulesDir.exists()) {
-                modulesDir = new File(repository, modulesPath);
+                modulesDir = new File(repositoryDir, modulesPath);
             }
         } else {
-            modulesDir = new File(repository, DeploymentConstants.MODULE_PATH);
+            modulesDir = new File(repositoryDir, DeploymentConstants.MODULE_PATH);
         }
         if (!modulesDir.exists()) {
-            log.info(Messages.getMessage("nomoduledirfound", getRepositoryPath(repository)));
+            log.info(Messages.getMessage("nomoduledirfound", getRepositoryPath(repositoryDir)));
         }
     }
 
@@ -966,6 +845,17 @@
 
     public void setConfigContext(ConfigurationContext configContext) {
         this.configContext = configContext;
+        initializeDeployers(this.configContext);
+    }
+
+    private void initializeDeployers(ConfigurationContext configContext){
+        serviceDeployer = new ServiceDeployer();
+        serviceDeployer.init(configContext);
+        Iterator deployers = extensioToDeployerMappingMap.values().iterator();
+        while (deployers.hasNext()) {
+            Deployer deployer = (Deployer) deployers.next();
+            deployer.init(configContext);
+        }
     }
 
     /**
@@ -984,14 +874,14 @@
             throws DeploymentException {
         AxisModule axismodule;
         try {
-            ArchiveFileData currentArchiveFile = new ArchiveFileData(modulearchive,
+            DeploymentFileData currentDeploymentFile = new DeploymentFileData(modulearchive,
                     DeploymentConstants.TYPE_MODULE, false);
             axismodule = new AxisModule();
             ArchiveReader archiveReader = new ArchiveReader();
 
-            currentArchiveFile.setClassLoader(false, config.getModuleClassLoader());
-            axismodule.setModuleClassLoader(currentArchiveFile.getClassLoader());
-            archiveReader.readModuleArchive(currentArchiveFile, axismodule,
+            currentDeploymentFile.setClassLoader(false, config.getModuleClassLoader());
+            axismodule.setModuleClassLoader(currentDeploymentFile.getClassLoader());
+            archiveReader.readModuleArchive(currentDeploymentFile, axismodule,
                     false, config);
             ClassLoader moduleClassLoader = axismodule.getModuleClassLoader();
             Flow inflow = axismodule.getInFlow();
@@ -1051,9 +941,9 @@
                     antiJARLocking = false;
                 }
             }
-            ArchiveFileData currentArchiveFile = new ArchiveFileData(
+            DeploymentFileData currentDeploymentFile = new DeploymentFileData(
                     DeploymentConstants.TYPE_SERVICE, "", antiJARLocking);
-            currentArchiveFile.setClassLoader(classLoader);
+            currentDeploymentFile.setClassLoader(classLoader);
 
             ServiceBuilder builder = new ServiceBuilder(serviceInputStream, configCtx,
                     axisService);
@@ -1083,16 +973,16 @@
                                                      ConfigurationContext configCtx,
                                                      ArchiveReader archiveReader,
                                                      HashMap wsdlServices) throws AxisFault {
-        ArchiveFileData currentArchiveFile = new ArchiveFileData(
+        DeploymentFileData currentDeploymentFile = new DeploymentFileData(
                 DeploymentConstants.TYPE_SERVICE, "", false);
-        currentArchiveFile.setClassLoader(classLoader);
+        currentDeploymentFile.setClassLoader(classLoader);
         AxisServiceGroup serviceGroup = new AxisServiceGroup();
         serviceGroup.setServiceGroupClassLoader(classLoader);
         serviceGroup.setServiceGroupName(serviceGroupName);
         AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
         try {
             ArrayList serviceList = archiveReader.buildServiceGroup(servicesxml,
-                    currentArchiveFile, serviceGroup,
+                    currentDeploymentFile, serviceGroup,
                     wsdlServices, configCtx);
             fillServiceGroup(serviceGroup, serviceList, null, axisConfig);
             return serviceGroup;
@@ -1107,5 +997,23 @@
 
     public File getModulesDir() {
         return modulesDir;
+    }
+
+
+    public File getRepositoryDir() {
+        return repositoryDir;
+    }
+
+    public void setExtensioToDeployerMappingMap(HashMap extensioToDeployerMappingMap) {
+        this.extensioToDeployerMappingMap = extensioToDeployerMappingMap;
+    }
+
+    public void setDirectoryToExtensionMappingMap(HashMap directoryToExtensionMappingMap) {
+        this.directoryToExtensionMappingMap = directoryToExtensionMappingMap;
+    }
+
+
+    public HashMap getDirectoryToExtensionMappingMap() {
+        return directoryToExtensionMappingMap;
     }
 }

Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java?view=auto&rev=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java Thu Feb  8 21:38:38 2007
@@ -0,0 +1,118 @@
+package org.apache.axis2.deployment;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.repository.util.ArchiveReader;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.MalformedURLException;
+
+/*
+* Copyright 2004,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.
+*
+*
+*/
+public class ModuleDeployer implements Deployer {
+
+    private static final Log log = LogFactory.getLog(ModuleDeployer.class);
+    private AxisConfiguration axisConfig;
+
+
+    public ModuleDeployer() {
+    }
+
+    public ModuleDeployer(AxisConfiguration axisConfig) {
+        this.axisConfig = axisConfig;
+    }
+
+    //To initialize the deployer
+    public void init(ConfigurationContext configCtx) {
+        this.axisConfig = configCtx.getAxisConfiguration();
+    }
+    //Will process the file and add that to axisConfig
+
+    public void deploy(DeploymentFileData deploymentFileData) {
+        ArchiveReader archiveReader = new ArchiveReader();
+        String moduleStatus = "";
+        StringWriter errorWriter = new StringWriter();
+        boolean explodedDir = deploymentFileData.getFile().isDirectory();
+        try {
+            deploymentFileData.setClassLoader(explodedDir,
+                    axisConfig.getModuleClassLoader());
+            AxisModule metaData = new AxisModule();
+            metaData.setModuleClassLoader(deploymentFileData.getClassLoader());
+            metaData.setParent(axisConfig);
+            archiveReader.readModuleArchive(deploymentFileData, metaData, explodedDir,
+                    axisConfig);
+            metaData.setFileName(deploymentFileData.getFile().toURL());
+            DeploymentEngine.addNewModule(metaData, axisConfig);
+            log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_MODULE,
+                    metaData.getName().getLocalPart()));
+        } catch (DeploymentException e) {
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                    deploymentFileData.getName(),
+                    e.getMessage()),
+                    e);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            e.printStackTrace(error_ptintWriter);
+            moduleStatus = "Error:\n" + errorWriter.toString();
+        } catch (AxisFault axisFault) {
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                    deploymentFileData.getName(),
+                    axisFault.getMessage()),
+                    axisFault);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            axisFault.printStackTrace(error_ptintWriter);
+            moduleStatus = "Error:\n" + errorWriter.toString();
+        } catch (MalformedURLException e) {
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                    deploymentFileData.getName(),
+                    e.getMessage()),
+                    e);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            e.printStackTrace(error_ptintWriter);
+            moduleStatus = "Error:\n" + errorWriter.toString();
+        } catch (Throwable t) {
+            if (log.isInfoEnabled()) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                t.printStackTrace(pw);
+                log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
+                        deploymentFileData.getName(),
+                        t.getMessage()),
+                        t);
+            }
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            t.printStackTrace(error_ptintWriter);
+            moduleStatus = "Error:\n" + errorWriter.toString();
+        } finally {
+            if (moduleStatus.startsWith("Error:")) {
+                axisConfig.getFaultyModules().put(DeploymentEngine.getAxisServiceName(
+                        deploymentFileData.getName()), moduleStatus);
+            }
+        }
+    }
+
+    public void setDirctory(String directory) {}
+
+    public void setExtension(String extension) {}
+}

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/RepositoryListener.java Thu Feb  8 21:38:38 2007
@@ -17,7 +17,7 @@
 
 package org.apache.axis2.deployment;
 
-import org.apache.axis2.deployment.repository.util.ArchiveFileData;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
 import org.apache.axis2.deployment.repository.util.WSInfoList;
 import org.apache.axis2.util.Loader;
 
@@ -25,9 +25,13 @@
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.Iterator;
 
 public class RepositoryListener implements DeploymentConstants {
+
     protected DeploymentEngine deploymentEngine;
+    private HashMap directoryToExtensionMappingMap;
 
     /**
      * The parent directory of the modules and services directories
@@ -70,7 +74,7 @@
                     continue;
                 }
                 if (!file.isDirectory()) {
-                    if (ArchiveFileData.isModuleArchiveFile(file.getName())) {
+                    if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
                         wsInfoList.addWSInfoItem(file, TYPE_MODULE);
                     }
                 } else {
@@ -107,7 +111,7 @@
             for (int i = 0; i < files.length; i++) {
                 File file = files[i];
                 if (!file.isDirectory()) {
-                    if (ArchiveFileData.isModuleArchiveFile(file.getName())) {
+                    if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
                         //adding modules in the class path
                         wsInfoList.addWSInfoItem(file, TYPE_MODULE);
                     }
@@ -127,7 +131,7 @@
                     java.io.File file = new java.io.File(URLDecoder.decode(urls[i].getPath()).replace('/',
                             File.separatorChar).replace('|', ':'));
                     if (file.isFile()) {
-                        if (ArchiveFileData.isModuleArchiveFile(file.getName())) {
+                        if (DeploymentFileData.isModuleArchiveFile(file.getName())) {
                             //adding modules in the class path
                             wsInfoList.addWSInfoItem(file, TYPE_MODULE);
                         }
@@ -171,6 +175,7 @@
      */
     public void checkServices() {
         findServicesInDirectory();
+        loadOtherDirectories();
         update();
     }
 
@@ -181,9 +186,45 @@
     public void init() {
         wsInfoList.init();
         checkModules();
+        directoryToExtensionMappingMap = deploymentEngine.getDirectoryToExtensionMappingMap();
         deploymentEngine.doDeploy();
     }
 
+    //This will load the files from the directories
+    // specified by axis2.xml (As <deployer>)
+    private void loadOtherDirectories(){
+       if(directoryToExtensionMappingMap.size()>0){
+          Iterator keys = directoryToExtensionMappingMap.keySet().iterator();
+           while (keys.hasNext()) {
+               String s = (String) keys.next();
+               findFileForGiveDirectory(s,(String)directoryToExtensionMappingMap.get(s));
+           }
+       }
+    }
+
+    private void findFileForGiveDirectory(String dir , String extension){
+        try {
+            File fileTobeSearch = new File(deploymentEngine.getRepositoryDir(),dir);
+            if(fileTobeSearch.exists()){
+                File[] files = fileTobeSearch.listFiles();
+                if (files != null && files.length > 0) {
+                    for (int i = 0; i < files.length; i++) {
+                        File file = files[i];
+                        if (isSourceControlDir(file)) {
+                            continue;
+                        }
+                        if (!file.isDirectory()&&DeploymentFileData.getFileExtension(
+                                file.getName()).equals(extension)) {
+                            wsInfoList.addWSInfoItem(file,extension);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            //need to log the exception
+        }
+    }
+
     /**
      * Searches a given folder for jar files and adds them to a list in the
      * WSInfolist class.
@@ -199,7 +240,7 @@
                     continue;
                 }
                 if (!file.isDirectory()) {
-                    if (ArchiveFileData.isServiceArchiveFile(file.getName())) {
+                    if (DeploymentFileData.isServiceArchiveFile(file.getName())) {
                         wsInfoList.addWSInfoItem(file, TYPE_SERVICE);
                     }
                 } else {
@@ -217,6 +258,7 @@
      */
     public void startListener() {
         checkServices();
+        loadOtherDirectories();
         update();
     }
 

Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java?view=auto&rev=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java Thu Feb  8 21:38:38 2007
@@ -0,0 +1,142 @@
+package org.apache.axis2.deployment;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.repository.util.ArchiveReader;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+/*
+* Copyright 2004,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.
+*
+*
+*/
+public class ServiceDeployer implements Deployer {
+    private static final Log log = LogFactory.getLog(ServiceDeployer.class);
+    private AxisConfiguration axisConfig;
+    private ConfigurationContext configCtx;
+
+    //To initialize the deployer
+    public void init(ConfigurationContext configCtx) {
+        this.configCtx = configCtx;
+        this.axisConfig = this.configCtx.getAxisConfiguration();
+    }
+
+    //Will process the file and add that to axisConfig
+
+    public void deploy(DeploymentFileData deploymentFileData) {
+        boolean explodedDir = deploymentFileData.getFile().isDirectory();
+        ArchiveReader archiveReader;
+        StringWriter errorWriter = new StringWriter();
+        archiveReader = new ArchiveReader();
+        String serviceStatus = "";
+        try {
+            deploymentFileData.setClassLoader(explodedDir,
+                    axisConfig.getServiceClassLoader());
+            HashMap wsdlservice = archiveReader.processWSDLs(deploymentFileData);
+            if (wsdlservice != null && wsdlservice.size() > 0) {
+                Iterator services = wsdlservice.values().iterator();
+                while (services.hasNext()) {
+                    AxisService service = (AxisService) services.next();
+                    Iterator operations = service.getOperations();
+                    while (operations.hasNext()) {
+                        AxisOperation axisOperation = (AxisOperation) operations.next();
+                        axisConfig.getPhasesInfo().setOperationPhases(axisOperation);
+                    }
+                }
+            }
+            AxisServiceGroup sericeGroup = new AxisServiceGroup(axisConfig);
+            sericeGroup.setServiceGroupClassLoader(
+                    deploymentFileData.getClassLoader());
+            ArrayList serviceList = archiveReader.processServiceGroup(
+                    deploymentFileData.getAbsolutePath(), deploymentFileData,
+                    sericeGroup, explodedDir, wsdlservice,
+                    configCtx);
+            DeploymentEngine.addServiceGroup(sericeGroup,
+                    serviceList,
+                    deploymentFileData.getFile().toURL(),
+                    deploymentFileData,
+                    axisConfig);
+            log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_WS,
+                    deploymentFileData.getName()));
+        } catch (DeploymentException de) {
+            de.printStackTrace();
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
+                    deploymentFileData.getName(),
+                    de.getMessage()),
+                    de);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            de.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+        } catch (AxisFault axisFault) {
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
+                    deploymentFileData.getName(),
+                    axisFault.getMessage()),
+                    axisFault);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            axisFault.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+        } catch (Exception e) {
+            if (log.isInfoEnabled()) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                e.printStackTrace(pw);
+                log.info(Messages.getMessage(
+                        DeploymentErrorMsgs.INVALID_SERVICE,
+                        deploymentFileData.getName(),
+                        sw.getBuffer().toString()));
+            }
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            e.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+        } catch (Throwable t) {
+            if (log.isInfoEnabled()) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                t.printStackTrace(pw);
+                log.info(Messages.getMessage(
+                        DeploymentErrorMsgs.INVALID_SERVICE,
+                        deploymentFileData.getName(),
+                        sw.getBuffer().toString()));
+            }
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            t.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+        } finally {
+            if (serviceStatus.startsWith("Error:")) {
+                axisConfig.getFaultyServices().put(deploymentFileData.getFile().getAbsolutePath(),
+                        serviceStatus);
+            }
+        }
+    }
+
+    public void setDirctory(String directory) {
+    }
+
+    public void setExtension(String extension) {
+    }
+}

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java Thu Feb  8 21:38:38 2007
@@ -63,7 +63,7 @@
 public class ArchiveReader implements DeploymentConstants {
     private static final Log log = LogFactory.getLog(ArchiveReader.class);
 
-    public ArrayList buildServiceGroup(InputStream zin, ArchiveFileData currentFile,
+    public ArrayList buildServiceGroup(InputStream zin, DeploymentFileData currentFile,
                                        AxisServiceGroup axisServiceGroup, HashMap wsdlServices,
                                        ConfigurationContext configCtx)
             throws XMLStreamException, AxisFault {
@@ -117,7 +117,7 @@
      * @return Returns ArrayList.
      * @throws DeploymentException
      */
-    public ArrayList processServiceGroup(String filename, ArchiveFileData currentFile,
+    public ArrayList processServiceGroup(String filename, DeploymentFileData currentFile,
                                          AxisServiceGroup axisServiceGroup,
                                          boolean extractService,
                                          HashMap wsdls,
@@ -237,7 +237,7 @@
      * @param file <code>ArchiveFileData</code>
      * @throws DeploymentException <code>DeploymentException</code>
      */
-    public HashMap processWSDLs(ArchiveFileData file)
+    public HashMap processWSDLs(DeploymentFileData file)
             throws DeploymentException {
         File serviceFile = file.getFile();
         // to store service come from wsdl files
@@ -419,7 +419,7 @@
         }
     }
 
-    public void readModuleArchive(ArchiveFileData archiveFile,
+    public void readModuleArchive(DeploymentFileData deploymentFile,
                                   AxisModule module, boolean explodedDir,
                                   AxisConfiguration axisConfig)
             throws DeploymentException {
@@ -430,7 +430,7 @@
             ZipInputStream zin;
             FileInputStream fin;
             try {
-                fin = new FileInputStream(archiveFile.getAbsolutePath());
+                fin = new FileInputStream(deploymentFile.getAbsolutePath());
                 zin = new ZipInputStream(fin);
                 ZipEntry entry;
                 while ((entry = zin.getNextEntry()) != null) {
@@ -441,7 +441,7 @@
                         module.setName(
                                 new QName(
                                         DescriptionBuilder.getShortFileName(
-                                                archiveFile.getServiceName())));
+                                                deploymentFile.getServiceName())));
                         builder.populateModule();
                         break;
                     }
@@ -451,15 +451,15 @@
                 if (!moduleXMLFound) {
                     throw new DeploymentException(
                             Messages.getMessage(
-                                    DeploymentErrorMsgs.MODULE_XML_MISSING, archiveFile.getAbsolutePath()));
+                                    DeploymentErrorMsgs.MODULE_XML_MISSING, deploymentFile.getAbsolutePath()));
                 }
             } catch (Exception e) {
                 throw new DeploymentException(e);
             }
         } else {
-            File file = new File(archiveFile.getAbsolutePath(), MODULE_XML);
+            File file = new File(deploymentFile.getAbsolutePath(), MODULE_XML);
 
-            if (file.exists() || (file = new File(archiveFile.getAbsolutePath(), MODULE_XML.toLowerCase())).exists()) {
+            if (file.exists() || (file = new File(deploymentFile.getAbsolutePath(), MODULE_XML.toLowerCase())).exists()) {
                 InputStream in = null;
                 try {
                     in = new FileInputStream(file);
@@ -468,7 +468,7 @@
                     module.setName(
                             new QName(
                                     DescriptionBuilder.getShortFileName(
-                                            archiveFile.getServiceName())));
+                                            deploymentFile.getServiceName())));
                     builder.populateModule();
                 } catch (FileNotFoundException e) {
                     throw new DeploymentException(
@@ -485,7 +485,7 @@
             } else {
                 throw new DeploymentException(
                         Messages.getMessage(
-                                DeploymentErrorMsgs.MODULE_XML_MISSING, archiveFile.getAbsolutePath()));
+                                DeploymentErrorMsgs.MODULE_XML_MISSING, deploymentFile.getAbsolutePath()));
             }
         }
     }

Copied: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java (from r504800, webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java?view=diff&rev=505189&p1=webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java&r1=504800&p2=webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java Thu Feb  8 21:38:38 2007
@@ -30,7 +30,7 @@
 /**
  * ArchiveFileData stores information about the module or service item to be deployed.
  */
-public class ArchiveFileData {
+public class DeploymentFileData {
     private File file = null;
     private ArrayList deployableServices = new ArrayList();
     private ClassLoader classLoader;
@@ -38,15 +38,15 @@
     private boolean lock;
 
     private String name;
-    private int type;
+    private String type;
 
-    public ArchiveFileData(File file, int type, boolean lock) {
+    public DeploymentFileData(File file, String type, boolean lock) {
         this.file = file;
         this.type = type;
         this.lock = lock;
     }
 
-    public ArchiveFileData(int type, String name, boolean lock) {
+    public DeploymentFileData(String type, String name, boolean lock) {
         this.type = type;
         this.name = name;
         this.lock = lock;
@@ -84,7 +84,7 @@
         }
     }
 
-    public int getType() {
+    public String getType() {
         return type;
     }
 
@@ -102,6 +102,10 @@
         return ((filename.endsWith(".jar")) | (filename.endsWith(".aar")));
     }
 
+    public static  String getFileExtension(String fileName){
+        int index = fileName.lastIndexOf('.');
+        return fileName.substring(index+1);
+    }
     public void setClassLoader(ClassLoader classLoader) {
         this.classLoader = classLoader;
     }

Propchange: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfo.java Thu Feb  8 21:38:38 2007
@@ -24,14 +24,14 @@
     /**
      * To check whether the file is a module or a servise
      */
-    private int type;
+    private String type;
 
     public WSInfo(String filename, long lastmodifieddate) {
         this.fileName = filename;
         this.lastModifiedDate = lastmodifieddate;
     }
 
-    public WSInfo(String filename, long lastmodifieddate, int type) {
+    public WSInfo(String filename, long lastmodifieddate, String type) {
         this.fileName = filename;
         this.lastModifiedDate = lastmodifieddate;
         this.type = type;
@@ -45,7 +45,7 @@
         return lastModifiedDate;
     }
 
-    public int getType() {
+    public String getType() {
         return type;
     }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/WSInfoList.java Thu Feb  8 21:38:38 2007
@@ -62,60 +62,62 @@
      * @param file actual jar files for either Module or service
      * @param type indicate either Service or Module
      */
-    public synchronized void addWSInfoItem(File file, int type) {
-        switch (type) {
-            case TYPE_SERVICE : {
-                if (!isFileExist(file.getName())) {    // checking whether the file is already deployed
-                    WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), TYPE_SERVICE);
-
+    public synchronized void addWSInfoItem(File file, String type) {
+        if(TYPE_SERVICE.equals(type)){
+            if (!isFileExist(file.getName())) {    // checking whether the file is already deployed
+                WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), TYPE_SERVICE);
+                jarList.add(wsInfo);
+                DeploymentFileData deploymentFileData = new DeploymentFileData(file, TYPE_SERVICE, deployer.isAntiJARLocking());
+                deployer.addWSToDeploy(deploymentFileData);    // inform that new web service is deployed
+            } else {
+                if (deployer.isHotUpdate()) {
+                    WSInfo tempWSInfo = getFileItem(file.getName());
+                    if (isModified(file, tempWSInfo)) {    // check whether file is updated
+                        tempWSInfo.setLastModifiedDate(file.lastModified());
+                        WSInfo wsInfo = new WSInfo(tempWSInfo.getFileName(),
+                                tempWSInfo.getLastModifiedDate(), TYPE_SERVICE);
+                        deployer.addWSToUndeploy(wsInfo);           // add entry to undeploy list
+                        DeploymentFileData deploymentFileData = new DeploymentFileData(file, TYPE_SERVICE, deployer.isAntiJARLocking());
+                        deployer.addWSToDeploy(deploymentFileData);    // add entry to deploylist
+                    }
+                }
+            }
+        } else if (TYPE_MODULE.equals(type)){
+            if (!isFileExist(file.getName())) {                     // checking whether the file is already deployed
+                WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), TYPE_MODULE);
+                jarList.add(wsInfo);
+                DeploymentFileData deploymentFileData = new DeploymentFileData(file, TYPE_MODULE, false);
+                deployer.addWSToDeploy(deploymentFileData);    // inform that new web service is deployed
+            }
+        } else {
+            if(file!=null){
+                String extension = DeploymentFileData.getFileExtension(file.getName());
+                if (!isFileExist(file.getName())) {
+                    WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), extension);
                     jarList.add(wsInfo);
-
-                    ArchiveFileData archiveFileData = new ArchiveFileData(file, TYPE_SERVICE, deployer.isAntiJARLocking());
-
-                    deployer.addWSToDeploy(archiveFileData);    // inform that new web service is deployed
+                    DeploymentFileData deploymentFileData = new DeploymentFileData(file, extension, deployer.isAntiJARLocking());
+                    deployer.addWSToDeploy(deploymentFileData);    // inform that new web service is deployed
                 } else {
                     if (deployer.isHotUpdate()) {
                         WSInfo tempWSInfo = getFileItem(file.getName());
                         if (isModified(file, tempWSInfo)) {    // check whether file is updated
                             tempWSInfo.setLastModifiedDate(file.lastModified());
-
                             WSInfo wsInfo = new WSInfo(tempWSInfo.getFileName(),
-                                    tempWSInfo.getLastModifiedDate(), TYPE_SERVICE);
-
+                                    tempWSInfo.getLastModifiedDate(), extension);
                             deployer.addWSToUndeploy(wsInfo);           // add entry to undeploy list
-
-                            ArchiveFileData archiveFileData = new ArchiveFileData(file, TYPE_SERVICE, deployer.isAntiJARLocking());
-
-                            deployer.addWSToDeploy(archiveFileData);    // add entry to deploylist
+                            DeploymentFileData deploymentFileData = new DeploymentFileData(file, extension, deployer.isAntiJARLocking());
+                            deployer.addWSToDeploy(deploymentFileData);    // add entry to deploylist
                         }
                     }
                 }
-
-                break;
-            }
-
-            case TYPE_MODULE : {
-                if (!isFileExist(file.getName())) {                     // checking whether the file is already deployed
-                    WSInfo wsInfo = new WSInfo(file.getName(), file.lastModified(), TYPE_MODULE);
-
-                    jarList.add(wsInfo);
-
-                    ArchiveFileData archiveFileData = new ArchiveFileData(file, TYPE_MODULE, false);
-
-                    deployer.addWSToDeploy(archiveFileData);    // inform that new web service is deployed
-                }
-
-                break;
-            }
-            default : {
+            } else {
                 check = true;
-                return;
             }
         }
-
-        String jarname = file.getName();
-
-        currentJars.add(jarname);
+        if(file!=null){
+            String jarname = file.getName();
+            currentJars.add(jarname);
+        }
         check = true;
     }
 
@@ -143,38 +145,27 @@
 
         while (iter.hasNext()) {
             WSInfo fileitem = (WSInfo) iter.next();
-
-            if (fileitem.getType() == TYPE_MODULE) {
+            if (TYPE_MODULE.equals(fileitem.getType())) {
                 continue;
             }
-
             exist = false;
-
             for (int i = 0; i < size; i++) {
                 filename = (String) currentJars.get(i);
-
                 if (filename.equals(fileitem.getFileName())) {
                     exist = true;
-
                     break;
                 }
             }
-
             if (!exist) {
                 tempvector.add(fileitem);
-
                 WSInfo wsInfo = new WSInfo(fileitem.getFileName(), fileitem.getLastModifiedDate());
-
                 deployer.addWSToUndeploy(wsInfo);    // this is to be undeployed
             }
         }
-
         for (int i = 0; i < tempvector.size(); i++) {
             WSInfo fileItem = (WSInfo) tempvector.get(i);
-
             jarList.remove(fileItem);
         }
-
         tempvector.clear();
         currentJars.clear();
     }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java Thu Feb  8 21:38:38 2007
@@ -8,7 +8,7 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.deployment.DeploymentConstants;
 import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.deployment.repository.util.ArchiveFileData;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
 import org.apache.axis2.deployment.repository.util.ArchiveReader;
 import org.apache.axis2.description.*;
 import org.apache.axis2.engine.AxisConfiguration;
@@ -430,7 +430,8 @@
                         throw new AxisFault("No service archiev found : " + servicename);
                     }
                     File inputFile = Utils.createTempFile(servicename, fin);
-                    ArchiveFileData filedata = new ArchiveFileData(inputFile, DeploymentConstants.TYPE_SERVICE, false);
+                    DeploymentFileData filedata = new DeploymentFileData(inputFile,
+                            DeploymentConstants.TYPE_SERVICE, false);
 
                     filedata.setClassLoader(false,
                             moduleClassLoader);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java Thu Feb  8 21:38:38 2007
@@ -84,7 +84,6 @@
     private URL axis2Repository = null;
 
     private HashMap allServices = new HashMap();
-
     /**
      * Stores the module specified in the server.xml at the document parsing time.
      */

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java?view=diff&rev=505189&r1=505188&r2=505189
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/deployment/BadModuleTest.java Thu Feb  8 21:38:38 2007
@@ -36,7 +36,7 @@
             InputStream in = new FileInputStream(
                     getTestResourceFile("deployment/Badmodule.xml"));
             AxisConfiguration glabl = new AxisConfiguration();
-            AxisConfigBuilder builder =new AxisConfigBuilder(in, glabl);
+            AxisConfigBuilder builder =new AxisConfigBuilder(in, glabl,null);
             builder.populateConfig();
             fail(
                     "this must failed gracefully with DeploymentException or FileNotFoundException");



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org