diff --git a/java/pom.xml b/java/pom.xml
index 935435e..61e7d25 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -22,7 +22,32 @@
3.1.0
-
+
+
+ sonatype-google-releases
+ Sonatype Google Releases
+ https://oss.sonatype.org/service/local/repositories/google-releases/content
+
+
+ gae-staging
+ https://oss.sonatype.org/content/repositories/comgoogleappengine-1394/
+
+
+
+
+
+ sonatype-nexus-staging
+ Sonatype Nexus Staging
+ https://oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+ sonatype-nexus-snapshots
+ Sonatype Nexus Snapshots
+ https://oss.sonatype.org/content/repositories/google-snapshots/
+
+
+
+
org.apache.maven.plugins
@@ -33,7 +58,19 @@
1.7
-
+
+ org.apache.maven.plugins
+ maven-release-plugin
+ 2.5.3
+
+ forked-path
+ false
+ -Psonatype-oss-release
+ false
+ true
+
+
+
org.apache.maven.plugins
maven-jar-plugin
2.6
@@ -58,7 +95,7 @@
com.google.guava
guava
- 19.0-rc1
+ 19.0
joda-time
@@ -68,7 +105,7 @@
com.google.apis
google-api-services-storage
- v1-rev68-1.21.0
+ v1-rev108-1.22.0
com.google.guava
@@ -118,4 +155,32 @@
test
+
+
+
+ sonatype-oss-release
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.6
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+
+
+
diff --git a/java/src/main/java/com/google/appengine/tools/cloudstorage/oauth/OauthRawGcsService.java b/java/src/main/java/com/google/appengine/tools/cloudstorage/oauth/OauthRawGcsService.java
index ba0126c..27ee036 100644
--- a/java/src/main/java/com/google/appengine/tools/cloudstorage/oauth/OauthRawGcsService.java
+++ b/java/src/main/java/com/google/appengine/tools/cloudstorage/oauth/OauthRawGcsService.java
@@ -35,8 +35,6 @@
import com.google.appengine.api.urlfetch.HTTPResponse;
import com.google.appengine.api.utils.FutureWrapper;
import com.google.appengine.api.utils.SystemProperty;
-import com.google.appengine.repackaged.com.google.common.escape.Escaper;
-import com.google.appengine.repackaged.com.google.common.xml.XmlEscapers;
import com.google.appengine.tools.cloudstorage.BadRangeException;
import com.google.appengine.tools.cloudstorage.GcsFileMetadata;
import com.google.appengine.tools.cloudstorage.GcsFileOptions;
@@ -53,7 +51,9 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.escape.Escaper;
import com.google.common.io.BaseEncoding;
+import com.google.common.xml.XmlEscapers;
import java.io.FileNotFoundException;
import java.io.IOException;
diff --git a/java/src/test/java/com/google/appengine/tools/cloudstorage/GcsServiceTest.java b/java/src/test/java/com/google/appengine/tools/cloudstorage/GcsServiceTest.java
index 6412497..60757b6 100644
--- a/java/src/test/java/com/google/appengine/tools/cloudstorage/GcsServiceTest.java
+++ b/java/src/test/java/com/google/appengine/tools/cloudstorage/GcsServiceTest.java
@@ -47,6 +47,8 @@
import java.util.NavigableMap;
import java.util.Random;
import java.util.TreeMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* End to end test to test the basics of the GcsService. This class uses the in-process
@@ -348,7 +350,7 @@ public void testBufferedReads() throws IOException {
}
@Test
- public void testReadMetadata() throws IOException {
+ public void testReadMetadata() throws IOException, InterruptedException {
Date start = new Date(System.currentTimeMillis() - 1000);
int length = 1 * 1024 * 1024 + 1;
GcsFilename filename = new GcsFilename("testReadMetadataBucket", "testReadMetadataFile");
@@ -359,6 +361,7 @@ public void testReadMetadata() throws IOException {
assertEquals(content.length, metadata.getLength());
assertEquals(options, metadata.getOptions());
assertNotNull(metadata.getLastModified());
+ Thread.sleep(10); //10 millisecond at least, or Date comparison might break.
assertTrue(metadata.getLastModified().before(new Date()));
assertTrue(metadata.getLastModified().after(start));
}
diff --git a/java/src/test/java/com/google/appengine/tools/cloudstorage/oauth/URLFetchUtilsTest.java b/java/src/test/java/com/google/appengine/tools/cloudstorage/oauth/URLFetchUtilsTest.java
index 4a384cb..808c009 100644
--- a/java/src/test/java/com/google/appengine/tools/cloudstorage/oauth/URLFetchUtilsTest.java
+++ b/java/src/test/java/com/google/appengine/tools/cloudstorage/oauth/URLFetchUtilsTest.java
@@ -65,7 +65,7 @@ public void testDescribeRequestAndResponseForApiClient() throws Exception {
NetHttpTransport transport = new NetHttpTransport();
Storage storage = new Storage.Builder(transport, new JacksonFactory(), initializer)
.setApplicationName("bla").build();
- HttpRequest request = storage.objects().delete("b", "o").buildHttpRequest();
+ HttpRequest request = storage.objects().delete("bucket", "object").buildHttpRequest();
request.getHeaders().clear();
request.getHeaders().put("k1", "v1");
request.getHeaders().put("k2", "v2");
@@ -75,8 +75,8 @@ public void testDescribeRequestAndResponseForApiClient() throws Exception {
} catch (HttpResponseException ex) {
exception = ex;
}
- String expected = "Request: DELETE " + Storage.DEFAULT_BASE_URL + "b/b/o/o\n"
- + "k1: v1\nk2: v2\n\nno content\n\nResponse: 400 with 0 bytes of content\n";
+ String expected = "Request: DELETE " + Storage.DEFAULT_BASE_URL + "b/bucket/o/object\n"
+ + "k1: v1\nk2: v2\n\nno content\n\nResponse: 40";
String result =
URLFetchUtils.describeRequestAndResponse(new HTTPRequestInfo(request), exception);
assertTrue(expected + "\nis not a prefix of:\n" + result, result.startsWith(expected));