You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2010/06/23 19:32:32 UTC
svn commit: r957278 - in /db/derby/code/branches/10.6/java:
engine/org/apache/derby/iapi/services/io/ engine/org/apache/derby/impl/io/
engine/org/apache/derby/impl/load/
testing/org/apache/derbyTesting/functionTests/tests/tools/
Author: rhillegas
Date: Wed Jun 23 17:32:32 2010
New Revision: 957278
URL: http://svn.apache.org/viewvc?rev=957278&view=rev
Log:
DERBY-2925: Port 957171 from trunk to 10.6 branch.
Modified:
db/derby/code/branches/10.6/java/engine/org/apache/derby/iapi/services/io/FileUtil.java
db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/io/CPFile.java
db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/Export.java
db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/ExportWriteData.java
db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportBinaryDataTest.java
Modified: db/derby/code/branches/10.6/java/engine/org/apache/derby/iapi/services/io/FileUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/engine/org/apache/derby/iapi/services/io/FileUtil.java?rev=957278&r1=957277&r2=957278&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/engine/org/apache/derby/iapi/services/io/FileUtil.java (original)
+++ db/derby/code/branches/10.6/java/engine/org/apache/derby/iapi/services/io/FileUtil.java Wed Jun 23 17:32:32 2010
@@ -26,6 +26,8 @@ import org.apache.derby.io.WritableStora
import org.apache.derby.io.StorageFile;
import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
/**
A set of public static methods for dealing with File objects.
@@ -554,4 +556,21 @@ nextFile: for (int i = 0; i < list.lengt
else
return new File(parent, name);
}
+
+ /**
+ Remove the leading 'file://' protocol from a filename which has been
+ expressed as an URL. If the filename is not an URL, then nothing is done.
+ Otherwise, an URL like 'file:///tmp/foo.txt' is transformed into the legal
+ file name '/tmp/foo.txt'.
+ */
+ public static String stripProtocolFromFileName( String originalName )
+ {
+ String result = originalName;
+ try {
+ URL url = new URL(originalName);
+ result = url.getFile();
+ } catch (MalformedURLException ex) {}
+
+ return result;
+ }
}
Modified: db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/io/CPFile.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/io/CPFile.java?rev=957278&r1=957277&r2=957278&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/io/CPFile.java (original)
+++ db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/io/CPFile.java Wed Jun 23 17:32:32 2010
@@ -26,7 +26,6 @@ import org.apache.derby.io.StorageFile;
import java.io.InputStream;
import java.io.FileNotFoundException;
-import java.net.MalformedURLException;
import java.net.URL;
/**
Modified: db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/Export.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/Export.java?rev=957278&r1=957277&r2=957278&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/Export.java (original)
+++ db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/Export.java Wed Jun 23 17:32:32 2010
@@ -30,6 +30,7 @@ import java.security.PrivilegedAction;
import org.apache.derby.iapi.error.PublicAPI;
import org.apache.derby.iapi.reference.SQLState;
import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.services.io.FileUtil;
/**
@@ -122,7 +123,8 @@ public class Export extends ExportAbstra
throw PublicAPI.wrapStandardException(
StandardException.newException(
SQLState.LOB_DATA_FILE_NULL));
- }
+ }
+ fileName = FileUtil.stripProtocolFromFileName( fileName );
File file = new File(fileName);
return fileExists(file);
@@ -139,7 +141,8 @@ public class Export extends ExportAbstra
throw PublicAPI.wrapStandardException(
StandardException.newException(
SQLState.DATA_FILE_NULL));
- }
+ }
+ fileName = FileUtil.stripProtocolFromFileName( fileName );
File file = new File(fileName);
return fileExists(file);
Modified: db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/ExportWriteData.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/ExportWriteData.java?rev=957278&r1=957277&r2=957278&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/ExportWriteData.java (original)
+++ db/derby/code/branches/10.6/java/engine/org/apache/derby/impl/load/ExportWriteData.java Wed Jun 23 17:32:32 2010
@@ -27,12 +27,12 @@ import java.io.OutputStreamWriter;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.Reader;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.Date;
import java.io.IOException;
import java.io.File;
+import org.apache.derby.iapi.services.io.FileUtil;
+
//this class takes the passed row and writes it into the data file using the
//properties from the control file
//FIXED FORMAT: if length of nullstring is greater than column width, throw execption
@@ -96,15 +96,9 @@ final class ExportWriteData extends Expo
//prepares the o/p file for writing
private void openFiles() throws Exception {
- try {
- URL url = new URL(outputFileName);
- outputFileName = url.getFile();
- if (lobsInExtFile) {
- url = new URL(lobsFileName);
- lobsFileName = url.getFile();
- }
- } catch (MalformedURLException ex) {}
+ outputFileName = FileUtil.stripProtocolFromFileName( outputFileName );
+ if ( lobsInExtFile ) { lobsFileName = FileUtil.stripProtocolFromFileName( lobsFileName ); }
FileOutputStream anOutputStream = null;
BufferedOutputStream buffered = null;
Modified: db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportBinaryDataTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportBinaryDataTest.java?rev=957278&r1=957277&r2=957278&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportBinaryDataTest.java (original)
+++ db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportBinaryDataTest.java Wed Jun 23 17:32:32 2010
@@ -1,7 +1,6 @@
/*
- Derby - Class org.apache.derbyTesting.functionTests.tests.
- tools.ImportExportBinaryDataTest
+ Derby - Class org.apache.derbyTesting.functionTests.tests.tools.ImportExportBinaryDataTest
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -388,6 +387,15 @@ public class ImportExportBinaryDataTest
assertSQLState("XIE0S", e);
}
+ // should not be able to subvert the check by turning the file name into an url
+ try {
+ doExportTable("APP", "DERBY_2925_TAB", "file:" + fileName, null, null , null);
+ fail("export should have failed on existing data file.");
+ }
+ catch (SQLException e) {
+ assertSQLState("XIE0S", e);
+ }
+
}
/*
* DERBY-2925: Prevent export from overwriting existing files