Skip to content

Commit b584349

Browse files
Merge pull request #714 from jean-philippe-martin/integration-tests
Add integration test and example jar.
2 parents b7f137d + 331d0ec commit b584349

File tree

10 files changed

+554
-43
lines changed

10 files changed

+554
-43
lines changed

gcloud-java-contrib/gcloud-java-nio/pom.xml

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<dependencies>
2020
<dependency>
2121
<groupId>${project.groupId}</groupId>
22-
<artifactId>gcloud-java</artifactId>
22+
<artifactId>gcloud-java-storage</artifactId>
2323
<version>${project.version}</version>
2424
</dependency>
2525
<dependency>
@@ -92,26 +92,40 @@
9292
<compilerArgument>-Xlint:unchecked</compilerArgument>
9393
</configuration>
9494
</plugin>
95-
<plugin>
96-
<artifactId>maven-jar-plugin</artifactId>
97-
<version>2.6</version>
98-
<configuration>
99-
<archive>
100-
<addMavenDescriptor>true</addMavenDescriptor>
101-
<index>true</index>
102-
<manifest>
103-
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
104-
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
105-
</manifest>
106-
<manifestEntries>
107-
<artifactId>${project.artifactId}</artifactId>
108-
<groupId>${project.groupId}</groupId>
109-
<version>${project.version}</version>
110-
<buildNumber>${buildNumber}</buildNumber>
111-
</manifestEntries>
112-
</archive>
113-
</configuration>
114-
</plugin>
95+
<!-- shade the jar so we can demo adding the NIO jar to add functionality. -->
96+
<plugin>
97+
<groupId>org.apache.maven.plugins</groupId>
98+
<artifactId>maven-shade-plugin</artifactId>
99+
<version>2.4.3</version>
100+
<configuration>
101+
<shadedArtifactAttached>true</shadedArtifactAttached>
102+
<relocations>
103+
<relocation>
104+
<pattern>com</pattern>
105+
<shadedPattern>shaded.gcloud-nio.com</shadedPattern>
106+
<excludes>
107+
<exclude>com.google.gcloud.**</exclude>
108+
</excludes>
109+
</relocation>
110+
<relocation>
111+
<pattern>org</pattern>
112+
<shadedPattern>shaded.gcloud-nio.org</shadedPattern>
113+
</relocation>
114+
<relocation>
115+
<pattern>google</pattern>
116+
<shadedPattern>shaded.gcloud-nio.google</shadedPattern>
117+
</relocation>
118+
</relocations>
119+
</configuration>
120+
<executions>
121+
<execution>
122+
<phase>package</phase>
123+
<goals>
124+
<goal>shade</goal>
125+
</goals>
126+
</execution>
127+
</executions>
128+
</plugin>
115129
</plugins>
116130
</build>
117131
</project>

gcloud-java-contrib/gcloud-java-nio/src/main/java/com/google/gcloud/storage/contrib/nio/CloudStorageConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public CloudStorageConfiguration build() {
146146
Builder() {}
147147
}
148148

149-
static final CloudStorageConfiguration DEFAULT = builder().build();
149+
public static final CloudStorageConfiguration DEFAULT = builder().build();
150150

151151
static CloudStorageConfiguration fromMap(Map<String, ?> env) {
152152
Builder builder = builder();

gcloud-java-contrib/gcloud-java-nio/src/main/java/com/google/gcloud/storage/contrib/nio/CloudStorageFileSystem.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static com.google.common.base.Preconditions.checkNotNull;
2121

2222
import com.google.common.collect.ImmutableSet;
23+
import com.google.gcloud.storage.StorageOptions;
2324

2425
import java.io.IOException;
2526
import java.net.URI;
@@ -34,6 +35,7 @@
3435
import java.util.Objects;
3536
import java.util.Set;
3637

38+
import javax.annotation.Nullable;
3739
import javax.annotation.concurrent.Immutable;
3840

3941
/**
@@ -60,7 +62,7 @@ public final class CloudStorageFileSystem extends FileSystem {
6062
* provides a simpler alternative.
6163
*
6264
* @see #forBucket(String, CloudStorageConfiguration)
63-
* @see java.nio.file.FileSystems#getFileSystem(java.net.URI)
65+
* @see java.nio.file.FileSystems#getFileSystem(URI)
6466
*/
6567
public static CloudStorageFileSystem forBucket(String bucket) {
6668
return forBucket(bucket, CloudStorageConfiguration.DEFAULT);
@@ -72,10 +74,21 @@ public static CloudStorageFileSystem forBucket(String bucket) {
7274
* @see #forBucket(String)
7375
*/
7476
public static CloudStorageFileSystem forBucket(String bucket, CloudStorageConfiguration config) {
75-
checkArgument(
76-
!bucket.startsWith(URI_SCHEME + ":"), "Bucket name must not have schema: %s", bucket);
77-
return new CloudStorageFileSystem(
78-
new CloudStorageFileSystemProvider(), bucket, checkNotNull(config));
77+
return forBucket(bucket, config, null);
78+
}
79+
80+
/**
81+
* Creates a new filesystem for a particular bucket, with customizable settings and storage
82+
* options.
83+
*
84+
* @see #forBucket(String)
85+
*/
86+
public static CloudStorageFileSystem forBucket(String bucket, CloudStorageConfiguration config,
87+
@Nullable StorageOptions storageOptions) {
88+
checkArgument(!bucket.startsWith(URI_SCHEME + ":"),
89+
"Bucket name must not have schema: %s", bucket);
90+
return new CloudStorageFileSystem(new CloudStorageFileSystemProvider(storageOptions),
91+
bucket, checkNotNull(config));
7992
}
8093

8194
public static final String URI_SCHEME = "gs";

gcloud-java-contrib/gcloud-java-nio/src/main/java/com/google/gcloud/storage/contrib/nio/CloudStorageFileSystemProvider.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,14 @@ public final class CloudStorageFileSystemProvider extends FileSystemProvider {
8282
private final Storage storage;
8383

8484
// used only when we create a new instance of CloudStorageFileSystemProvider.
85-
private static StorageOptions storageOptions;
85+
private static StorageOptions defaultStorageOptions;
8686

8787
/**
88-
* Sets options that are only used by the constructor.
88+
* Sets default options that are only used by the constructor.
8989
*/
9090
@VisibleForTesting
9191
public static void setGCloudOptions(StorageOptions newStorageOptions) {
92-
storageOptions = newStorageOptions;
92+
defaultStorageOptions = newStorageOptions;
9393
}
9494

9595
/**
@@ -99,14 +99,19 @@ public static void setGCloudOptions(StorageOptions newStorageOptions) {
9999
* @see CloudStorageFileSystem#forBucket(String)
100100
*/
101101
public CloudStorageFileSystemProvider() {
102-
this(storageOptions);
102+
this(defaultStorageOptions);
103103
}
104104

105-
private CloudStorageFileSystemProvider(@Nullable StorageOptions gcsStorageOptions) {
106-
if (gcsStorageOptions == null) {
107-
this.storage = StorageOptions.defaultInstance().service();
105+
CloudStorageFileSystemProvider(@Nullable StorageOptions explicitOptions) {
106+
// explicit options have priority over default options.
107+
if (explicitOptions == null) {
108+
if (defaultStorageOptions == null) {
109+
this.storage = StorageOptions.defaultInstance().service();
110+
} else {
111+
this.storage = defaultStorageOptions.service();
112+
}
108113
} else {
109-
this.storage = gcsStorageOptions.service();
114+
this.storage = explicitOptions.service();
110115
}
111116
}
112117

gcloud-java-contrib/gcloud-java-nio/src/test/java/com/google/gcloud/storage/contrib/nio/CloudStorageFileSystemTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import com.google.common.testing.EqualsTester;
2323
import com.google.common.testing.NullPointerTester;
24+
import com.google.gcloud.storage.StorageOptions;
2425
import com.google.gcloud.storage.testing.LocalGcsHelper;
2526

2627
import org.junit.Before;
@@ -127,7 +128,8 @@ public void testNullness() throws IOException, NoSuchMethodException, SecurityEx
127128
NullPointerTester tester =
128129
new NullPointerTester()
129130
.ignore(CloudStorageFileSystem.class.getMethod("equals", Object.class))
130-
.setDefault(CloudStorageConfiguration.class, CloudStorageConfiguration.DEFAULT);
131+
.setDefault(CloudStorageConfiguration.class, CloudStorageConfiguration.DEFAULT)
132+
.setDefault(StorageOptions.class, LocalGcsHelper.options());
131133
tester.testAllPublicStaticMethods(CloudStorageFileSystem.class);
132134
tester.testAllPublicInstanceMethods(fs);
133135
}

0 commit comments

Comments
 (0)