diff --git a/README.md b/README.md
index 03bf2e69f915..c697796f0a4f 100644
--- a/README.md
+++ b/README.md
@@ -69,8 +69,8 @@ Most `gcloud-java` libraries require a project ID. There are multiple ways to s
1. Project ID supplied when building the service options
2. Project ID specified by the environment variable `GCLOUD_PROJECT`
3. App Engine project ID
-4. Compute Engine project ID
-5. Google Cloud SDK project ID
+4. Google Cloud SDK project ID
+5. Compute Engine project ID
Authentication
--------------
diff --git a/gcloud-java-core/pom.xml b/gcloud-java-core/pom.xml
index 7e184db2dbfa..c0248004d335 100644
--- a/gcloud-java-core/pom.xml
+++ b/gcloud-java-core/pom.xml
@@ -20,12 +20,18 @@
com.google.auth
google-auth-library-credentials
- 0.1.0
+ 0.3.1
com.google.auth
google-auth-library-oauth2-http
- 0.1.0
+ 0.3.1
+
+
+ com.google.guava
+ guava-jdk5
+
+
com.google.http-client
diff --git a/gcloud-java-core/src/main/java/com/google/gcloud/AuthCredentials.java b/gcloud-java-core/src/main/java/com/google/gcloud/AuthCredentials.java
index afd785981ab9..3303e4f8a652 100644
--- a/gcloud-java-core/src/main/java/com/google/gcloud/AuthCredentials.java
+++ b/gcloud-java-core/src/main/java/com/google/gcloud/AuthCredentials.java
@@ -19,12 +19,9 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
-import com.google.api.client.googleapis.compute.ComputeCredential;
import com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential;
-import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.HttpTransport;
-import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
@@ -33,7 +30,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
-import java.security.GeneralSecurityException;
import java.security.PrivateKey;
import java.util.Objects;
import java.util.Set;
@@ -164,55 +160,6 @@ public RestorableState capture() {
}
}
- private static class ComputeEngineAuthCredentials extends AuthCredentials {
-
- private ComputeCredential computeCredential;
-
- private static final ComputeEngineAuthCredentialsState STATE =
- new ComputeEngineAuthCredentialsState();
-
- private static class ComputeEngineAuthCredentialsState
- implements RestorableState, Serializable {
-
- private static final long serialVersionUID = -6168594072854417404L;
-
- @Override
- public AuthCredentials restore() {
- try {
- return new ComputeEngineAuthCredentials();
- } catch (IOException | GeneralSecurityException e) {
- throw new IllegalStateException(
- "Could not restore " + ComputeEngineAuthCredentials.class.getSimpleName(), e);
- }
- }
-
- @Override
- public int hashCode() {
- return getClass().getName().hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- return obj instanceof ComputeEngineAuthCredentialsState;
- }
- }
-
- ComputeEngineAuthCredentials() throws IOException, GeneralSecurityException {
- computeCredential = getComputeCredential();
- }
-
- @Override
- protected HttpRequestInitializer httpRequestInitializer(HttpTransport transport,
- Set scopes) {
- return computeCredential;
- }
-
- @Override
- public RestorableState capture() {
- return STATE;
- }
- }
-
public static class ApplicationDefaultAuthCredentials extends AuthCredentials {
private GoogleCredentials googleCredentials;
@@ -278,11 +225,6 @@ public static AuthCredentials createForAppEngine() {
return AppEngineAuthCredentials.INSTANCE;
}
- public static AuthCredentials createForComputeEngine()
- throws IOException, GeneralSecurityException {
- return new ComputeEngineAuthCredentials();
- }
-
/**
* Returns the Application Default Credentials.
*
@@ -337,13 +279,4 @@ public static ServiceAccountAuthCredentials createForJson(InputStream jsonCreden
public static AuthCredentials noCredentials() {
return ServiceAccountAuthCredentials.NO_CREDENTIALS;
}
-
- static ComputeCredential getComputeCredential() throws IOException, GeneralSecurityException {
- NetHttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
- // Try to connect using Google Compute Engine service account credentials.
- ComputeCredential credential = new ComputeCredential(transport, new JacksonFactory());
- // Force token refresh to detect if we are running on Google Compute Engine.
- credential.refreshToken();
- return credential;
- }
}
diff --git a/gcloud-java-core/src/main/java/com/google/gcloud/ServiceOptions.java b/gcloud-java-core/src/main/java/com/google/gcloud/ServiceOptions.java
index c76b62780a0e..25fda29c363d 100644
--- a/gcloud-java-core/src/main/java/com/google/gcloud/ServiceOptions.java
+++ b/gcloud-java-core/src/main/java/com/google/gcloud/ServiceOptions.java
@@ -109,12 +109,6 @@ public HttpTransport create() {
// Maybe not on App Engine
}
}
- // Consider Compute
- try {
- return AuthCredentials.getComputeCredential().getTransport();
- } catch (Exception e) {
- // Maybe not on GCE
- }
return new NetHttpTransport();
}
}
@@ -342,7 +336,7 @@ protected boolean projectIdRequired() {
}
private static AuthCredentials defaultAuthCredentials() {
- // Consider App Engine. This will not be needed once issue #21 is fixed.
+ // Consider App Engine.
if (appEngineAppId() != null) {
try {
return AuthCredentials.createForAppEngine();
@@ -354,16 +348,8 @@ private static AuthCredentials defaultAuthCredentials() {
try {
return AuthCredentials.createApplicationDefaults();
} catch (Exception ex) {
- // fallback to old-style
+ return AuthCredentials.noCredentials();
}
-
- // Consider old-style Compute. This will not be needed once issue #21 is fixed.
- try {
- return AuthCredentials.createForComputeEngine();
- } catch (Exception ignore) {
- // Maybe not on GCE
- }
- return AuthCredentials.noCredentials();
}
protected static String appEngineAppId() {
@@ -383,19 +369,6 @@ protected String defaultProject() {
}
protected static String googleCloudProjectId() {
- try {
- URL url = new URL("http://metadata/computeMetadata/v1/project/project-id");
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setRequestProperty("X-Google-Metadata-Request", "True");
- InputStream input = connection.getInputStream();
- if (connection.getResponseCode() == 200) {
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(input, UTF_8))) {
- return reader.readLine();
- }
- }
- } catch (IOException ignore) {
- // ignore
- }
File configDir;
if (System.getenv().containsKey("CLOUDSDK_CONFIG")) {
configDir = new File(System.getenv("CLOUDSDK_CONFIG"));
@@ -404,38 +377,52 @@ protected static String googleCloudProjectId() {
} else {
configDir = new File(System.getProperty("user.home"), ".config/gcloud");
}
- FileReader fileReader;
+ FileReader fileReader = null;
try {
fileReader = new FileReader(new File(configDir, "configurations/config_default"));
} catch (FileNotFoundException newConfigFileNotFoundEx) {
try {
fileReader = new FileReader(new File(configDir, "properties"));
} catch (FileNotFoundException oldConfigFileNotFoundEx) {
- // return null if we can't find config file
- return null;
+ // ignore
}
}
- try (BufferedReader reader = new BufferedReader(fileReader)) {
- String line;
- String section = null;
- Pattern projectPattern = Pattern.compile("^project\\s*=\\s*(.*)$");
- Pattern sectionPattern = Pattern.compile("^\\[(.*)\\]$");
- while ((line = reader.readLine()) != null) {
- if (line.isEmpty() || line.startsWith(";")) {
- continue;
- }
- line = line.trim();
- Matcher matcher = sectionPattern.matcher(line);
- if (matcher.matches()) {
- section = matcher.group(1);
- } else if (section == null || section.equals("core")) {
- matcher = projectPattern.matcher(line);
+ if (fileReader != null) {
+ try (BufferedReader reader = new BufferedReader(fileReader)) {
+ String line;
+ String section = null;
+ Pattern projectPattern = Pattern.compile("^project\\s*=\\s*(.*)$");
+ Pattern sectionPattern = Pattern.compile("^\\[(.*)\\]$");
+ while ((line = reader.readLine()) != null) {
+ if (line.isEmpty() || line.startsWith(";")) {
+ continue;
+ }
+ line = line.trim();
+ Matcher matcher = sectionPattern.matcher(line);
if (matcher.matches()) {
- return matcher.group(1);
+ section = matcher.group(1);
+ } else if (section == null || section.equals("core")) {
+ matcher = projectPattern.matcher(line);
+ if (matcher.matches()) {
+ return matcher.group(1);
+ }
}
}
+ } catch (IOException ex) {
+ // ignore
+ }
+ }
+ try {
+ URL url = new URL("http://metadata/computeMetadata/v1/project/project-id");
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestProperty("X-Google-Metadata-Request", "True");
+ InputStream input = connection.getInputStream();
+ if (connection.getResponseCode() == 200) {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(input, UTF_8))) {
+ return reader.readLine();
+ }
}
- } catch (IOException ex) {
+ } catch (IOException ignore) {
// ignore
}
// return null if can't determine
diff --git a/gcloud-java-datastore/pom.xml b/gcloud-java-datastore/pom.xml
index f2743c8e2af1..4bf5caab2ff8 100644
--- a/gcloud-java-datastore/pom.xml
+++ b/gcloud-java-datastore/pom.xml
@@ -27,6 +27,12 @@
google-api-services-datastore-protobuf
v1beta2-rev1-2.1.2
compile
+
+
+ com.google.api-client
+ google-api-client
+
+
junit
diff --git a/gcloud-java-storage/pom.xml b/gcloud-java-storage/pom.xml
index b592200243ef..3e0b6a9490a8 100644
--- a/gcloud-java-storage/pom.xml
+++ b/gcloud-java-storage/pom.xml
@@ -32,6 +32,10 @@
com.google.guava
guava-jdk5
+
+ com.google.api-client
+ google-api-client
+