fixing problem with resources contained in jars - was causing mvn 3 to fail on jenkins #3
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 3 Jul 2012 11:57:10 +0000 (11:57 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 3 Jul 2012 11:57:10 +0000 (11:57 +0000)
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/test/unitils/CleanSweepInsertLoadStrategy.java

index 240fa06e0dbbac7b13612a1dde4eb650d47c38c8..13e696f4e28e11484f2e8cdf0c7935a1cc1aca40 100644 (file)
@@ -59,10 +59,11 @@ public class CleanSweepInsertLoadStrategy extends CleanInsertLoadStrategy {
                 throw new IOException("the Resource " + clearDataResource + " could not be found");
             }
             File file;
+            logger.debug("fileUrl:" + fileUrl.toString() + "; protocol: " +  fileUrl.getProtocol());
             if(fileUrl.toString().startsWith("jar:file:")){
                 // extract file from jar into tmp folder
                 String millisecTimeStamp = String.valueOf(System.currentTimeMillis());
-                file = copyClassPathResource(clearDataResource, System.getProperty("java.user.home") + File.separator + millisecTimeStamp);
+                file = copyClassPathResource(fileUrl, System.getProperty("java.io.tmpdir") + File.separator + millisecTimeStamp);
             } else {
                 file = new File(fileUrl.toURI());
             }
@@ -92,26 +93,6 @@ public class CleanSweepInsertLoadStrategy extends CleanInsertLoadStrategy {
 //        }
     }
 
-    private void printDataSet(DbUnitDatabaseConnection dbUnitDatabaseConnection, OutputStream out, String ... tableNames) {
-
-        try {
-            IDataSet actualDataSet;
-            if(tableNames == null){
-                actualDataSet = dbUnitDatabaseConnection.createDataSet();
-            } else {
-                actualDataSet = dbUnitDatabaseConnection.createDataSet(tableNames);
-            }
-            FlatXmlDataSet.write(actualDataSet, out);
-        } catch (Exception e) {
-            logger.error(e);
-        } finally {
-            try {
-                dbUnitDatabaseConnection.close();
-            } catch (SQLException sqle) {
-                logger.error(sqle);
-            }
-        }
-    }
 
     /**
      * more or less 1:1 copy from {@link FileUtils#copyClassPathResource(String, String)}
@@ -120,14 +101,14 @@ public class CleanSweepInsertLoadStrategy extends CleanInsertLoadStrategy {
      * @param fileSystemDirectoryName
      * @return
      */
-    public File copyClassPathResource(String classPathResourceName, String fileSystemDirectoryName) {
+    public File copyClassPathResource(URL resourceURL, String fileSystemDirectoryName) {
 
         InputStream resourceInputStream = null;
         OutputStream fileOutputStream = null;
         File file = null;
         try {
-            resourceInputStream = FileUtils.class.getResourceAsStream(classPathResourceName);
-            String fileName = StringUtils.substringAfterLast(classPathResourceName, "/");
+            resourceInputStream = resourceURL.openStream();
+            String fileName = StringUtils.substringAfterLast(resourceURL.getPath(), "/");
             File fileSystemDirectory = new File(fileSystemDirectoryName);
             fileSystemDirectory.mkdirs();
             String filePath = fileSystemDirectoryName + "/" + fileName;
@@ -143,5 +124,26 @@ public class CleanSweepInsertLoadStrategy extends CleanInsertLoadStrategy {
         return file;
     }
 
+    @SuppressWarnings("unused")
+    private void printDataSet(DbUnitDatabaseConnection dbUnitDatabaseConnection, OutputStream out, String ... tableNames) {
+
+        try {
+            IDataSet actualDataSet;
+            if(tableNames == null){
+                actualDataSet = dbUnitDatabaseConnection.createDataSet();
+            } else {
+                actualDataSet = dbUnitDatabaseConnection.createDataSet(tableNames);
+            }
+            FlatXmlDataSet.write(actualDataSet, out);
+        } catch (Exception e) {
+            logger.error(e);
+        } finally {
+            try {
+                dbUnitDatabaseConnection.close();
+            } catch (SQLException sqle) {
+                logger.error(sqle);
+            }
+        }
+    }
 
 }