You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2010/11/19 14:47:51 UTC

svn commit: r1036838 - in /db/torque/torque4/trunk/torque-generator/src: main/java/org/apache/torque/generator/configuration/ main/java/org/apache/torque/generator/configuration/source/ main/java/org/apache/torque/generator/file/ main/java/org/apache/t...

Author: tfischer
Date: Fri Nov 19 13:47:50 2010
New Revision: 1036838

URL: http://svn.apache.org/viewvc?rev=1036838&view=rev
Log:
Add a transformer which can add additional files into an existing source tree.

Added:
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java
    db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformerTest.java
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/package.html
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/conf/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/conf/control.xml
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/outlets/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/outlets/outlets.xml
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional1.xml
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional2.xml
    db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/source.xml
Modified:
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfiguration.java
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfigurationReader.java
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceTransformerSaxHandler.java
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/file/Fileset.java

Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfiguration.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfiguration.java?rev=1036838&r1=1036837&r2=1036838&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfiguration.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfiguration.java Fri Nov 19 13:47:50 2010
@@ -56,6 +56,9 @@ public class UnitConfiguration
     /** The entity references for resolving schema files for XML sources. */
     private EntityReferences entityReferences;
 
+    /** The configuration handlers which are used to read this configuration. */
+    private ConfigurationHandlers configurationHandlers;
+
     /**
      * The root directory where the generated file which are generated
      * each time anew are put into.
@@ -74,7 +77,7 @@ public class UnitConfiguration
     /**
      * Returns the configuration of the outlets in this generation unit.
      *
-     * @return the outlet configuration, or null if not set.
+     * @return the outlet configuration, not null.
      *
      * @throws IllegalStateException if outletConfiguration was not set.
      */
@@ -283,6 +286,43 @@ public class UnitConfiguration
     }
 
     /**
+     * Returns the configuration handlers used to parse the configuration
+     * of this generation unit.
+     *
+     * @return the configuration handlers, not null.
+     *
+     * @throws IllegalStateException if configurationHandlers was not set.
+     */
+    public ConfigurationHandlers getConfigurationHandlers()
+    {
+        if (configurationHandlers == null)
+        {
+            throw new IllegalStateException(
+                    "configurationHandlers is not initialized");
+        }
+        return configurationHandlers;
+    }
+
+    /**
+     * Sets the configuration handlers used to parse the configuration
+     * of this generation unit.
+     *
+     * @param configurationHandlers the configuration handlers, not null.
+     *
+     * @throws NullPointerException if configurationHandlers is null.
+     */
+    public void setConfigurationHandlers(
+            ConfigurationHandlers configurationHandlers)
+    {
+        if (configurationHandlers == null)
+        {
+            throw new NullPointerException(
+                    "configurationHandlers cannot be null");
+        }
+        this.configurationHandlers = configurationHandlers;
+    }
+
+    /**
      * Returns the source provider which overrides the source provider defined
      * in the control file.
      *
@@ -363,6 +403,7 @@ public class UnitConfiguration
             || newFileTargetDirectory == null
             || modifiedFileTargetDirectory == null
             || loglevel == null
+            || configurationHandlers == null
             || entityReferences == null
             || !overrideSourceProviderInitialized)
         {

Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfigurationReader.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfigurationReader.java?rev=1036838&r1=1036837&r2=1036838&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfigurationReader.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/UnitConfigurationReader.java Fri Nov 19 13:47:50 2010
@@ -87,6 +87,8 @@ class UnitConfigurationReader
         }
 
         UnitConfiguration unitConfiguration = new UnitConfiguration();
+        unitConfiguration.setConfigurationHandlers(
+                configurationHandlers);
         unitConfiguration.setNewFileTargetDirectory(
                 unitDescriptor.getProjectPaths().getNewFileTargetPath());
         unitConfiguration.setModifiedFileTargetDirectory(

Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceTransformerSaxHandler.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceTransformerSaxHandler.java?rev=1036838&r1=1036837&r2=1036838&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceTransformerSaxHandler.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceTransformerSaxHandler.java Fri Nov 19 13:47:50 2010
@@ -25,9 +25,11 @@ import static org.apache.torque.generato
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
 
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.torque.generator.configuration.ConfigurationProvider;
@@ -62,9 +64,25 @@ public class SourceTransformerSaxHandler
 
     /**
      * The value of the currently read bean property of the transformer,
-     * or null if no property is currently read.
+     * or null if no property is currently read or the property is a
+     * list property.
+     */
+    private StringBuilder simplePropertyValue;
+
+    /**
+     * The value of the currently read bean property of the transformer,
+     * or null if no property is currently read or the property is a
+     * simple property.
+     */
+    private ArrayList<String> listPropertyValue;
+
+    /**
+     * The value of the currently read list entry of the currently read
+     * property of the transformer,
+     * or null if no list entry is currently read or the property is a
+     * simple property.
      */
-    private StringBuilder propertyValue;
+    private StringBuilder listPropertyEntry;
 
     /**
      * Constructor.
@@ -123,7 +141,24 @@ public class SourceTransformerSaxHandler
         {
             level++;
             propertyName = rawName;
-            propertyValue = new StringBuilder();
+            simplePropertyValue = new StringBuilder();
+        }
+        else if (level == 2)
+        {
+            level++;
+            if (simplePropertyValue.length() > 0 
+                    && !StringUtils.isWhitespace(simplePropertyValue.toString()))
+            {
+                throw new SAXException(
+                        "Cannot parse both text content and child elements "
+                        + " in element " + propertyName);
+            }
+            simplePropertyValue = null;
+            if (listPropertyValue == null)
+            {
+                listPropertyValue = new ArrayList<String>();
+            }
+            listPropertyEntry = new StringBuilder();
         }
         else
         {
@@ -139,7 +174,12 @@ public class SourceTransformerSaxHandler
         throws SAXException
     {
         level--;
-        if (level == 1)
+        if (level == 2)
+        {
+            listPropertyValue.add(listPropertyEntry.toString());
+            listPropertyEntry = null;
+        }
+        else if (level == 1)
         {
             if (!PropertyUtils.isWriteable(sourceTransformer, propertyName))
             {
@@ -148,12 +188,21 @@ public class SourceTransformerSaxHandler
                         + " in class "
                         + sourceTransformer.getClass().getName());
             }
+            Object propertyValue;
+            if (simplePropertyValue != null)
+            {
+                propertyValue = simplePropertyValue.toString();
+            }
+            else
+            {
+                propertyValue = listPropertyValue;
+            }
             try
             {
                 BeanUtils.copyProperty(
                         sourceTransformer,
                         propertyName,
-                        propertyValue.toString());
+                        propertyValue);
             }
             catch (InvocationTargetException e)
             {
@@ -180,7 +229,7 @@ public class SourceTransformerSaxHandler
         }
         else if (level != 0)
         {
-            throw new SAXException("endElemend reached Level" + level);
+            throw new SAXException("endElemend reached Level " + level);
         }
     }
 
@@ -191,13 +240,21 @@ public class SourceTransformerSaxHandler
     public void characters(char[] ch, int start, int length)
             throws SAXException
     {
-        if (propertyName == null)
+        if (simplePropertyValue != null)
         {
+            for (int i = start; i < start + length; ++i)
+            {
+                simplePropertyValue.append(ch[i]);
+            }
             return;
         }
-        for (int i = start; i < start + length; ++i)
+        if (listPropertyEntry != null)
         {
-            propertyValue.append(ch[i]);
+            for (int i = start; i < start + length; ++i)
+            {
+                listPropertyEntry.append(ch[i]);
+            }
+            return;
         }
     }
 

Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/file/Fileset.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/file/Fileset.java?rev=1036838&r1=1036837&r2=1036838&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/file/Fileset.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/file/Fileset.java Fri Nov 19 13:47:50 2010
@@ -23,9 +23,9 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOCase;
@@ -52,13 +52,13 @@ public class Fileset
      * The patterns for the files to include.
      * If null or empty, all Files are included.
      */
-    private Set<String> includes;
+    private Collection<String> includes;
 
     /**
      * The patterns for the files to exclude.
      * If null or empty, no Files are excluded.
      */
-    private Set<String> excludes;
+    private Collection<String> excludes;
 
     /**
      * Default constructor.
@@ -76,7 +76,9 @@ public class Fileset
      * @param excludes The patterns for the files to exclude.
      *        If null or empty, no Files are excluded.
      */
-    public Fileset(File basedir, Set<String> includes, Set<String> excludes)
+    public Fileset(File basedir,
+            Collection<String> includes,
+            Collection<String> excludes)
     {
         this.basedir = basedir;
         this.includes = includes;
@@ -108,7 +110,7 @@ public class Fileset
      *
      * @return the include patterns, or null if all files should be included.
      */
-    public Set<String> getIncludes()
+    public Collection<String> getIncludes()
     {
         return includes;
     }
@@ -118,7 +120,7 @@ public class Fileset
      *
      * @return the include patterns, or null if all files should be included.
      */
-    public void setIncludes(Set<String> includes)
+    public void setIncludes(Collection<String> includes)
     {
         this.includes = includes;
     }
@@ -128,7 +130,7 @@ public class Fileset
      *
      * @return the exclude patterns, or null if all files should be excluded.
      */
-    public Set<String> getExcludes()
+    public Collection<String> getExcludes()
     {
         return excludes;
     }
@@ -138,7 +140,7 @@ public class Fileset
      *
      * @return the exclude patterns, or null if all files should be excluded.
      */
-    public void setExcludes(Set<String> excludes)
+    public void setExcludes(Collection<String> excludes)
     {
         this.excludes = excludes;
     }

Added: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java Fri Nov 19 13:47:50 2010
@@ -0,0 +1,237 @@
+package org.apache.torque.generator.source.transform;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.torque.generator.configuration.ConfigurationException;
+import org.apache.torque.generator.configuration.ConfigurationHandlers;
+import org.apache.torque.generator.control.ControllerState;
+import org.apache.torque.generator.file.Fileset;
+import org.apache.torque.generator.source.Source;
+import org.apache.torque.generator.source.SourceElement;
+import org.apache.torque.generator.source.SourceException;
+import org.apache.torque.generator.source.SourcePath;
+import org.apache.torque.generator.source.stream.FileSourceProvider;
+import org.apache.torque.generator.source.stream.StreamSourceFormat;
+
+/**
+ * A SourceTransformer which loads other sources into the current source graph.
+ *
+ * @version $Id: $
+ */
+public class LoadAdditionalSourceTransformer implements SourceTransformer
+{
+    /** The class log. */
+    private static Log log
+            = LogFactory.getLog(LoadAdditionalSourceTransformer.class);
+
+    /**
+     * The element where the newly loaded source should be added.
+     */
+    private String element;
+
+    /**
+     * The include path for the files to load,
+     * relative to the current source file.
+     */
+    private List<String> fileIncludes;
+
+    /**
+     * The exclude path for the files to load,
+     * relative to the current source file.
+     */
+    private List<String> fileExcludes;
+
+    /**
+     * The format of the source.
+     */
+    private String sourceFormat;
+
+    /**
+     * Loads the additional source into the current source graph.
+     *
+     * @param root the root of the source graph, not null.
+     * @param controllerState the controller state, not null.
+     *
+     * @throws SourceTransformerException if the additional source
+     *         cannot be loaded or the element to add to does not exist.
+     */
+    public SourceElement transform(
+            SourceElement root,
+            ControllerState controllerState)
+        throws SourceTransformerException
+    {
+        // the element where the additional source should be anchored.
+        SourceElement sourceElement;
+        List<SourceElement> sourceElementList 
+                = SourcePath.getElementsFromRoot(root, element);
+        if (sourceElementList.isEmpty())
+        {
+            throw new SourceTransformerException(
+                    "Source element " + element + " does not exist");
+        }
+        sourceElement = sourceElementList.get(0);
+
+        ConfigurationHandlers configurationHandlers
+                = controllerState.getUnitConfiguration()
+                        .getConfigurationHandlers();
+        Set<StreamSourceFormat> streamSourceFormats
+            = configurationHandlers.getStreamSourceFormats();
+        StreamSourceFormat streamSourceFormat = null;
+        for (StreamSourceFormat candidate : streamSourceFormats)
+        {
+            if (sourceFormat.equals(candidate.getKey()))
+            {
+                streamSourceFormat = candidate;
+                break;
+            }
+        }
+        if (streamSourceFormat == null)
+        {
+            throw new SourceTransformerException(
+                    "Unknown source format" + sourceFormat);
+        }
+        
+        FileSourceProvider fileSourceProvider;
+        try
+        {
+            fileSourceProvider = new FileSourceProvider(
+                    streamSourceFormat,
+                    new Fileset(
+                            controllerState.getSourceFile().getParentFile(),
+                            fileIncludes, 
+                            fileExcludes));
+            fileSourceProvider.init(configurationHandlers, controllerState);
+        }
+        catch (ConfigurationException e)
+        {
+            throw new SourceTransformerException(
+                    "Could initialize file source provider", e);
+        }
+        while (fileSourceProvider.hasNext())
+        {
+            Source additionalSource = fileSourceProvider.next();
+            SourceElement additionalSourceRoot;
+            try
+            {
+                additionalSourceRoot = additionalSource.getRootElement();
+            }
+            catch (SourceException e)
+            {
+                log.error("Could not construct source from schema file "
+                        + additionalSource.getDescription(),
+                    e);
+                throw new SourceTransformerException(
+                        "Could not construct source from schema file "
+                            + additionalSource.getDescription(),
+                        e);
+            }
+            sourceElement.getChildren().add(additionalSourceRoot);
+        }
+
+        return root;
+    }
+
+    /**
+     * Returns the path to the source element to which the additional sources
+     * should be added.
+     * 
+     * @return the path to the anchor element.
+     */
+    public String getElement()
+    {
+        return element;
+    }
+
+    /**
+     * Sets the path to the source element to which the additional sources
+     * should be added.
+     *
+     * @param element the path to the anchor element.
+     */
+    public void setElement(String element)
+    {
+        this.element = element;
+    }
+
+    /**
+     * Returns the file patterns to include to the sources to read.
+     *
+     * @return the file patterns to include.
+     */
+    public List<String> getFileIncludes()
+    {
+        return fileIncludes;
+    }
+
+    /**
+     * Sets the file patterns to include to the sources to read.
+     *
+     * @param fileIncludes the file patterns to include.
+     */
+    public void setFileIncludes(List<String> fileIncludes)
+    {
+        this.fileIncludes = fileIncludes;
+    }
+
+    /**
+     * Returns the file patterns to exclude from the sources to read.
+     *
+     * @return the file patterns to exclude.
+     */
+    public List<String> getFileExcludes()
+    {
+        return fileExcludes;
+    }
+
+    /**
+     * Sets the file patterns to exclude from the sources to read.
+     *
+     * @param fileExcludes the file patterns to exclude.
+     */
+    public void setFileExcludes(List<String> fileExcludes)
+    {
+        this.fileExcludes = fileExcludes;
+    }
+
+    /**
+     * Returns the key of the format of the source file(s).
+     *
+     * @return the key for the source format.
+     */
+    public String getSourceFormat()
+    {
+        return sourceFormat;
+    }
+
+    /**
+     * Sets the key of the source format of the source file(s).
+     *
+     * @param sourceFormat the key for the source format.
+     */
+    public void setSourceFormat(String sourceFormat)
+    {
+        this.sourceFormat = sourceFormat;
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformerTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformerTest.java?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformerTest.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformerTest.java Fri Nov 19 13:47:50 2010
@@ -0,0 +1,93 @@
+package org.apache.torque.generator.source.transform;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.torque.generator.BaseTest;
+import org.apache.torque.generator.configuration.UnitDescriptor;
+import org.apache.torque.generator.configuration.paths.CustomProjectPaths;
+import org.apache.torque.generator.configuration.paths.DefaultTorqueGeneratorPaths;
+import org.apache.torque.generator.configuration.paths.Maven2DirectoryProjectPaths;
+import org.apache.torque.generator.control.Controller;
+import org.junit.Test;
+
+/**
+ * Tests whether the loadAdditionalSourceTransformer works correctly.
+ */
+public class LoadAdditionalSourceTransformerTest extends BaseTest
+{
+    private static final String EXPECTED = "<root>\n"
+        + "  <element>\n"
+        + "    <child/>\n"
+        + "    <additional>\n"
+        + "      <element/>\n"
+        + "    </additional>\n"
+        + "    <additional>\n"
+        + "      <element/>\n"
+        + "    </additional>\n"
+        + "  </element>\n"
+        + "  <element/>\n"
+        + "</root>\n";
+    
+    @Test
+    public void testLoadAdditionalSourceTransformerGeneration() throws Exception
+    {
+        File targetDir = new File("target/test/loadAdditionalSourceTransformer");
+        FileUtils.deleteDirectory(targetDir);
+        Controller controller = new Controller();
+        List<UnitDescriptor> unitDescriptors = new ArrayList<UnitDescriptor>();
+        CustomProjectPaths projectPaths = new CustomProjectPaths(
+                new Maven2DirectoryProjectPaths(
+                        new File("src/test/loadAdditionalSourceTransformer")));
+        projectPaths.setNewFileTargetDir(targetDir);
+        unitDescriptors.add(new UnitDescriptor(
+                UnitDescriptor.Packaging.DIRECTORY,
+                projectPaths,
+                new DefaultTorqueGeneratorPaths()));
+        controller.run(unitDescriptors);
+
+        assertTrue(targetDir.exists());
+        File targetFile = new File(targetDir, "output.txt");
+        assertTrue(targetFile.exists());
+
+        FileReader fileReader = new FileReader(targetFile);
+        StringBuilder content = new StringBuilder();
+        int readChars;
+        char[] buffer = new char[50];
+        do
+        {
+            readChars = fileReader.read(buffer);
+            if (readChars != -1)
+            {
+                content.append(buffer, 0, readChars);
+            }
+        }
+        while (readChars != -1);
+        assertEquals(EXPECTED, content.toString());
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/package.html
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/package.html?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/package.html (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/package.html Fri Nov 19 13:47:50 2010
@@ -0,0 +1,24 @@
+<!--
+ Copyright 2001-2010 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.
+-->
+
+<h2>Test configuration for the LoadAdditionalSourceTransformer</h2>
+
+<p>
+  This directory and its subdirectories contain a test configuration
+  which is used by the LoadAdditionalSourceTransformerTest to check whether
+  the LoadAdditionalSourceTransformer works correctly.
+</p>
+ 
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/conf/control.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/conf/control.xml?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/conf/control.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/conf/control.xml Fri Nov 19 13:47:50 2010
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<control loglevel="debug"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://db.apache.org/torque/4.0/generator/configuration http://db.apache.org/torque/4.0/generator/configuration.xsd"
+    xmlns="http://db.apache.org/torque/4.0/generator/configuration">
+  <output name="output" file="output.txt">
+    <source xsi:type="fileSource" elements="root" format="xml">
+      <transformer class="org.apache.torque.generator.source.transform.LoadAdditionalSourceTransformer">
+        <element>/root/element</element>
+        <fileIncludes>
+          <fileInclude>additional*.xml</fileInclude>
+        </fileIncludes>
+        <sourceFormat>xml</sourceFormat>
+      </transformer>
+      <include>source.xml</include>
+    </source>
+    <outlet name="debugSourceOutlet"/>
+  </output>
+</control>
+  
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/outlets/outlets.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/outlets/outlets.xml?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/outlets/outlets.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/outlets/outlets.xml Fri Nov 19 13:47:50 2010
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<outlets xmlns="http://db.apache.org/torque/4.0/generator/configuration"
+    xsi:schemaLocation="http://db.apache.org/torque/4.0/generator/configuration http://db.apache.org/torque/4.0/generator/configuration.xsd"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+  <outlet name="debugSourceOutlet"
+      xsi:type="javaOutlet" 
+      class="org.apache.torque.generator.outlet.java.XmlOutlet">
+  </outlet>
+</outlets>
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional1.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional1.xml?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional1.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional1.xml Fri Nov 19 13:47:50 2010
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<additional>
+  <element/>
+</additional>
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional2.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional2.xml?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional2.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/additional2.xml Fri Nov 19 13:47:50 2010
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<additional>
+  <element/>
+</additional>
\ No newline at end of file

Added: db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/source.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/source.xml?rev=1036838&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/source.xml (added)
+++ db/torque/torque4/trunk/torque-generator/src/test/loadAdditionalSourceTransformer/src/main/torque-gen/src/source.xml Fri Nov 19 13:47:50 2010
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+
+<root>
+  <element>
+    <child/>
+  </element>
+  <element/>
+</root>
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org