You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2012/11/11 10:13:26 UTC
svn commit: r1407929 - in /cayenne/main/trunk/framework/cayenne-tools/src:
main/java/org/apache/cayenne/tools/dbimport/DbImportAction.java
test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
Author: aadamchik
Date: Sun Nov 11 09:13:25 2012
New Revision: 1407929
URL: http://svn.apache.org/viewvc?rev=1407929&view=rev
Log:
CAY-1758 cdbimport improvements
fixing NPE on save of the existing datamap
Modified:
cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportAction.java
cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportAction.java?rev=1407929&r1=1407928&r2=1407929&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportAction.java Sun Nov 11 09:13:25 2012
@@ -201,15 +201,13 @@ public class DbImportAction {
dataMap.clearResultSets();
}
} else {
-
- // the name and URL are important for the save to work
String dataMapName = name.substring(0, name.length() - DATA_MAP_LOCATION_SUFFIX.length());
- URL dataMapUrl = dataMapFile.toURI().toURL();
-
dataMap = new DataMap(dataMapName);
- dataMap.setConfigurationSource(new URLResource(dataMapUrl));
}
+ URL dataMapUrl = dataMapFile.toURI().toURL();
+ dataMap.setConfigurationSource(new URLResource(dataMapUrl));
+
// update map defaults
// do not override default package of existing DataMap unless it is
Modified: cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java?rev=1407929&r1=1407928&r2=1407929&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DbImportActionTest.java Sun Nov 11 09:13:25 2012
@@ -21,6 +21,8 @@ package org.apache.cayenne.tools.dbimpor
import static org.mockito.Mockito.mock;
import java.io.File;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Connection;
@@ -32,9 +34,11 @@ import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.resource.URLResource;
import org.apache.cayenne.tools.configuration.ToolsModule;
import org.apache.cayenne.util.Util;
+import org.apache.cayenne.util.XMLEncoder;
import org.apache.commons.logging.Log;
public class DbImportActionTest extends TestCase {
@@ -113,16 +117,13 @@ public class DbImportActionTest extends
assertTrue("Has no project version saved", contents.contains("project-version=\""));
}
- public void testCreateDataMap() throws Exception {
+ public void testCreateDataMap_New() throws Exception {
Log log = mock(Log.class);
Injector i = DIBootstrap.createInjector(new ToolsModule(log), new DbImportModule());
DbImportAction action = i.getInstance(DbImportAction.class);
- String packagePath = getClass().getPackage().getName().replace('.', '/');
- URL packageUrl = getClass().getClassLoader().getResource(packagePath);
- assertNotNull(packageUrl);
- URL outUrl = new URL(packageUrl, "dbimport/testCreateDataMap1.map.xml");
+ URL outUrl = dataMapUrl("testCreateDataMap1.map.xml");
File out = new File(outUrl.toURI());
out.delete();
@@ -134,4 +135,39 @@ public class DbImportActionTest extends
assertEquals("testCreateDataMap1", dataMap.getName());
assertEquals(outUrl, dataMap.getConfigurationSource().getURL());
}
+
+ public void testCreateDataMap_Existing() throws Exception {
+
+ URL outUrl = dataMapUrl("testCreateDataMap2.map.xml");
+
+ File out = new File(outUrl.toURI());
+ out.delete();
+ assertFalse(out.isFile());
+
+ DataMap tempMap = new DataMap();
+ tempMap.addDbEntity(new DbEntity("X"));
+
+ PrintWriter writer = new PrintWriter(out);
+ tempMap.encodeAsXML(new XMLEncoder(writer));
+ writer.close();
+ assertTrue(out.isFile());
+
+ Log log = mock(Log.class);
+ Injector i = DIBootstrap.createInjector(new ToolsModule(log), new DbImportModule());
+
+ DbImportAction action = i.getInstance(DbImportAction.class);
+
+ DbImportParameters parameters = new DbImportParameters();
+ parameters.setDataMapFile(out);
+ DataMap dataMap = action.createDataMap(parameters);
+ assertEquals("testCreateDataMap2", dataMap.getName());
+ assertEquals(outUrl, dataMap.getConfigurationSource().getURL());
+ }
+
+ private URL dataMapUrl(String name) throws MalformedURLException {
+ String packagePath = getClass().getPackage().getName().replace('.', '/');
+ URL packageUrl = getClass().getClassLoader().getResource(packagePath);
+ assertNotNull(packageUrl);
+ return new URL(packageUrl, "dbimport/" + name);
+ }
}