You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/07/25 12:25:30 UTC
[15/16] cayenne git commit: CAY-2335: New XML loading/saving
mechanics with support of plugable handlers - new XML loader for DataMap
CAY-2335: New XML loading/saving mechanics with support of plugable handlers
- new XML loader for DataMap
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/70ca3567
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/70ca3567
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/70ca3567
Branch: refs/heads/master
Commit: 70ca3567cf6c53536e9f7b3a9f795964058b2c29
Parents: aab05f3
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Jul 25 12:59:45 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Jul 25 12:59:45 2017 +0300
----------------------------------------------------------------------
.../cayenne/tools/CayenneGeneratorTask.java | 8 +++++-
.../org/apache/cayenne/tools/CayenneTask.java | 11 ++++----
.../apache/cayenne/tools/DbGeneratorTask.java | 2 +-
.../tools/CayenneGeneratorMapLoaderAction.java | 26 ++++++++++++------
.../cayenne/gen/ClassGenerationActionTest.java | 7 +++--
.../reverse/configuration/ToolsModule.java | 12 +++++++-
.../java/org/apache/cayenne/tools/CgenTask.java | 9 +++++-
.../apache/cayenne/tools/DbGenerateTask.java | 13 +++++----
.../cayenne/tools/CayenneGeneratorMojo.java | 12 +++++++-
.../apache/cayenne/tools/DbGeneratorMojo.java | 11 ++++----
.../cayenne/wocompat/EOModelProcessorTest.java | 29 ++++++++------------
11 files changed, 90 insertions(+), 50 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
index d57b350..d468cc9 100644
--- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
+++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
@@ -20,6 +20,9 @@ package org.apache.cayenne.tools;
import foundrylogic.vpp.VPPConfig;
import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
+import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
+import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Injector;
import org.apache.cayenne.gen.ArtifactsGenerationMode;
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.gen.ClientClassGenerationAction;
@@ -27,6 +30,7 @@ import org.apache.cayenne.map.DataMap;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.Path;
import org.apache.velocity.VelocityContext;
+import org.slf4j.LoggerFactory;
import java.io.File;
@@ -102,8 +106,10 @@ public class CayenneGeneratorTask extends CayenneTask {
public void execute() throws BuildException {
validateAttributes();
+ Injector injector = DIBootstrap.createInjector(new ToolsModule(LoggerFactory.getLogger(CayenneGeneratorTask.class)));
+
AntLogger logger = new AntLogger(this);
- CayenneGeneratorMapLoaderAction loadAction = new CayenneGeneratorMapLoaderAction();
+ CayenneGeneratorMapLoaderAction loadAction = new CayenneGeneratorMapLoaderAction(injector);
loadAction.setMainDataMapFile(map);
loadAction.setAdditionalDataMapFiles(additionalMaps);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneTask.java
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneTask.java b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneTask.java
index 2bff0e3..33efff4 100644
--- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneTask.java
+++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneTask.java
@@ -20,19 +20,20 @@
package org.apache.cayenne.tools;
import java.io.File;
+import java.net.URL;
import javax.sql.DataSource;
+import org.apache.cayenne.configuration.DataMapLoader;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.configuration.server.DbAdapterFactory;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.MapLoader;
+import org.apache.cayenne.resource.URLResource;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
-import org.xml.sax.InputSource;
/**
* Base task for all Cayenne ant tasks, providing support for common
@@ -142,9 +143,9 @@ public abstract class CayenneTask extends Task {
}
/** Loads and returns DataMap based on <code>map</code> attribute. */
- protected DataMap loadDataMap() throws Exception {
- InputSource in = new InputSource(map.getCanonicalPath());
- return new MapLoader().loadDataMap(in);
+ protected DataMap loadDataMap(Injector injector) throws Exception {
+ DataMapLoader loader = injector.getInstance(DataMapLoader.class);
+ return loader.load(new URLResource(new URL(map.getCanonicalPath())));
}
protected DbAdapter getAdapter(Injector injector, DataSource dataSource)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java b/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java
index 0e537f7..e781f6f 100644
--- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java
+++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java
@@ -75,7 +75,7 @@ public class DbGeneratorTask extends CayenneTask {
Thread.currentThread().setContextClassLoader(DbGeneratorTask.class.getClassLoader());
// Load the data map and run the db generator.
- DataMap dataMap = loadDataMap();
+ DataMap dataMap = loadDataMap(injector);
// load driver taking custom CLASSPATH into account...
DriverDataSource dataSource = new DriverDataSource((Driver) Class.forName(driver).newInstance(), url,
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-cgen/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
index 1a0a098..0e98e77 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMapLoaderAction.java
@@ -21,10 +21,11 @@ package org.apache.cayenne.tools;
import java.io.File;
import java.net.MalformedURLException;
+import org.apache.cayenne.configuration.DataMapLoader;
+import org.apache.cayenne.di.Injector;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.MapLoader;
-import org.xml.sax.InputSource;
+import org.apache.cayenne.resource.URLResource;
/**
* Loads a DataMap and a shared entity namespace.
@@ -37,11 +38,17 @@ class CayenneGeneratorMapLoaderAction {
private File[] additionalDataMapFiles;
private DataMap mainDataMap;
+ private transient Injector injector;
+
+ CayenneGeneratorMapLoaderAction(Injector injector) {
+ this.injector = injector;
+ }
+
DataMap getMainDataMap() throws MalformedURLException {
if (mainDataMap == null) {
- MapLoader mapLoader = new MapLoader();
+ DataMapLoader loader = createLoader();
- DataMap mainDataMap = loadDataMap(mapLoader, mainDataMapFile);
+ DataMap mainDataMap = loadDataMap(loader, mainDataMapFile);
if (additionalDataMapFiles != null) {
@@ -51,7 +58,7 @@ class CayenneGeneratorMapLoaderAction {
for (File additionalDataMapFile : additionalDataMapFiles) {
- DataMap dataMap = loadDataMap(mapLoader, additionalDataMapFile);
+ DataMap dataMap = loadDataMap(loader, additionalDataMapFile);
entityResolver.addDataMap(dataMap);
dataMap.setNamespace(entityResolver);
}
@@ -63,9 +70,12 @@ class CayenneGeneratorMapLoaderAction {
return mainDataMap;
}
- protected DataMap loadDataMap(MapLoader mapLoader, File dataMapFile) throws MalformedURLException {
- InputSource in = new InputSource(dataMapFile.toURI().toURL().toString());
- return mapLoader.loadDataMap(in);
+ DataMapLoader createLoader() {
+ return injector.getInstance(DataMapLoader.class);
+ }
+
+ protected DataMap loadDataMap(DataMapLoader mapLoader, File dataMapFile) throws MalformedURLException {
+ return mapLoader.load(new URLResource(dataMapFile.toURI().toURL()));
}
void setMainDataMapFile(File mainDataMapFile) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java
index c6e1885..2f911e4 100644
--- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java
+++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java
@@ -46,8 +46,8 @@ public class ClassGenerationActionTest {
@Before
public void setUp() throws Exception {
- this.writers = new ArrayList<StringWriter>(3);
- this.action = new ClassGenerationAction() {
+ writers = new ArrayList<>(3);
+ action = new ClassGenerationAction() {
@Override
protected Writer openWriter(TemplateType templateType) throws Exception {
@@ -56,6 +56,7 @@ public class ClassGenerationActionTest {
return writer;
}
};
+
}
@After
@@ -247,7 +248,7 @@ public class ClassGenerationActionTest {
action.execute(artifact);
- List<String> strings = new ArrayList<String>(writers.size());
+ List<String> strings = new ArrayList<>(writers.size());
for (StringWriter writer : writers) {
strings.add(writer.toString());
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java
index 0c8cb2c..dc057dc 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java
@@ -24,12 +24,17 @@ import org.apache.cayenne.access.translator.batch.DefaultBatchTranslatorFactory;
import org.apache.cayenne.access.types.DefaultValueObjectTypeRegistry;
import org.apache.cayenne.access.types.ValueObjectTypeRegistry;
import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.DataMapLoader;
import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.configuration.server.DataSourceFactory;
import org.apache.cayenne.configuration.server.DbAdapterFactory;
import org.apache.cayenne.configuration.server.DefaultDbAdapterFactory;
import org.apache.cayenne.configuration.server.ServerModule;
+import org.apache.cayenne.configuration.xml.DataChannelMetaData;
+import org.apache.cayenne.configuration.xml.DefaultDataChannelMetaData;
+import org.apache.cayenne.configuration.xml.HandlerFactory;
+import org.apache.cayenne.configuration.xml.XMLDataMapLoader;
import org.apache.cayenne.dba.db2.DB2Sniffer;
import org.apache.cayenne.dba.derby.DerbySniffer;
import org.apache.cayenne.dba.firebird.FirebirdSniffer;
@@ -53,6 +58,7 @@ import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
import org.apache.cayenne.log.Slf4jJdbcEventLogger;
import org.apache.cayenne.log.JdbcEventLogger;
+import org.apache.cayenne.project.extension.ExtensionAwareHandlerFactory;
import org.apache.cayenne.resource.ClassLoaderResourceLocator;
import org.apache.cayenne.resource.ResourceLocator;
import org.slf4j.Logger;
@@ -82,11 +88,11 @@ public class ToolsModule implements Module {
// configure empty global stack properties
ServerModule.contributeProperties(binder);
-
ServerModule.contributeDefaultTypes(binder);
ServerModule.contributeUserTypes(binder);
ServerModule.contributeTypeFactories(binder);
ServerModule.contributeValueObjectTypes(binder);
+
binder.bind(ValueObjectTypeRegistry.class).to(DefaultValueObjectTypeRegistry.class);
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
@@ -106,6 +112,10 @@ public class ToolsModule implements Module {
binder.bind(DbAdapterFactory.class).to(DefaultDbAdapterFactory.class);
binder.bind(DataSourceFactory.class).to(DriverDataSourceFactory.class);
+
+ binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
+ binder.bind(HandlerFactory.class).to(ExtensionAwareHandlerFactory.class);
+ binder.bind(DataChannelMetaData.class).to(DefaultDataChannelMetaData.class);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
index 6b4f4c4..ee39a1c 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
@@ -25,6 +25,9 @@ import java.util.Set;
import groovy.lang.Reference;
import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
+import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
+import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Injector;
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.gen.ClientClassGenerationAction;
import org.apache.cayenne.map.DataMap;
@@ -39,6 +42,7 @@ import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.SourceSetContainer;
import org.gradle.api.tasks.TaskAction;
+import org.slf4j.LoggerFactory;
/**
* @since 4.0
@@ -109,7 +113,10 @@ public class CgenTask extends BaseCayenneTask {
@TaskAction
public void generate() {
File dataMapFile = getDataMapFile();
- CayenneGeneratorMapLoaderAction loaderAction = new CayenneGeneratorMapLoaderAction();
+
+ Injector injector = DIBootstrap.createInjector(new ToolsModule(LoggerFactory.getLogger(CgenTask.class)));
+
+ CayenneGeneratorMapLoaderAction loaderAction = new CayenneGeneratorMapLoaderAction(injector);
loaderAction.setMainDataMapFile(dataMapFile);
CayenneGeneratorEntityFilterAction filterAction = new CayenneGeneratorEntityFilterAction();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java
index 4e5ec39..c562654 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.tools;
import groovy.lang.Closure;
import org.apache.cayenne.access.DbGenerator;
+import org.apache.cayenne.configuration.DataMapLoader;
import org.apache.cayenne.datasource.DataSourceBuilder;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
@@ -31,7 +32,7 @@ import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.log.NoopJdbcEventLogger;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.MapLoader;
+import org.apache.cayenne.resource.URLResource;
import org.apache.cayenne.tools.model.DataSourceConfig;
import org.apache.cayenne.util.Util;
import org.gradle.api.GradleException;
@@ -40,7 +41,6 @@ import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.TaskAction;
-import org.xml.sax.InputSource;
import java.io.File;
import javax.sql.DataSource;
@@ -94,8 +94,10 @@ public class DbGenerateTask extends BaseCayenneTask {
"[dropTables: {}, dropPK: {}, createTables: {}, createPK: {}, createFK: {}]",
dropTables, dropPK, createTables, createPK, createFK);
+ Injector injector = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(getLogger()));
+
try {
- DbGenerator generator = createGenerator(loadDataMap());
+ DbGenerator generator = createGenerator(loadDataMap(injector));
generator.runGenerator(createDataSource());
} catch (Exception ex) {
Throwable th = Util.unwindException(ex);
@@ -136,10 +138,9 @@ public class DbGenerateTask extends BaseCayenneTask {
.build();
}
- DataMap loadDataMap() throws Exception {
+ DataMap loadDataMap(Injector injector) throws Exception {
File dataMapFile = getDataMapFile();
- InputSource inputSource = new InputSource(dataMapFile.getCanonicalPath());
- return new MapLoader().loadDataMap(inputSource);
+ return injector.getInstance(DataMapLoader.class).load(new URLResource(dataMapFile.toURI().toURL()));
}
// setters and getters that will be used by .gradle scripts
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
index 3736cef..6af8b0a 100644
--- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
+++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
@@ -20,6 +20,9 @@
package org.apache.cayenne.tools;
import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
+import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
+import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Injector;
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.gen.ClientClassGenerationAction;
import org.apache.cayenne.map.DataMap;
@@ -30,6 +33,7 @@ import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FilenameFilter;
@@ -181,6 +185,8 @@ public class CayenneGeneratorMojo extends AbstractMojo {
@Parameter(defaultValue = "false")
private boolean createPropertyNames;
+ private transient Injector injector;
+
public void execute() throws MojoExecutionException, MojoFailureException {
// Create the destination directory if necessary.
// TODO: (KJM 11/2/06) The destDir really should be added as a
@@ -189,8 +195,10 @@ public class CayenneGeneratorMojo extends AbstractMojo {
destDir.mkdirs();
}
+ injector = DIBootstrap.createInjector(new ToolsModule(LoggerFactory.getLogger(CayenneGeneratorMojo.class)));
+
Logger logger = new MavenLogger(this);
- CayenneGeneratorMapLoaderAction loaderAction = new CayenneGeneratorMapLoaderAction();
+ CayenneGeneratorMapLoaderAction loaderAction = new CayenneGeneratorMapLoaderAction(injector);
loaderAction.setMainDataMapFile(map);
CayenneGeneratorEntityFilterAction filterAction = new CayenneGeneratorEntityFilterAction();
@@ -256,6 +264,8 @@ public class CayenneGeneratorMojo extends AbstractMojo {
action = new ClassGenerationAction();
}
+ injector.injectMembers(action);
+
action.setDestDir(destDir);
action.setEncoding(encoding);
action.setMakePairs(makePairs);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java
index 131f3de..cd47dc3 100644
--- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java
+++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.tools;
import org.apache.cayenne.access.DbGenerator;
+import org.apache.cayenne.configuration.DataMapLoader;
import org.apache.cayenne.datasource.DriverDataSource;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
@@ -29,8 +30,8 @@ import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.log.NoopJdbcEventLogger;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.MapLoader;
import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule;
+import org.apache.cayenne.resource.URLResource;
import org.apache.cayenne.util.Util;
import org.slf4j.Logger;
import org.apache.maven.plugin.AbstractMojo;
@@ -39,7 +40,6 @@ import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
-import org.xml.sax.InputSource;
import java.io.File;
import java.sql.Driver;
@@ -140,7 +140,7 @@ public class DbGeneratorMojo extends AbstractMojo {
objectFactory.newInstance(DbAdapter.class, adapter);
// Load the data map and run the db generator.
- DataMap dataMap = loadDataMap();
+ DataMap dataMap = loadDataMap(injector);
DbGenerator generator = new DbGenerator(adapterInst, dataMap, NoopJdbcEventLogger.getInstance());
generator.setShouldCreateFKConstraints(createFK);
generator.setShouldCreatePKSupport(createPK);
@@ -165,9 +165,8 @@ public class DbGeneratorMojo extends AbstractMojo {
}
/** Loads and returns DataMap based on <code>map</code> attribute. */
- private DataMap loadDataMap() throws Exception {
- InputSource in = new InputSource(map.getCanonicalPath());
- return new MapLoader().loadDataMap(in);
+ private DataMap loadDataMap(Injector injector) throws Exception {
+ return injector.getInstance(DataMapLoader.class).load(new URLResource(map.toURI().toURL()));
}
@Deprecated
http://git-wip-us.apache.org/repos/asf/cayenne/blob/70ca3567/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/EOModelProcessorTest.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/EOModelProcessorTest.java b/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/EOModelProcessorTest.java
index 4010a9b..e1faf72 100644
--- a/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/EOModelProcessorTest.java
+++ b/modeler/cayenne-wocompat/src/test/java/org/apache/cayenne/wocompat/EOModelProcessorTest.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.wocompat;
+import org.apache.cayenne.configuration.EmptyConfigurationNodeVisitor;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -65,8 +66,7 @@ public class EOModelProcessorTest {
@Test
public void testLoadModelWithDependencies() throws Exception {
- URL url = getClass().getClassLoader().getResource(
- "wotests/cross-model-relationships.eomodeld/");
+ URL url = getClass().getClassLoader().getResource("wotests/cross-model-relationships.eomodeld/");
assertNotNull(url);
DataMap map = processor.loadEOModel(url);
@@ -74,7 +74,7 @@ public class EOModelProcessorTest {
ObjEntity entity = map.getObjEntity("CrossModelRelTest");
assertNotNull(entity);
- ObjAttribute a1 = (ObjAttribute) entity.getAttribute("testAttribute");
+ ObjAttribute a1 = entity.getAttribute("testAttribute");
assertNotNull(a1);
DbAttribute da1 = a1.getDbAttribute();
@@ -115,11 +115,8 @@ public class EOModelProcessorTest {
// - Db loaded as two-way, obj - as one-way
ObjEntity exhibitEntity = map.getObjEntity("Exhibit");
- ObjRelationship toTypeObject = (ObjRelationship) exhibitEntity
- .getRelationship("toExhibitType");
- DbRelationship toTypeDB = (DbRelationship) exhibitEntity
- .getDbEntity()
- .getRelationship("toExhibitType");
+ ObjRelationship toTypeObject = exhibitEntity.getRelationship("toExhibitType");
+ DbRelationship toTypeDB = exhibitEntity.getDbEntity().getRelationship("toExhibitType");
assertNotNull(toTypeObject);
assertNotNull(toTypeDB);
assertNull(toTypeObject.getReverseRelationship());
@@ -144,11 +141,11 @@ public class EOModelProcessorTest {
ObjEntity customTypes = map.getObjEntity("CustomTypes");
assertNotNull(customTypes);
- ObjAttribute pk = (ObjAttribute) customTypes.getAttribute("pk");
+ ObjAttribute pk = customTypes.getAttribute("pk");
assertNotNull(pk);
assertEquals("CustomType1", pk.getType());
- ObjAttribute other = (ObjAttribute) customTypes.getAttribute("other");
+ ObjAttribute other = customTypes.getAttribute("other");
assertNotNull(other);
assertEquals("CustomType2", other.getType());
}
@@ -168,7 +165,7 @@ public class EOModelProcessorTest {
assertSame(artistDE, artistDE1);
// check attributes
- ObjAttribute a1 = (ObjAttribute) artistE.getAttribute("artistName");
+ ObjAttribute a1 = artistE.getAttribute("artistName");
assertNotNull(a1);
DbAttribute da1 = a1.getDbAttribute();
@@ -176,25 +173,23 @@ public class EOModelProcessorTest {
assertSame(da1, artistDE.getAttribute("ARTIST_NAME"));
// check ObjRelationships
- ObjRelationship rel = (ObjRelationship) artistE
- .getRelationship("artistExhibitArray");
+ ObjRelationship rel = artistE.getRelationship("artistExhibitArray");
assertNotNull(rel);
assertEquals(1, rel.getDbRelationships().size());
// check DbRelationships
- DbRelationship drel = (DbRelationship) artistDE
- .getRelationship("artistExhibitArray");
+ DbRelationship drel = artistDE.getRelationship("artistExhibitArray");
assertNotNull(drel);
assertSame(drel, rel.getDbRelationships().get(0));
// flattened relationships
- ObjRelationship frel = (ObjRelationship) artistE.getRelationship("exhibitArray");
+ ObjRelationship frel = artistE.getRelationship("exhibitArray");
assertNotNull(frel);
assertEquals(2, frel.getDbRelationships().size());
// storing data map may uncover some inconsistencies
PrintWriter mockupWriter = new NullPrintWriter();
- map.encodeAsXML(new XMLEncoder(mockupWriter));
+ map.encodeAsXML(new XMLEncoder(mockupWriter), new EmptyConfigurationNodeVisitor());
}
class NullPrintWriter extends PrintWriter {