Bug 499930 - MPC will need a client_id and client_secret for Eclipse USS SDK
Enable MPC to use USS OAuth for authorization.
Signed-off-by: Brian de Alwis <bsd@mt.ca>
Change-Id: I97e8c31c2a8f26a7c5cabc9a2f4a804845ec3641
diff --git a/org.eclipse.epp.mpc-target/oxygen.target b/org.eclipse.epp.mpc-target/oxygen.target
index 7989bcd..da5aca9 100644
--- a/org.eclipse.epp.mpc-target/oxygen.target
+++ b/org.eclipse.epp.mpc-target/oxygen.target
@@ -29,7 +29,7 @@
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.userstorage.sdk.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/oomph/uss/updates/latest"/>
+<repository location="http://download.eclipse.org/usssdk/updates/latest"/>
</location>
</locations>
</target>
diff --git a/org.eclipse.epp.mpc-target/staging.target b/org.eclipse.epp.mpc-target/staging.target
index 2870293..f67a7bd 100644
--- a/org.eclipse.epp.mpc-target/staging.target
+++ b/org.eclipse.epp.mpc-target/staging.target
@@ -29,7 +29,7 @@
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.userstorage.sdk.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/oomph/uss/updates/latest"/>
+<repository location="http://download.eclipse.org/usssdk/updates/latest"/>
</location>
</locations>
</target>
diff --git a/org.eclipse.epp.mpc.core/META-INF/MANIFEST.MF b/org.eclipse.epp.mpc.core/META-INF/MANIFEST.MF
index 307c956..851632b 100644
--- a/org.eclipse.epp.mpc.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.epp.mpc.core/META-INF/MANIFEST.MF
@@ -13,8 +13,9 @@
org.eclipse.equinox.ds;bundle-version="1.4.100",
org.eclipse.osgi.services;bundle-version="3.3.100",
org.eclipse.equinox.util;bundle-version="1.0.500",
- org.eclipse.userstorage;bundle-version="[1.0.1,1.1.0)",
- org.eclipse.equinox.security
+ org.eclipse.equinox.security,
+ org.eclipse.userstorage;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.userstorage.oauth;bundle-version="[1.0.0,2.0.0)"
Export-Package: org.eclipse.epp.internal.mpc.core;x-friends:="org.eclipse.epp.mpc.ui",
org.eclipse.epp.internal.mpc.core.model;x-friends:="org.eclipse.epp.mpc.ui",
org.eclipse.epp.internal.mpc.core.service;x-friends:="org.eclipse.epp.mpc.ui",
diff --git a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/MarketplaceStorageService.java b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/MarketplaceStorageService.java
index 22ba4ff..8b341ff 100644
--- a/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/MarketplaceStorageService.java
+++ b/org.eclipse.epp.mpc.core/src/org/eclipse/epp/internal/mpc/core/service/MarketplaceStorageService.java
@@ -33,6 +33,7 @@
import org.eclipse.userstorage.IStorageService;
import org.eclipse.userstorage.StorageFactory;
import org.eclipse.userstorage.internal.StorageService;
+import org.eclipse.userstorage.oauth.EclipseOAuthCredentialsProvider;
import org.eclipse.userstorage.spi.Credentials;
import org.eclipse.userstorage.spi.ICredentialsProvider;
import org.eclipse.userstorage.spi.ISettings;
@@ -98,7 +99,18 @@
protected IStorage createStorage() {
IStorage storage = getStorageFactory().create(applicationToken,
new FileStorageCache.SingleApplication(this.applicationToken));
- storage.setCredentialsProvider(ICredentialsProvider.CANCEL);
+ // FIXME: these should be the uss_project_* alternatives
+ //String[] scopes = { "profile", "uss_project_retrieve", "uss_project_update", "uss_project_delete" };
+ String[] scopes = { "profile", "uss_all_retrieve", "uss_all_update", "uss_all_delete" };
+ // FIXME: constants should be baked in at compile-time
+ String oauthClientId = System.getProperty("mpc.oauth.clientId", "@mpc.oauth.clientId@");
+ String oauthClientSecret = System.getProperty("mpc.oauth.clientSecret", "@mpc.oauth.clientSecret@");
+ try {
+ storage.setCredentialsProvider(new EclipseOAuthCredentialsProvider(new URI("https://accounts.eclipse.org/"),
+ oauthClientId, oauthClientSecret, scopes, new URI("http://localhost/")));
+ } catch (URISyntaxException ex) {
+ throw new RuntimeException(ex);
+ }
return storage;
}
@@ -125,15 +137,15 @@
public <T> T runWithLogin(Callable<T> c) throws Exception {
final IStorage storage = getStorage();
final ICredentialsProvider originalCredentialsProvider = storage.getCredentialsProvider();
- storage.setCredentialsProvider(null);
- String oldUser = getCurrentUser();
+ //storage.setCredentialsProvider(null);
+// String oldUser = getCurrentUser();
try {
T result = c.call();
return result;
} finally {
- storage.setCredentialsProvider(originalCredentialsProvider);
- String newUser = getCurrentUser();
- notifyLoginChanged(oldUser, newUser);
+// storage.setCredentialsProvider(originalCredentialsProvider);
+// String newUser = getCurrentUser();
+ //notifyLoginChanged(oldUser, newUser);
}
}
@@ -172,9 +184,11 @@
}
private Credentials getStorageCredentials() {
- StorageService service = (StorageService) getStorage().getService();
- Credentials credentials = service.getCredentials();
- return credentials;
+ ICredentialsProvider provider = getStorage().getCredentialsProvider();
+ if (provider == null) {
+ return null;
+ }
+ return provider.getCredentials(getStorage().getService());
}
public void activate(BundleContext context, Map<?, ?> properties) {
diff --git a/org.eclipse.epp.mpc.tests/META-INF/MANIFEST.MF b/org.eclipse.epp.mpc.tests/META-INF/MANIFEST.MF
index 8af43ae..5dc1cf4 100644
--- a/org.eclipse.epp.mpc.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.epp.mpc.tests/META-INF/MANIFEST.MF
@@ -24,7 +24,7 @@
org.hamcrest.library;bundle-version="1.3.0",
org.eclipse.core.net;bundle-version="1.2.200",
org.eclipse.equinox.p2.metadata;bundle-version="2.2.0",
- org.eclipse.userstorage;bundle-version="[1.0.1,1.1.0)",
+ org.eclipse.userstorage;bundle-version="[1.1.0,2.0.0)",
org.apache.httpcomponents.httpclient;bundle-version="[4.3.6,4.4.0)",
org.apache.httpcomponents.httpcore;bundle-version="[4.3.3,4.4.0)",
org.mockito;bundle-version="1.9.5"
diff --git a/org.eclipse.epp.mpc.tests/src/org/eclipse/epp/mpc/tests/service/UserFavoritesServiceTest.java b/org.eclipse.epp.mpc.tests/src/org/eclipse/epp/mpc/tests/service/UserFavoritesServiceTest.java
index 38d3b46..2b33add 100644
--- a/org.eclipse.epp.mpc.tests/src/org/eclipse/epp/mpc/tests/service/UserFavoritesServiceTest.java
+++ b/org.eclipse.epp.mpc.tests/src/org/eclipse/epp/mpc/tests/service/UserFavoritesServiceTest.java
@@ -10,7 +10,10 @@
*******************************************************************************/
package org.eclipse.epp.mpc.tests.service;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
import java.io.IOException;
import java.net.URI;
@@ -28,8 +31,8 @@
import org.eclipse.userstorage.IStorageService;
import org.eclipse.userstorage.internal.StorageService;
import org.eclipse.userstorage.internal.StorageServiceRegistry;
+import org.eclipse.userstorage.spi.AbstractCredentialsProvider;
import org.eclipse.userstorage.spi.Credentials;
-import org.eclipse.userstorage.spi.ICredentialsProvider;
import org.junit.After;
import org.junit.Assume;
import org.junit.Before;
@@ -50,7 +53,7 @@
marketplaceStorageService = ServiceHelper.getMarketplaceServiceLocator().getDefaultStorageService();
assertNotNull(marketplaceStorageService);
assertEquals(USERSTORAGE_SERVICE_URI, marketplaceStorageService.getServiceUri());
- marketplaceStorageService.getStorage().setCredentialsProvider(new ICredentialsProvider() {
+ marketplaceStorageService.getStorage().setCredentialsProvider(new AbstractCredentialsProvider() {
@Override
public Credentials provideCredentials(IStorageService service, boolean reauthentication) {
diff --git a/org.eclipse.epp.mpc.ui/META-INF/MANIFEST.MF b/org.eclipse.epp.mpc.ui/META-INF/MANIFEST.MF
index 06bac7d..538887a 100644
--- a/org.eclipse.epp.mpc.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.epp.mpc.ui/META-INF/MANIFEST.MF
@@ -22,8 +22,8 @@
org.eclipse.equinox.p2.director,
org.eclipse.osgi.services;bundle-version="3.3.100",
org.eclipse.equinox.ds;bundle-version="1.4.100",
- org.eclipse.userstorage;bundle-version="[1.0.1,1.1.0)",
- org.eclipse.userstorage.ui;bundle-version="[1.0.1,1.1.0)",
+ org.eclipse.userstorage;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.userstorage.ui;bundle-version="[1.0.0,2.0.0)",
org.eclipse.ui.ide;bundle-version="3.12.0"
Export-Package: org.eclipse.epp.internal.mpc.ui;x-internal:=true,
org.eclipse.epp.internal.mpc.ui.actions;x-internal:=true,