[jboss-svn-commits] JBL Code SVN: r30498 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/soa/esb/listeners/config and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Dec 6 23:56:36 EST 2009


Author: beve
Date: 2009-12-06 23:56:36 -0500 (Sun, 06 Dec 2009)
New Revision: 30498

Added:
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/subdir2/
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/subdir2/type.xsd
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/type.xsd
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/META-INF/
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/META-INF/jboss-esb.xml
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/mock.xsd
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/subdir2/
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/subdir2/type.xsd
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/type.xsd
Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployerUnitTest.java
Log:
Work for https://jira.jboss.org/jira/browse/JBESB-3027 "JBoss4ESBDeployer: does not support schema imports/includes for exploded archives."



Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2009-12-07 04:31:31 UTC (rev 30497)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2009-12-07 04:56:36 UTC (rev 30498)
@@ -727,50 +727,78 @@
             return Collections.emptyMap();
         }
         
-        if (file.isDirectory())
+        if (file.isDirectory()) 
         {
             return getSchemasFromDirectory(file);
         }
-        else
+        
+        final String fileName = file.getName();
+        if (fileName.endsWith(".esb"))
+            return getSchemasFromArchive(file);
+	        
+        if (fileName.endsWith("-esb.xml"))
         {
-            return getSchemasFromArchive(file);
+            final File metaInf = file.getParentFile();
+            final File deploymentRoot = metaInf.getParentFile();
+            return getSchemasFromDirectory(deploymentRoot);
         }
+        
+        throw new DeploymentException("Unrecognized deployment : " + file + ".");
     }
-
+    
     static Map<String, String> getSchemasFromDirectory(final File directory) throws DeploymentException
     {
+        return getSchemasFromDir(directory, directory);
+    }
+
+    private static Map<String, String> getSchemasFromDir(final File root, final File directory) throws DeploymentException
+    {
         if (directory != null)
         {
+	        final Map<String, String> schemasMap = new HashMap<String, String>();
+            
             if (directory.isDirectory())
             {
-                final File[] schemas = directory.listFiles(new FilenameFilter() {
-                    public boolean accept(File dir, String name)
+                final File[] files = directory.listFiles();
+                for (File file : files)
+                {
+                    if (file.isDirectory())
                     {
-                        return isXsd(name);
+                        schemasMap.putAll(getSchemasFromDir(root, file));
                     }
-                });
-                if (schemas.length > 0)
-                {
-                    final Map<String, String> schemasMap = new HashMap<String, String>();
-                    for (File file : schemas)
+                    else if (isXsd(file.getName()))
                     {
                         try
                         {
-                            schemasMap.put(file.getName(), FileUtil.readTextFile(file));
+                            final String filename = determineSchemaFilename(root, file);
+                            schemasMap.put(filename, FileUtil.readTextFile(file));
                         } 
                         catch (final IOException e)
                         {
                             throw new DeploymentException("IOException while trying to read xsd '" + file.getName() + "'", e);
                         }
                     }
-                    return schemasMap;
                 }
             }
+            return schemasMap;
         }
         
         return Collections.emptyMap();
     }
-
+    
+    private static String determineSchemaFilename(final File rootDir, final File file)
+    {
+        final String rootName = rootDir.getName();
+        final String path = file.getPath();
+        int idx = path.indexOf(rootName);
+        if (idx != -1)
+        {
+            return path.substring(idx + rootName.length() + 1);
+        }
+        
+        return file.getName();
+    }
+    
     private static boolean isXsd(final String fileName)
     {
         return fileName.endsWith(".xsd");

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployerUnitTest.java	2009-12-07 04:31:31 UTC (rev 30497)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployerUnitTest.java	2009-12-07 04:56:36 UTC (rev 30498)
@@ -32,9 +32,9 @@
 import org.junit.Test;
 
 /**
+ * Unit test for JBoss4ESBDeployer. 
  * 
  * @author <a href="mailto:dbevenius at jboss.com">Daniel Bevenius</a>
- *
  */
 public class JBoss4ESBDeployerUnitTest
 {
@@ -47,11 +47,13 @@
     }
     
     @Test
-    public void getSchemas() throws DeploymentException
+    public void getSchemasFromDirectory() throws DeploymentException
     {
         File directory = new File(getClass().getResource("schemasDir").getFile());
         Map<String, String> schemas = JBoss4ESBDeployer.getSchemasFromDirectory(directory);
         assertTrue(schemas.containsKey("mock.xsd"));
+        assertTrue(schemas.containsKey("subdir/type.xsd"));
+        assertTrue(schemas.containsKey("subdir/subdir2/type.xsd"));
     }
     
     @Test
@@ -64,6 +66,18 @@
     }
     
     @Test
+    public void getSchemasFromExplodedArchiveWithEsbFile() throws DeploymentException
+    {
+        final URL resource = getClass().getResource("schemasExploded.esb");
+        final File jbossEsbXml = new File(resource.getFile() + File.separator + "META-INF" + File.separator + "jboss-esb.xml" );
+        final Map<String, String> schemas = JBoss4ESBDeployer.getSchemas(jbossEsbXml);
+        
+        assertTrue(schemas.containsKey("mock.xsd"));
+        assertTrue(schemas.containsKey("subdir/type.xsd"));
+        assertTrue(schemas.containsKey("subdir/subdir2/type.xsd"));
+    }
+    
+    @Test
     public void getSchemasFromArchiveNullArchive() throws DeploymentException
     {
         Map<String, String> schemas = JBoss4ESBDeployer.getSchemasFromArchive(null);

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/subdir2/type.xsd
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/subdir2/type.xsd	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/subdir2/type.xsd	2009-12-07 04:56:36 UTC (rev 30498)
@@ -0,0 +1,9 @@
+<xs:schema version="1.0" targetNamespace="http://www.jboss.org/custom" xmlns:x1="http://www.jboss.org/custome"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="customType" type="x1:type"/>
+  <xs:complexType name="type">
+    <xs:sequence>
+      <xs:element name="customType" type="xs:string" minOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
+

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/type.xsd
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/type.xsd	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasDir/subdir/type.xsd	2009-12-07 04:56:36 UTC (rev 30498)
@@ -0,0 +1,9 @@
+<xs:schema version="1.0" targetNamespace="http://www.jboss.org/custom" xmlns:x1="http://www.jboss.org/custome"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="customType" type="x1:type"/>
+  <xs:complexType name="type">
+    <xs:sequence>
+      <xs:element name="customType" type="xs:string" minOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
+

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/META-INF/jboss-esb.xml
===================================================================

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/mock.xsd
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/mock.xsd	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/mock.xsd	2009-12-07 04:56:36 UTC (rev 30498)
@@ -0,0 +1,9 @@
+<xs:schema version="1.0" targetNamespace="http://www.jboss.org/custom" xmlns:x1="http://www.jboss.org/custome"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="customType" type="x1:type"/>
+  <xs:complexType name="type">
+    <xs:sequence>
+      <xs:element name="customType" type="xs:string" minOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
+

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/subdir2/type.xsd
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/subdir2/type.xsd	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/subdir2/type.xsd	2009-12-07 04:56:36 UTC (rev 30498)
@@ -0,0 +1,9 @@
+<xs:schema version="1.0" targetNamespace="http://www.jboss.org/custom" xmlns:x1="http://www.jboss.org/custome"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="customType" type="x1:type"/>
+  <xs:complexType name="type">
+    <xs:sequence>
+      <xs:element name="customType" type="xs:string" minOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
+

Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/type.xsd
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/type.xsd	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/config/schemasExploded.esb/subdir/type.xsd	2009-12-07 04:56:36 UTC (rev 30498)
@@ -0,0 +1,9 @@
+<xs:schema version="1.0" targetNamespace="http://www.jboss.org/custom" xmlns:x1="http://www.jboss.org/custome"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="customType" type="x1:type"/>
+  <xs:complexType name="type">
+    <xs:sequence>
+      <xs:element name="customType" type="xs:string" minOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
+



More information about the jboss-svn-commits mailing list