mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
bug5260: compilable but untested version of an OSGi service registry-based approach for finding subcsription API services
This commit is contained in:
@@ -21,7 +21,8 @@ Require-Bundle: org.apache.shiro.core;bundle-version="1.2.2",
|
||||
org.mongodb.mongo-java-driver;bundle-version="3.6.4",
|
||||
com.sap.sse.replication,
|
||||
com.sap.sse,
|
||||
com.sap.sse.security.interface
|
||||
com.sap.sse.security.interface,
|
||||
com.sap.sse.security
|
||||
Export-Package: com.sap.sse.security.userstore.mongodb,
|
||||
com.sap.sse.security.userstore.mongodb.impl;x-friends:="com.sap.sse.security.storemerging,com.sap.sse.security.test"
|
||||
Automatic-Module-Name: com.sap.sse.security.userstore.mongodb
|
||||
|
||||
+23
-7
@@ -4,19 +4,26 @@ import java.util.logging.Logger;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.ServiceReference;
|
||||
import org.osgi.framework.ServiceRegistration;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.mongodb.MongoDBService;
|
||||
import com.sap.sse.security.interfaces.AccessControlStore;
|
||||
import com.sap.sse.security.interfaces.PreferenceConverterRegistrationManager;
|
||||
import com.sap.sse.security.interfaces.UserStore;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionDataHandler;
|
||||
import com.sap.sse.security.subscription.SubscriptionApiService;
|
||||
import com.sap.sse.security.userstore.mongodb.AccessControlStoreImpl;
|
||||
import com.sap.sse.security.userstore.mongodb.UserStoreImpl;
|
||||
import com.sap.sse.util.ServiceTrackerFactory;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
private static final Logger logger = Logger.getLogger(Activator.class.getName());
|
||||
private static BundleContext context;
|
||||
private static ServiceTracker<SubscriptionApiService, SubscriptionApiService> subscriptionApiServiceTracker;
|
||||
private ServiceRegistration<?> accessControlStoreRegistration;
|
||||
private ServiceRegistration<?> userStoreRegistration;
|
||||
private PreferenceConverterRegistrationManager preferenceConverterRegistrationManager;
|
||||
@@ -24,7 +31,7 @@ public class Activator implements BundleActivator {
|
||||
static BundleContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
@@ -32,15 +39,13 @@ public class Activator implements BundleActivator {
|
||||
*/
|
||||
public void start(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = bundleContext;
|
||||
final String defaultServerGroupName = System.getProperty(UserStore.DEFAULT_SERVER_GROUP_NAME_PROPERTY_NAME, ServerInfo.getName() + "-server");
|
||||
logger.info("Creating user store");
|
||||
final String defaultServerGroupName = System.getProperty(UserStore.DEFAULT_SERVER_GROUP_NAME_PROPERTY_NAME,
|
||||
ServerInfo.getName() + "-server");
|
||||
subscriptionApiServiceTracker = ServiceTrackerFactory.createAndOpen(context, SubscriptionApiService.class);
|
||||
final UserStoreImpl userStore = new UserStoreImpl(defaultServerGroupName);
|
||||
AccessControlStoreImpl accessControlStore = new AccessControlStoreImpl(userStore);
|
||||
accessControlStoreRegistration = context.registerService(AccessControlStore.class.getName(),
|
||||
accessControlStore, null);
|
||||
userStoreRegistration = context.registerService(UserStore.class.getName(),
|
||||
userStore, null);
|
||||
accessControlStoreRegistration = context.registerService(AccessControlStore.class.getName(), accessControlStore, null);
|
||||
userStoreRegistration = context.registerService(UserStore.class.getName(), userStore, null);
|
||||
preferenceConverterRegistrationManager = new PreferenceConverterRegistrationManager(bundleContext, userStore);
|
||||
logger.info("User store registered.");
|
||||
for (CollectionNames name : CollectionNames.values()) {
|
||||
@@ -60,4 +65,15 @@ public class Activator implements BundleActivator {
|
||||
Activator.context = null;
|
||||
}
|
||||
|
||||
public static SubscriptionDataHandler getSubscriptionDataHandler(String providerName) {
|
||||
if (subscriptionApiServiceTracker != null) {
|
||||
ServiceReference<SubscriptionApiService>[] serviceReferences = subscriptionApiServiceTracker.getServiceReferences();
|
||||
for (final ServiceReference<SubscriptionApiService> serviceReference : serviceReferences) {
|
||||
if (Util.equalsWithNull(serviceReference.getProperty(SubscriptionApiService.PROVIDER_NAME_OSGI_REGISTRY_KEY), providerName)) {
|
||||
return context.getService(serviceReference).getDataHandler();
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-11
@@ -41,11 +41,9 @@ import com.sap.sse.security.shared.impl.Role;
|
||||
import com.sap.sse.security.shared.impl.User;
|
||||
import com.sap.sse.security.shared.impl.UserGroup;
|
||||
import com.sap.sse.security.shared.impl.UserGroupImpl;
|
||||
import com.sap.sse.security.shared.subscription.InvalidSubscriptionProviderException;
|
||||
import com.sap.sse.security.shared.subscription.Subscription;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionData;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionFactory;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionProvider;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionDataHandler;
|
||||
import com.sap.sse.security.userstore.mongodb.DomainObjectFactory;
|
||||
import com.sap.sse.security.userstore.mongodb.impl.FieldNames.Tenant;
|
||||
|
||||
@@ -523,14 +521,8 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
data.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
SubscriptionData subscriptionData = new SubscriptionData(data);
|
||||
try {
|
||||
final SubscriptionProvider subscriptionProvider = SubscriptionFactory.getInstance()
|
||||
.getSubscriptionProvider(subscriptionData.getProvider());
|
||||
subscriptions[i++] = subscriptionProvider.getDataHandler().toSubscription(subscriptionData);
|
||||
} catch (InvalidSubscriptionProviderException e) {
|
||||
logger.log(Level.SEVERE, "Failed to load subscription for user " + subscriptionData.getCustomerId(),
|
||||
e);
|
||||
}
|
||||
final SubscriptionDataHandler subscriptionDataHandler = Activator.getSubscriptionDataHandler(subscriptionData.getProviderName());
|
||||
subscriptions[i++] = subscriptionDataHandler.toSubscription(subscriptionData);
|
||||
}
|
||||
} else {
|
||||
subscriptions = null;
|
||||
|
||||
+5
-13
@@ -31,10 +31,8 @@ import com.sap.sse.security.shared.impl.Ownership;
|
||||
import com.sap.sse.security.shared.impl.Role;
|
||||
import com.sap.sse.security.shared.impl.User;
|
||||
import com.sap.sse.security.shared.impl.UserGroup;
|
||||
import com.sap.sse.security.shared.subscription.InvalidSubscriptionProviderException;
|
||||
import com.sap.sse.security.shared.subscription.Subscription;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionFactory;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionProvider;
|
||||
import com.sap.sse.security.shared.subscription.SubscriptionDataHandler;
|
||||
import com.sap.sse.security.userstore.mongodb.MongoObjectFactory;
|
||||
|
||||
public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
@@ -42,7 +40,6 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
private final MongoDatabase db;
|
||||
final MongoCollection<org.bson.Document> settingCollection;
|
||||
|
||||
|
||||
public MongoObjectFactoryImpl(MongoDatabase db) {
|
||||
this.db = db;
|
||||
settingCollection = db.getCollection(CollectionNames.PREFERENCES.name());
|
||||
@@ -342,15 +339,10 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
if (subscriptions != null) {
|
||||
result = new BasicDBList();
|
||||
for (final Subscription subscription : subscriptions) {
|
||||
try {
|
||||
final Document doc = new Document();
|
||||
final SubscriptionProvider subscriptionProvider = SubscriptionFactory.getInstance()
|
||||
.getSubscriptionProvider(subscription.getProvider());
|
||||
doc.putAll(subscriptionProvider.getDataHandler().toMap(subscription));
|
||||
result.add(doc);
|
||||
} catch (InvalidSubscriptionProviderException e) {
|
||||
logger.log(Level.SEVERE, "Failed to store subscription: " + subscription.toString(), e);
|
||||
}
|
||||
final Document doc = new Document();
|
||||
final SubscriptionDataHandler subscriptionDataHandler = Activator.getSubscriptionDataHandler(subscription.getProviderName());
|
||||
doc.putAll(subscriptionDataHandler.toMap(subscription));
|
||||
result.add(doc);
|
||||
}
|
||||
} else {
|
||||
result = null;
|
||||
|
||||
Reference in New Issue
Block a user