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 2011/11/22 03:31:29 UTC
svn commit: r1204787 - in /db/torque/torque4/trunk:
maven-torque-generator-plugin/src/main/java/org/apache/torque/generator/maven/
torque-ant-tasks/src/main/java/org/apache/torque/ant/task/
torque-generator/src/main/java/org/apache/torque/generator/con...
Author: tfischer
Date: Tue Nov 22 02:31:26 2011
New Revision: 1204787
URL: http://svn.apache.org/viewvc?rev=1204787&view=rev
Log:
- TORQUE-173: Add possibility to combine all read files into one source tree
- Fix basis output directory for modifiable sources in maven generator plugin
Added:
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/CombinedFileSource.java
Modified:
db/torque/torque4/trunk/maven-torque-generator-plugin/src/main/java/org/apache/torque/generator/maven/TorqueGeneratorMojo.java
db/torque/torque4/trunk/torque-ant-tasks/src/main/java/org/apache/torque/ant/task/TorqueGeneratorTask.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/FileSourceSaxHandler.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceConfigurationTags.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/control/Controller.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/SourceProvider.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/jdbc/JdbcMetadataSourceProvider.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/FileSourceProvider.java
db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java
db/torque/torque4/trunk/torque-generator/src/main/resources/org/apache/torque/generator/configuration/configuration.xsd
db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen-parent/conf/control.xml
db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen/conf/control.xml
db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/configuration/ReadConfigurationTest.java
db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/stream/FileSourceProviderTest.java
Modified: db/torque/torque4/trunk/maven-torque-generator-plugin/src/main/java/org/apache/torque/generator/maven/TorqueGeneratorMojo.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/maven-torque-generator-plugin/src/main/java/org/apache/torque/generator/maven/TorqueGeneratorMojo.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/maven-torque-generator-plugin/src/main/java/org/apache/torque/generator/maven/TorqueGeneratorMojo.java (original)
+++ db/torque/torque4/trunk/maven-torque-generator-plugin/src/main/java/org/apache/torque/generator/maven/TorqueGeneratorMojo.java Tue Nov 22 02:31:26 2011
@@ -201,6 +201,31 @@ public class TorqueGeneratorMojo extends
private Set<String> sourceExcludes;
/**
+ * Whether all source files should be combined into one source tree.
+ * If false, each source file will be read in its own source tree
+ * and start a new generation run.
+ * If true, a single source tree with the following structure will be
+ * built from all source files:
+ * <source>
+ * <file path="path/to/file1">
+ * <rootOfFile1>
+ * ...
+ * </rootOfFile1>
+ * </file>
+ * <file path="path/to/file2">
+ * <rootOfFile2>
+ * ...
+ * </rootOfFile2>
+ * </file>
+ * ...
+ * </source>
+ * If not set, the settings from the templates will be used.
+ *
+ * @parameter
+ */
+ private Boolean combineFiles;
+
+ /**
* The default base output directory for the generated files.
* Whether the configured templates use this directory or not,
* is up to the templates; check the template documentation.
@@ -458,8 +483,10 @@ public class TorqueGeneratorMojo extends
+ sourceExcludes);
try
{
- fileSourceProvider
- = new FileSourceProvider(null, sourceFileset);
+ fileSourceProvider = new FileSourceProvider(
+ null,
+ sourceFileset,
+ combineFiles);
}
catch (ConfigurationException e)
{
@@ -478,7 +505,7 @@ public class TorqueGeneratorMojo extends
{
outputDirMap.put(
Maven2ProjectPaths.MODIFIABLE_OUTPUT_DIR_KEY,
- new File(project.getBuild().getDirectory()
+ new File(project.getBasedir()
+ "/"
+ Maven2ProjectPaths.MODIFIABLE_OUTPUT_DIR));
}
Modified: db/torque/torque4/trunk/torque-ant-tasks/src/main/java/org/apache/torque/ant/task/TorqueGeneratorTask.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-ant-tasks/src/main/java/org/apache/torque/ant/task/TorqueGeneratorTask.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-ant-tasks/src/main/java/org/apache/torque/ant/task/TorqueGeneratorTask.java (original)
+++ db/torque/torque4/trunk/torque-ant-tasks/src/main/java/org/apache/torque/ant/task/TorqueGeneratorTask.java Tue Nov 22 02:31:26 2011
@@ -133,6 +133,29 @@ public class TorqueGeneratorTask extends
*/
private String loglevel;
+ /**
+ * Whether all source files should be combined into one source tree.
+ * If false, each source file will be read in its own source tree
+ * and start a new generation run.
+ * If true, a single source tree with the following structure will be
+ * built from all source files:
+ * <source>
+ * <file path="path/to/file1">
+ * <rootOfFile1>
+ * ...
+ * </rootOfFile1>
+ * </file>
+ * <file path="path/to/file2">
+ * <rootOfFile2>
+ * ...
+ * </rootOfFile2>
+ * </file>
+ * ...
+ * </source>
+ * If not set, the settings from the templates will be used.
+ */
+ private Boolean combineFiles;
+
/** The list of options for the generation task. */
private List<Option> options = new ArrayList<Option>();
@@ -242,8 +265,10 @@ public class TorqueGeneratorTask extends
Project.MSG_DEBUG);
try
{
- fileSourceProvider
- = new FileSourceProvider(null, sourceFileset);
+ fileSourceProvider = new FileSourceProvider(
+ null,
+ sourceFileset,
+ combineFiles);
}
catch (ConfigurationException e)
{
@@ -446,4 +471,32 @@ public class TorqueGeneratorTask extends
{
this.loglevel = loglevel;
}
+
+ /**
+ * Sets whether all source files should be combined into one source tree.
+ * If false, each source file will be read in its own source tree
+ * and start a new generation run.
+ * If true, a single source tree with the following structure will be
+ * built from all source files:
+ * <source>
+ * <file path="path/to/file1">
+ * <rootOfFile1>
+ * ...
+ * </rootOfFile1>
+ * </file>
+ * <file path="path/to/file2">
+ * <rootOfFile2>
+ * ...
+ * </rootOfFile2>
+ * </file>
+ * ...
+ * </source>
+ * If not set, the settings from the templates will be used.
+ *
+ * @param combineFiles whether all sources should be combined.
+ */
+ public void setCombineFiles(Boolean combineFiles)
+ {
+ this.combineFiles = combineFiles;
+ }
}
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/FileSourceSaxHandler.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/FileSourceSaxHandler.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/FileSourceSaxHandler.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/FileSourceSaxHandler.java Tue Nov 22 02:31:26 2011
@@ -19,6 +19,7 @@ package org.apache.torque.generator.conf
* under the License.
*/
+import static org.apache.torque.generator.configuration.source.SourceConfigurationTags.COMBINE_FILES_ATTRIBUTE;
import static org.apache.torque.generator.configuration.source.SourceConfigurationTags.EXCLUDE_TAG;
import static org.apache.torque.generator.configuration.source.SourceConfigurationTags.FORMAT_ATTRIBUTE;
import static org.apache.torque.generator.configuration.source.SourceConfigurationTags.INCLUDE_TAG;
@@ -30,6 +31,7 @@ import java.util.Set;
import org.apache.torque.generator.configuration.ConfigurationException;
import org.apache.torque.generator.configuration.ConfigurationHandlers;
import org.apache.torque.generator.configuration.ConfigurationProvider;
+import org.apache.torque.generator.configuration.SaxHelper;
import org.apache.torque.generator.configuration.paths.ProjectPaths;
import org.apache.torque.generator.file.Fileset;
import org.apache.torque.generator.source.SourceProvider;
@@ -52,6 +54,9 @@ public class FileSourceSaxHandler extend
/** The source file names which should be excluded from generation. */
private Set<String> excludes = new HashSet<String>();
+ /** Whether to combine all source files. */
+ private Boolean combineFiles;
+
/**
* The string builder for an include definition.
* Not null if an include tag is currently parsed.
@@ -107,6 +112,13 @@ public class FileSourceSaxHandler extend
{
super.startElement(uri, localName, rawName, attributes);
format = attributes.getValue(FORMAT_ATTRIBUTE);
+ if (attributes.getValue(COMBINE_FILES_ATTRIBUTE) != null)
+ {
+ combineFiles = SaxHelper.getBooleanAttribute(
+ COMBINE_FILES_ATTRIBUTE,
+ attributes,
+ "the element " + SOURCE_TAG);
+ }
}
else
{
@@ -162,7 +174,8 @@ public class FileSourceSaxHandler extend
sourceProvider = new FileSourceProvider(
sourceFormat,
- sourceFileset);
+ sourceFileset,
+ combineFiles);
}
catch (ConfigurationException e)
{
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceConfigurationTags.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceConfigurationTags.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceConfigurationTags.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/source/SourceConfigurationTags.java Tue Nov 22 02:31:26 2011
@@ -43,6 +43,9 @@ public final class SourceConfigurationTa
/** Attribute name for the "format" attribute. */
public static final String FORMAT_ATTRIBUTE = "format";
+ /** Attribute name for the "combineFiles" attribute. */
+ public static final String COMBINE_FILES_ATTRIBUTE = "combineFiles";
+
/** Tag name for the "transformer" tag. */
public static final String TRANSFORMER_TAG = "transformer";
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/control/Controller.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/control/Controller.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/control/Controller.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/control/Controller.java Tue Nov 22 02:31:26 2011
@@ -194,7 +194,7 @@ public class Controller
UnitConfiguration unitConfiguration)
throws GeneratorException
{
- log.debug("Processing output " + output.getFilename());
+ log.info("Processing output " + output.getName());
controllerState.setOutput(output);
SourceProvider sourceProvider = output.getSourceProvider();
@@ -202,12 +202,8 @@ public class Controller
= unitConfiguration.getOverrideSourceProvider();
if (overrideSourceProvider != null)
{
- if (overrideSourceProvider.isInit())
- {
- overrideSourceProvider.reset(
- unitConfiguration.getConfigurationHandlers(),
- controllerState);
- }
+ overrideSourceProvider = overrideSourceProvider.copy();
+ overrideSourceProvider.copyNotSetSettingsFrom(sourceProvider);
sourceProvider = overrideSourceProvider;
}
controllerState.setSourceProvider(sourceProvider);
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/SourceProvider.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/SourceProvider.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/SourceProvider.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/SourceProvider.java Tue Nov 22 02:31:26 2011
@@ -135,4 +135,15 @@ public abstract class SourceProvider imp
* be initialized.
*/
public abstract SourceProvider copy() throws ConfigurationException;
+
+ /**
+ * Copies settings which are not set in this source provider from another
+ * source provider. This only works if the type of the other source
+ * provider is known to this source provider.
+ * Only a subset of all properties are typically used for overwriting.
+ * No Properties which are already set are overwritten.
+ *
+ * @param sourceProvider the source provoder to copy the settings from.
+ */
+ public abstract void copyNotSetSettingsFrom(SourceProvider sourceProvider);
}
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/jdbc/JdbcMetadataSourceProvider.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/jdbc/JdbcMetadataSourceProvider.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/jdbc/JdbcMetadataSourceProvider.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/jdbc/JdbcMetadataSourceProvider.java Tue Nov 22 02:31:26 2011
@@ -216,4 +216,13 @@ public class JdbcMetadataSourceProvider
schemaOption);
return result;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void copyNotSetSettingsFrom(SourceProvider sourceProvider)
+ {
+ // do nothing.
+ }
+
}
Added: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/CombinedFileSource.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/CombinedFileSource.java?rev=1204787&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/CombinedFileSource.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/CombinedFileSource.java Tue Nov 22 02:31:26 2011
@@ -0,0 +1,159 @@
+package org.apache.torque.generator.source.stream;
+
+/*
+ * 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.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.torque.generator.source.SourceElement;
+import org.apache.torque.generator.source.SourceException;
+import org.apache.torque.generator.source.SourceImpl;
+
+/**
+ * A source which uses several files as input and combines them into one file.
+ * The source tree will look as follows:
+ * <source>
+ * <file path="path/to/file1">
+ * <rootOfFile1>
+ * ...
+ * </rootOfFile1>
+ * </file>
+ * <file path="path/to/file2">
+ * <rootOfFile2>
+ * ...
+ * </rootOfFile2>
+ * </file>
+ * ...
+ * </source>
+ */
+public class CombinedFileSource extends SourceImpl
+{
+ /** The name of the root element of the produced source tree. */
+ public static final String ROOT_ELEMENT_NAME = "source";
+
+ /** The name of the root element's children of the produced source tree. */
+ public static final String FILE_ELEMENT_NAME = "file";
+
+ /** The name of the path attribute of the file elements. */
+ public static final String PATH_ATTRIBUTE_NAME = "path";
+
+ /**
+ * The log of the class.
+ */
+ private static Log log = LogFactory.getLog(CombinedFileSource.class);
+
+ /**
+ * The list of contained file sources, not null..
+ */
+ private List<FileSource> fileSources;
+
+ /**
+ * Constructor.
+ *
+ * @param fileSources the file sources, not null.
+ *
+ * @throws NullPointerException if path or format is null.
+ */
+ public CombinedFileSource(
+ Collection<FileSource> fileSources)
+ {
+ if (fileSources == null)
+ {
+ throw new NullPointerException("path must not be null");
+ }
+ this.fileSources = new ArrayList<FileSource>(fileSources);
+ }
+
+ /**
+ * Reads and parses the input file and creates the element tree from it.
+ *
+ * @throws SourceException if the input file cannot be read or parsed.
+ *
+ * @return the root element of the element tree.
+ */
+ @Override
+ public SourceElement createRootElement() throws SourceException
+ {
+ if (log.isDebugEnabled())
+ {
+ log.debug("start creating root Element");
+ }
+
+ SourceElement result = new SourceElement(ROOT_ELEMENT_NAME);
+ for (FileSource fileSource : fileSources)
+ {
+ SourceElement fileElement = new SourceElement(FILE_ELEMENT_NAME);
+ fileElement.setAttribute(
+ PATH_ATTRIBUTE_NAME,
+ fileSource.getPath().getPath());
+ fileElement.getChildren().add(fileSource.getRootElement());
+ result.getChildren().add(fileElement);
+ }
+
+ if (log.isDebugEnabled())
+ {
+ log.debug("finished creating root Element, source is\n"
+ + new SourceToXml().toXml(result, true));
+ }
+ return result;
+ }
+
+ /**
+ * Returns the path of the files as a description.
+ *
+ * @return path of the files,separated by a semicolon, not null.
+ *
+ * @see org.apache.torque.generator.source.Source#getDescription()
+ */
+ public String getDescription()
+ {
+ StringBuilder result = new StringBuilder();
+ for (FileSource fileSource : fileSources)
+ {
+ if (result.length() > 0)
+ {
+ result.append(';');
+ }
+ result.append(fileSource.getPath());
+ }
+ return result.toString();
+ }
+
+ /**
+ * Returns the source file, if applicable. As no single source file
+ * exists, the method returns always null.
+ *
+ * @return null.
+ */
+ public File getSourceFile()
+ {
+ return null;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getDescription();
+ }
+}
Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/FileSourceProvider.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/FileSourceProvider.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/FileSourceProvider.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/stream/FileSourceProvider.java Tue Nov 22 02:31:26 2011
@@ -21,6 +21,7 @@ package org.apache.torque.generator.sour
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -54,6 +55,13 @@ public class FileSourceProvider extends
/** The fileset defining the source files, not null. */
private Fileset sourceFileset;
+ /**
+ * Whether all files should be combined into one source tree.
+ * Null to allow overriding this property (but will count as false
+ * if not overridden).
+ */
+ private Boolean combineFiles;
+
/** The paths of all contained Files. */
private List<File> paths;
@@ -73,11 +81,8 @@ public class FileSourceProvider extends
* @param sourceFormat the source format, or null if the source format
* should be determined from the file extension.
* @param sourceFileset the fileset defining the source files, not null.
- * @param elements the path to the source elements to read, or null
- * if the root element should be used.
- * @param sourceFilter the fully qualified class name of the source filter,
- * or null. The referenced class must have a standard constructor.
- * @param configurationHandlers All known configuration handlers, not null.
+ * @param combineFiles whether all files should be combined into
+ * one source tree.
*
* @throws IllegalArgumentException if the source type is unknown.
* @throws NullPointerException if path is null.
@@ -86,7 +91,8 @@ public class FileSourceProvider extends
*/
public FileSourceProvider(
StreamSourceFormat sourceFormat,
- Fileset sourceFileset)
+ Fileset sourceFileset,
+ Boolean combineFiles)
throws ConfigurationException
{
if (sourceFileset == null)
@@ -95,6 +101,7 @@ public class FileSourceProvider extends
}
this.sourceFormat = sourceFormat;
this.sourceFileset = sourceFileset;
+ this.combineFiles = combineFiles;
}
/**
@@ -164,6 +171,23 @@ public class FileSourceProvider extends
"init() must be called on this SourceProvider "
+ "before hasNext can be called");
}
+ if (combineFiles == null || !combineFiles)
+ {
+ return getNextFileSource();
+ }
+ else
+ {
+ List<FileSource> fileSources = new ArrayList<FileSource>();
+ while (pathIt.hasNext())
+ {
+ fileSources.add(getNextFileSource());
+ }
+ return new CombinedFileSource(fileSources);
+ }
+ }
+
+ private FileSource getNextFileSource()
+ {
File currentPath = pathIt.next();
StreamSourceFormat currentSourceFormat = sourceFormat;
if (currentSourceFormat == null)
@@ -270,13 +294,56 @@ public class FileSourceProvider extends
}
/**
+ * Returns whether source files are combined into one source tree.
+ *
+ * @return true if the source files are combined into one source tree,
+ * false otherwise, null to allow overriding this property
+ * (but will count as false if not overridden).
+ */
+ public Boolean getCombineFiles()
+ {
+ return combineFiles;
+ }
+
+ /**
* {@inheritDoc}
*/
public SourceProvider copy() throws ConfigurationException
{
FileSourceProvider result = new FileSourceProvider(
sourceFormat,
- sourceFileset);
+ sourceFileset,
+ combineFiles);
return result;
}
+
+ /**
+ * Copies settings which are not set in this source provider from another
+ * source provider. This only works if the type of the other source
+ * provider is known to this source provider.
+ * Only a subset of all properties are typically used for overwriting.
+ * No Properties which are already set are overwritten.
+ *
+ * @param sourceProvider the source provoder to copy the settings from.
+ */
+ public void copyNotSetSettingsFrom(SourceProvider sourceProvider)
+ {
+ if (sourceProvider == null)
+ {
+ return;
+ }
+ if (!(sourceProvider instanceof FileSourceProvider))
+ {
+ return;
+ }
+ FileSourceProvider fileSourceProvider
+ = (FileSourceProvider) sourceProvider;
+ if (combineFiles == null)
+ {
+ log.debug("copying combineFiles property"
+ + " from other source provider");
+ combineFiles = fileSourceProvider.getCombineFiles();
+ }
+ }
+
}
Modified: 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=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/source/transform/LoadAdditionalSourceTransformer.java Tue Nov 22 02:31:26 2011
@@ -121,7 +121,8 @@ public class LoadAdditionalSourceTransfo
new Fileset(
controllerState.getSourceFile().getParentFile(),
fileIncludes,
- fileExcludes));
+ fileExcludes),
+ false);
fileSourceProvider.init(configurationHandlers, controllerState);
}
catch (ConfigurationException e)
Modified: db/torque/torque4/trunk/torque-generator/src/main/resources/org/apache/torque/generator/configuration/configuration.xsd
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/resources/org/apache/torque/generator/configuration/configuration.xsd?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/resources/org/apache/torque/generator/configuration/configuration.xsd (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/resources/org/apache/torque/generator/configuration/configuration.xsd Tue Nov 22 02:31:26 2011
@@ -206,6 +206,19 @@
<element name="exclude" type="string" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="format" type="string" use="optional"/>
+ <attribute name="combineFiles" type="boolean" use="optional">
+ <annotation>
+ <documentation>
+ Whether to combine all source files in a single source tree.
+ Default is false. If true, the name of the source tree's root
+ element will be source. Each loaded source file will be put
+ into a child element with element name file. The root element
+ of the single file will be the only child element of the file
+ element. The name of the file will be put into the attribute
+ path of the file element.
+ </documentation>
+ </annotation>
+ </attribute>
</extension>
</complexContent>
</complexType>
Modified: db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen-parent/conf/control.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen-parent/conf/control.xml?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen-parent/conf/control.xml (original)
+++ db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen-parent/conf/control.xml Tue Nov 22 02:31:26 2011
@@ -41,6 +41,7 @@
<source xsi:type="fileSource"
elements="parentSourceElement"
format="xml"
+ combineFiles="false"
skipDecider="org.apache.torque.generator.configuration.OtherConfigurationTestSkipDecider">
<transformer elements="parent/database"
class="org.apache.torque.generator.configuration.OtherConfigurationTestTransformer" />
Modified: db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen/conf/control.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen/conf/control.xml?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen/conf/control.xml (original)
+++ db/torque/torque4/trunk/torque-generator/src/test/configuration/src/main/torque-gen/conf/control.xml Tue Nov 22 02:31:26 2011
@@ -47,6 +47,7 @@
<source xsi:type="fileSource"
elements="properties/entry"
format="properties"
+ combineFiles="true"
skipDecider="org.apache.torque.generator.configuration.ConfigurationTestSkipDecider">
<transformer class="org.apache.torque.generator.configuration.ConfigurationTestTransformer" />
<transformer elements="database"
Modified: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/configuration/ReadConfigurationTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/configuration/ReadConfigurationTest.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/configuration/ReadConfigurationTest.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/configuration/ReadConfigurationTest.java Tue Nov 22 02:31:26 2011
@@ -218,7 +218,8 @@ public class ReadConfigurationTest exten
new HashSet<String>());
FileSourceProvider sourceProvider = new FileSourceProvider(
new XmlSourceFormat(),
- sourceFileset);
+ sourceFileset,
+ null);
sourceProvider.init(
configurationHandlers,
controllerState);
@@ -284,7 +285,8 @@ public class ReadConfigurationTest exten
createSetFrom("second.excluded.properties"));
FileSourceProvider sourceProvider = new FileSourceProvider(
new PropertiesSourceFormat(),
- sourceFileset);
+ sourceFileset,
+ true);
sourceProvider.init(
configurationHandlers,
controllerState);
@@ -697,7 +699,8 @@ public class ReadConfigurationTest exten
new HashSet<String>());
FileSourceProvider sourceProvider = new FileSourceProvider(
new XmlSourceFormat(),
- sourceFileset);
+ sourceFileset,
+ false);
output.getSourceProvider().init(
configurationHandlers,
controllerState);
@@ -767,7 +770,8 @@ public class ReadConfigurationTest exten
new HashSet<String>());
FileSourceProvider sourceProvider = new FileSourceProvider(
new XmlSourceFormat(),
- sourceFileset);
+ sourceFileset,
+ null);
sourceProvider.init(
configurationHandlers,
controllerState);
@@ -829,7 +833,8 @@ public class ReadConfigurationTest exten
createSetFrom("second.excluded.properties"));
FileSourceProvider sourceProvider = new FileSourceProvider(
new PropertiesSourceFormat(),
- sourceFileset);
+ sourceFileset,
+ true);
sourceProvider.init(
configurationHandlers,
controllerState);
@@ -1023,6 +1028,9 @@ public class ReadConfigurationTest exten
assertEquals(
expected.getPaths(),
actual.getPaths());
+ assertEquals(
+ expected.getCombineFiles(),
+ actual.getCombineFiles());
}
private static void assertJdbcMetadataSourceProviderEquals(
Modified: db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/stream/FileSourceProviderTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/stream/FileSourceProviderTest.java?rev=1204787&r1=1204786&r2=1204787&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/stream/FileSourceProviderTest.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/test/java/org/apache/torque/generator/source/stream/FileSourceProviderTest.java Tue Nov 22 02:31:26 2011
@@ -21,8 +21,8 @@ package org.apache.torque.generator.sour
import static org.apache.torque.generator.file.FileTestUtils.createSetFrom;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.HashSet;
@@ -49,7 +49,7 @@ public class FileSourceProviderTest
createSetFrom("*.properties"),
null);
FileSourceProvider fileSourceProvider
- = new FileSourceProvider(null, fileset);
+ = new FileSourceProvider(null, fileset, false);
fileSourceProvider.init(
new ConfigurationHandlers(),
new ControllerState());
@@ -79,6 +79,62 @@ public class FileSourceProviderTest
assertEquals(expectedKeys, resultKeys);
}
+ @Test
+ public void testReadFilesCombineFiles()
+ throws ConfigurationException, SourceException
+ {
+ Fileset fileset = new Fileset(
+ TEST_BASE_DIR,
+ createSetFrom("*.properties"),
+ null);
+ FileSourceProvider fileSourceProvider
+ = new FileSourceProvider(null, fileset, true);
+ fileSourceProvider.init(
+ new ConfigurationHandlers(),
+ new ControllerState());
+
+ // We read all sources and add the first property key to a hash set.
+ // As all the source files only have one key equal to the base filename
+ // we can make sure we have read the expected files correctly.
+ Set<String> resultKeys = new HashSet<String>();
+ assertTrue(fileSourceProvider.hasNext());
+ Source source = fileSourceProvider.next();
+
+ assertEquals(2, source.getRootElement().getChildren("file").size());
+ Object key = source.getRootElement()
+ .getChildren("file").get(0)
+ .getChild("properties")
+ .getChild("entry")
+ .getAttribute("key");
+ resultKeys.add((String) key);
+ key = source.getRootElement()
+ .getChildren("file").get(1)
+ .getChild("properties")
+ .getChild("entry")
+ .getAttribute("key");
+ resultKeys.add((String) key);
+ Set<String> expectedKeys = new HashSet<String>();
+ expectedKeys.add("1");
+ expectedKeys.add("11");
+ assertEquals(expectedKeys, resultKeys);
+
+ Set<String> resultPaths = new HashSet<String>();
+ String expectedPath = (String) source.getRootElement()
+ .getChildren("file").get(0).getAttribute("path");
+ expectedPath = expectedPath.replace('\\', '/');
+ resultPaths.add(expectedPath);
+ expectedPath = (String) source.getRootElement()
+ .getChildren("file").get(1).getAttribute("path");
+ expectedPath = expectedPath.replace('\\', '/');
+ resultPaths.add(expectedPath);
+ Set<String> expectedPaths = new HashSet<String>();
+ expectedPaths.add("src/test/file/./1.properties");
+ expectedPaths.add("src/test/file/./11.properties");
+ assertEquals(expectedPaths, resultPaths);
+
+ assertFalse(fileSourceProvider.hasNext());
+ }
+
@Test(expected = ConfigurationException.class)
public void testReadFilesBasedirNull()
throws ConfigurationException, SourceException
@@ -88,7 +144,7 @@ public class FileSourceProviderTest
createSetFrom("*.properties"),
null);
FileSourceProvider fileSourceProvider
- = new FileSourceProvider(null, fileset);
+ = new FileSourceProvider(null, fileset, false);
fileSourceProvider.init(
new ConfigurationHandlers(),
new ControllerState());
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org