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 2005/09/16 13:13:56 UTC

svn commit: r289491 - in /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment: DeploymentEngine.java listener/RepositoryListenerImpl.java repository/util/ArchiveReader.java scheduler/SchedulerTask.java

Author: deepal
Date: Fri Sep 16 04:13:44 2005
New Revision: 289491

URL: http://svn.apache.org/viewcvs?rev=289491&view=rev
Log:
exploded directory support

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/listener/RepositoryListenerImpl.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java?rev=289491&r1=289490&r2=289491&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java Fri Sep 16 04:13:44 2005
@@ -68,7 +68,7 @@
 
     private boolean hotDeployment = true;   //to do hot deployment or not
     private boolean hotUpdate = true;  // to do hot update or not
-    private boolean extractServiceArchive = false;// need to exatract service archive file
+    private boolean explodedDir = false;// need to exatract service archive file
 
 
     /**
@@ -229,7 +229,7 @@
         if(paraextractServiceArchive != null){
             value = (String) paraextractServiceArchive.getValue();
             if ("true".equalsIgnoreCase(value))
-                extractServiceArchive = true;
+                explodedDir = true;
         }
     }
 
@@ -252,7 +252,7 @@
         if (hotDeployment) {
             startSearch(this);
         } else {
-            new RepositoryListenerImpl(folderName, this,extractServiceArchive);
+            new RepositoryListenerImpl(folderName, this);
         }
         try {
             ((AxisConfigurationImpl) axisConfig).setRepository(axis2repository);
@@ -295,7 +295,7 @@
         if (isRepositoryExist) {
             hotDeployment = false;
             hotUpdate = false;
-            new RepositoryListenerImpl(folderName, this,extractServiceArchive);
+            new RepositoryListenerImpl(folderName, this);
         }
         try {
             ((AxisConfigurationImpl) axisConfig).setRepository(axis2repository);
@@ -392,7 +392,7 @@
      */
     private void startSearch(DeploymentEngine engine) {
         scheduler = new Scheduler();
-        scheduler.schedule(new SchedulerTask(engine, folderName,extractServiceArchive),
+        scheduler.schedule(new SchedulerTask(engine, folderName),
                 new DeploymentIterator());
     }
 
@@ -584,13 +584,14 @@
         if (wsToDeploy.size() > 0) {
             for (int i = 0; i < wsToDeploy.size(); i++) {
                 currentArchiveFile = (ArchiveFileData) wsToDeploy.get(i);
+                explodedDir = currentArchiveFile.getFile().isDirectory();
                 int type = currentArchiveFile.getType();
                 try {
                     ArchiveReader archiveReader;
                     StringWriter errorWriter = new StringWriter();
                     switch (type) {
                         case SERVICE:
-                            currentArchiveFile.setClassLoader(extractServiceArchive);
+                            currentArchiveFile.setClassLoader(explodedDir);
                             archiveReader = new ArchiveReader();
                             String serviceStatus = "";
                             try {
@@ -599,7 +600,7 @@
                                         new ServiceGroupDescription(axisConfig);
                                 archiveReader.processServiceGroup(currentArchiveFile.getAbsolutePath(),
                                         this,
-                                        sericeGroup,extractServiceArchive);
+                                        sericeGroup,explodedDir);
 //                                archiveReader.readServiceArchive(currentArchiveFile.getAbsolutePath(),
 //                                        this,
 //                                        service);
@@ -614,9 +615,7 @@
                                 de.printStackTrace(error_ptintWriter);
                                 serviceStatus = "Error:\n" +
                                         errorWriter.toString();
-                                de.printStackTrace();
                             } catch (AxisFault axisFault) {
-                                axisFault.printStackTrace();
                                 log.info(Messages.getMessage(DeploymentErrorMsgs.IN_VALID_SERVICE,
                                         currentArchiveFile.getName()));
 //                            log.info("AxisFault  " + axisFault);
@@ -625,7 +624,6 @@
                                 serviceStatus = "Error:\n" +
                                         errorWriter.toString();
                             } catch (Exception e) {
-                                e.printStackTrace();
                                 log.info(Messages.getMessage(DeploymentErrorMsgs.IN_VALID_SERVICE,
                                         currentArchiveFile.getName()));
 //                            log.info("Exception  " + e);
@@ -642,7 +640,7 @@
                             }
                             break;
                         case MODULE:
-                            currentArchiveFile.setClassLoader(false);
+                            currentArchiveFile.setClassLoader(explodedDir);
                             archiveReader = new ArchiveReader();
                             String moduleStatus = "";
                             try {
@@ -650,7 +648,7 @@
                                 metaData.setParent(axisConfig);
                                 archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(),
                                         this,
-                                        metaData);
+                                        metaData,explodedDir);
                                 addNewModule(metaData);
                                 log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_MODULE,
                                         metaData.getName().getLocalPart()));
@@ -828,7 +826,7 @@
             currentArchiveFile = new ArchiveFileData(modulearchive, MODULE);
             axismodule = new ModuleDescription();
             ArchiveReader archiveReader = new ArchiveReader();
-            archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(), this, axismodule);
+            archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(), this, axismodule,false);
             currentArchiveFile.setClassLoader(false);
             Flow inflow = axismodule.getInFlow();
             if (inflow != null) {

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/listener/RepositoryListenerImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/listener/RepositoryListenerImpl.java?rev=289491&r1=289490&r2=289491&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/listener/RepositoryListenerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/listener/RepositoryListenerImpl.java Fri Sep 16 04:13:44 2005
@@ -56,7 +56,6 @@
     private String folderName;
 
 
-    private boolean extarctServiceArchive = false;
 
     /**
      * This constructor take two argumnets folder name and referance to Deployment Engine
@@ -67,10 +66,9 @@
      * @param deploy_engine refearnce to engine registry  inorder to inform the updates
      */
     public RepositoryListenerImpl(String folderName,
-                                  DeploymentEngine deploy_engine, boolean serviceExtarct) {
+                                  DeploymentEngine deploy_engine) {
         this.folderName = folderName;
         wsinfoList = new WSInfoList(deploy_engine);
-        this.extarctServiceArchive = serviceExtarct;
         init();
     }
 
@@ -103,6 +101,18 @@
                 }
             }
         }
+
+        //adding exploded dir
+        File rootDir = new File(modulepath);
+        File [] fileList = rootDir.listFiles();
+        if (fileList !=null) {
+            for (int i = 0; i < fileList.length; i++) {
+                File file = fileList[i];
+                if(file.isDirectory()){
+                    wsinfoList.addWSInfoItem(file, MODULE);
+                }
+            }
+        }
     }
 
     /**
@@ -111,11 +121,16 @@
      */
     public void checkServices() {
         String modulepath = folderName + SERVICE_PATH;
-        if(extarctServiceArchive){
-            searchExploedServies(modulepath);
-        }else {
-            searchWS(modulepath, SERVICE);
-        }
+
+        // exploded dir
+        searchExplodedDir(modulepath);
+        //service archives
+        searchWS(modulepath, SERVICE);
+//        if(extarctServiceArchive){
+//            searchExploedServies(modulepath);
+//        }else {
+//            searchWS(modulepath, SERVICE);
+//        }
     }
 
     /**
@@ -180,74 +195,87 @@
     }
 
 
-    private void searchExploedServies(String rootDirName){
+    private void searchExplodedDir(String rootDirName){
         File rootDir = new File(rootDirName);
         File [] fileList = rootDir.listFiles();
-        ArrayList tobedelete = new ArrayList();
-        ArrayList tobeextarct = new ArrayList();
-        ArrayList allFiles = new ArrayList();
-        for (int i = 0; fileList != null && i < fileList.length; i++) {
-            File file_first = fileList[i];
-            boolean isservice = ArchiveFileData.isServiceArchiveFile(file_first.getName());
-            boolean found = false;
-            if(isservice){
-                for (int j = 0; j < fileList.length; j++) {
-                    File file_second = fileList[j];
-                    if(file_second.getName().equalsIgnoreCase(
-                            getShortFileName(file_first.getName()))){
-                        if(file_second.lastModified() >= file_first.lastModified()){
-                            found = true;
-                            allFiles.add(file_second);
-                            break;
-                        } else if (file_second.lastModified() < file_first.lastModified()){
-                            tobedelete.add(file_second);
-                            tobeextarct.add(file_first);
-                            found = true;
-                        }
-                    }
-                }
-                if(!found){
-                    tobeextarct.add(file_first);
-                }
-            }
-        }
-        for (int i = 0; i < tobedelete.size(); i++) {
-            File file1 = (File) tobedelete.get(i);
-            deleteDir(file1);
-        }
-
-        for (int i = 0; i < tobeextarct.size(); i++) {
-            File file1 = (File) tobeextarct.get(i);
-            File outFile = new File(rootDirName,getShortFileName(file1.getName()));
-            if(!outFile.exists()){
-                outFile.mkdir();
-            }
-            extarctServiceArchive(file1,outFile);
-            allFiles.add(outFile);
-        }
-
-        for (int i = 0; fileList != null && i < fileList.length; i++) {
-            File file = fileList[i];
-            boolean found = false;
-            boolean todo = ArchiveFileData.isServiceArchiveFile(file.getName());
-            if (!todo) {
-                for (int j = 0; j < allFiles.size(); j++) {
-                    File file1 = (File) allFiles.get(j);
-                    if(file1.getName().equals(file.getName())){
-                        found = true;
-                    }
-                }
-                if(!found){
-                    allFiles.add(file);
+        if (fileList !=null) {
+            for (int i = 0; i < fileList.length; i++) {
+                File file = fileList[i];
+                if(file.isDirectory()){
+                    wsinfoList.addWSInfoItem(file, SERVICE);
                 }
             }
         }
-
-        for (int i = 0; i < allFiles.size(); i++) {
-            File file = (File) allFiles.get(i);
-            wsinfoList.addWSInfoItem(file, SERVICE);
-        }
     }
+
+//    private void searchExploedServies(String rootDirName){
+//        File rootDir = new File(rootDirName);
+//        File [] fileList = rootDir.listFiles();
+//        ArrayList tobedelete = new ArrayList();
+//        ArrayList tobeextarct = new ArrayList();
+//        ArrayList allFiles = new ArrayList();
+//        for (int i = 0; fileList != null && i < fileList.length; i++) {
+//            File file_first = fileList[i];
+//            boolean isservice = ArchiveFileData.isServiceArchiveFile(file_first.getName());
+//            boolean found = false;
+//            if(isservice){
+//                for (int j = 0; j < fileList.length; j++) {
+//                    File file_second = fileList[j];
+//                    if(file_second.getName().equalsIgnoreCase(
+//                            getShortFileName(file_first.getName()))){
+//                        if(file_second.lastModified() >= file_first.lastModified()){
+//                            found = true;
+//                            allFiles.add(file_second);
+//                            break;
+//                        } else if (file_second.lastModified() < file_first.lastModified()){
+//                            tobedelete.add(file_second);
+//                            tobeextarct.add(file_first);
+//                            found = true;
+//                        }
+//                    }
+//                }
+//                if(!found){
+//                    tobeextarct.add(file_first);
+//                }
+//            }
+//        }
+//        for (int i = 0; i < tobedelete.size(); i++) {
+//            File file1 = (File) tobedelete.get(i);
+//            deleteDir(file1);
+//        }
+//
+//        for (int i = 0; i < tobeextarct.size(); i++) {
+//            File file1 = (File) tobeextarct.get(i);
+//            File outFile = new File(rootDirName,getShortFileName(file1.getName()));
+//            if(!outFile.exists()){
+//                outFile.mkdir();
+//            }
+//            extarctServiceArchive(file1,outFile);
+//            allFiles.add(outFile);
+//        }
+//
+//        for (int i = 0; fileList != null && i < fileList.length; i++) {
+//            File file = fileList[i];
+//            boolean found = false;
+//            boolean todo = ArchiveFileData.isServiceArchiveFile(file.getName());
+//            if (!todo) {
+//                for (int j = 0; j < allFiles.size(); j++) {
+//                    File file1 = (File) allFiles.get(j);
+//                    if(file1.getName().equals(file.getName())){
+//                        found = true;
+//                    }
+//                }
+//                if(!found){
+//                    allFiles.add(file);
+//                }
+//            }
+//        }
+//
+//        for (int i = 0; i < allFiles.size(); i++) {
+//            File file = (File) allFiles.get(i);
+//            wsinfoList.addWSInfoItem(file, SERVICE);
+//        }
+//    }
 
     /**
      * To delete a given directory with its all childerns

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java?rev=289491&r1=289490&r2=289491&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java Fri Sep 16 04:13:44 2005
@@ -213,7 +213,7 @@
                         break;
                     }
                 }
-            //    zin.close();
+                //    zin.close();
                 if (!foundServiceXML) {
                     throw new DeploymentException(
                             Messages.getMessage(DeploymentErrorMsgs.SERVICE_XML_NOT_FOUND));
@@ -263,8 +263,6 @@
             serviceDesc.setClassLoader(engine.getCurrentFileItem().getClassLoader());
             ServiceBuilder serviceBuilder = new ServiceBuilder(engine,serviceDesc);
             serviceBuilder.populateService(services);
-            //todo fix me deepal
-            //serviceGroupDesc.addService(serviceDesc);
         } else if(SERVICE_GROUP_ELEMENT.equals(rootelementName)){
             ServiceGroupBuilder groupBuilder = new ServiceGroupBuilder(services,engine);
             groupBuilder.populateServiceGroup(serviceGroupDesc);
@@ -273,28 +271,46 @@
 
     public void readModuleArchive(String filename,
                                   DeploymentEngine engine,
-                                  ModuleDescription module) throws DeploymentException {
+                                  ModuleDescription module , boolean explodedDir) throws DeploymentException {
         // get attribute values
         boolean foundmoduleXML = false;
-        ZipInputStream zin;
-        try {
-            zin = new ZipInputStream(new FileInputStream(filename));
-            ZipEntry entry;
-            while ((entry = zin.getNextEntry()) != null) {
-                if (entry.getName().equals(MODULEXML)) {
-                    foundmoduleXML = true;
-                    ModuleBuilder builder = new ModuleBuilder(zin, engine, module);
-                    builder.populateModule();
-                    break;
+        if (!explodedDir) {
+            ZipInputStream zin;
+            try {
+                zin = new ZipInputStream(new FileInputStream(filename));
+                ZipEntry entry;
+                while ((entry = zin.getNextEntry()) != null) {
+                    if (entry.getName().equals(MODULEXML)) {
+                        foundmoduleXML = true;
+                        ModuleBuilder builder = new ModuleBuilder(zin, engine, module);
+                        builder.populateModule();
+                        break;
+                    }
+                }
+                zin.close();
+                if (!foundmoduleXML) {
+                    throw new DeploymentException(Messages.getMessage(
+                            DeploymentErrorMsgs.MODULEXML_NOT_FOUND_FOR_THE_MODULE, filename));
                 }
+            } catch (Exception e) {
+                throw new DeploymentException(e);
             }
-            zin.close();
-            if (!foundmoduleXML) {
+        } else {
+            File file = new File(filename, MODULEXML);
+            if (file.exists()) {
+                InputStream in = null;
+                try {
+                    in = new FileInputStream(file);
+                    ModuleBuilder builder = new ModuleBuilder(in, engine, module);
+                    builder.populateModule();
+                } catch (FileNotFoundException e) {
+                    throw new DeploymentException("FileNotFound : " + e);
+                }
+            } else {
                 throw new DeploymentException(Messages.getMessage(
-                        DeploymentErrorMsgs.MODULEXML_NOT_FOUND_FOR_THE_MODULE, filename));
+                            DeploymentErrorMsgs.MODULEXML_NOT_FOUND_FOR_THE_MODULE, filename));
             }
-        } catch (Exception e) {
-            throw new DeploymentException(e);
+
         }
     }
 

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java?rev=289491&r1=289490&r2=289491&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/scheduler/SchedulerTask.java Fri Sep 16 04:13:44 2005
@@ -38,9 +38,8 @@
      * Creates a new scheduler task.
      */
 
-    public SchedulerTask(DeploymentEngine deploy_engine, String folderName,
-                         boolean extarctServiceArchive) {
-        wsListener = new RepositoryListenerImpl(folderName, deploy_engine,extarctServiceArchive);
+    public SchedulerTask(DeploymentEngine deploy_engine, String folderName ) {
+        wsListener = new RepositoryListenerImpl(folderName, deploy_engine);
     }
 
     /**