Skip to content

Commit 6da56ca

Browse files
authored
Fix provisioner component load (#65)
2 parents 5006e5b + 4e122ce commit 6da56ca

File tree

5 files changed

+64
-46
lines changed

5 files changed

+64
-46
lines changed

openidm-config/src/main/java/org/forgerock/openidm/metadata/impl/ProviderTracker.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,20 +139,20 @@ private ServiceTracker<MetaDataProvider, MetaDataProvider> initServiceTracker(Bu
139139
}
140140

141141
public void addedService(ServiceReference<MetaDataProvider> reference, MetaDataProvider service) {
142-
String pid = (String) reference.getProperty(Constants.SERVICE_PID);
142+
String pid = Long.valueOf(reference.getBundle().getBundleId()).toString();
143143
// Instantiate and set the provider callback
144144
service.setCallback(new ProviderTrackerCallback(service, pid));
145145
// Add the provider to the listener
146146
addProvider(pid, service, true);
147147
}
148148

149149
public void removedService(ServiceReference<MetaDataProvider> reference, MetaDataProvider service) {
150-
String pid = (String) reference.getProperty(Constants.SERVICE_PID);
150+
String pid = Long.valueOf(reference.getBundle().getBundleId()).toString();
151151
providers.remove(pid);
152152
}
153153

154154
public void modifiedService(ServiceReference<MetaDataProvider> reference, MetaDataProvider service) {
155-
String pid = (String) reference.getProperty(Constants.SERVICE_PID);
155+
String pid = Long.valueOf(reference.getBundle().getBundleId()).toString();
156156
modifiedProvider(pid, service, true);
157157
}
158158

@@ -177,8 +177,8 @@ public Collection<MetaDataProvider> getProviders() {
177177
*/
178178
private class ProviderTrackerCallback implements MetaDataProviderCallback {
179179

180-
private MetaDataProvider provider = null;
181-
private String originId = null;
180+
private MetaDataProvider provider;
181+
private String originId;
182182

183183
/**
184184
* Constructor

openidm-enhanced-config/src/main/java/org/forgerock/openidm/config/enhanced/JSONEnhancedConfig.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,11 @@
1717

1818
package org.forgerock.openidm.config.enhanced;
1919

20-
import static org.forgerock.json.JsonValue.json;
21-
import static org.forgerock.json.JsonValue.object;
22-
23-
import java.util.Dictionary;
24-
import java.util.Map;
25-
2620
import org.forgerock.json.JsonValue;
2721
import org.forgerock.json.JsonValueException;
2822
import org.forgerock.openidm.core.PropertyUtil;
2923
import org.forgerock.openidm.core.ServerConstants;
3024
import org.forgerock.openidm.crypto.CryptoService;
31-
import org.forgerock.openidm.osgi.ServiceUtil;
3225
import org.forgerock.openidm.util.JsonUtil;
3326
import org.forgerock.util.Reject;
3427
import org.osgi.framework.BundleContext;
@@ -42,6 +35,13 @@
4235
import org.slf4j.Logger;
4336
import org.slf4j.LoggerFactory;
4437

38+
import java.util.Dictionary;
39+
import java.util.List;
40+
import java.util.Map;
41+
42+
import static org.forgerock.json.JsonValue.json;
43+
import static org.forgerock.json.JsonValue.object;
44+
4545
/**
4646
* A service to handle enhanced configuration, including nested lists and maps
4747
* to represent JSON based structures.
@@ -93,7 +93,12 @@ public JsonValue getConfigurationAsJson(ComponentContext compContext)
9393
Reject.ifNull(compContext);
9494

9595
Dictionary<String, Object> dict = compContext.getProperties();
96-
String servicePid = (String) dict.get(Constants.SERVICE_PID);
96+
final String servicePid;
97+
if(dict.get(Constants.SERVICE_PID) instanceof List) {
98+
servicePid = ((List<String>) dict.get(Constants.SERVICE_PID)).get(0);
99+
} else {
100+
servicePid = (String) dict.get(Constants.SERVICE_PID);
101+
}
97102

98103
return getConfiguration(dict, compContext.getBundleContext(), servicePid);
99104
}

openidm-infoservice/src/main/java/org/forgerock/openidm/info/impl/HealthService.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,6 @@
1616
*/
1717
package org.forgerock.openidm.info.impl;
1818

19-
import static org.forgerock.json.resource.Router.uriTemplate;
20-
21-
import java.util.ArrayList;
22-
import java.util.Arrays;
23-
import java.util.HashMap;
24-
import java.util.List;
25-
import java.util.concurrent.Executors;
26-
import java.util.concurrent.ScheduledExecutorService;
27-
import java.util.concurrent.TimeUnit;
28-
2919
import org.forgerock.api.models.ApiDescription;
3020
import org.forgerock.http.ApiProducer;
3121
import org.forgerock.json.JsonValue;
@@ -56,7 +46,6 @@
5646
import org.forgerock.openidm.info.health.ReconInfoResourceProvider;
5747
import org.forgerock.openidm.osgi.ServiceTrackerListener;
5848
import org.forgerock.openidm.osgi.ServiceTrackerNotifier;
59-
import org.forgerock.openidm.osgi.ServiceUtil;
6049
import org.forgerock.services.context.Context;
6150
import org.forgerock.services.descriptor.Describable;
6251
import org.forgerock.util.promise.Promise;
@@ -82,6 +71,16 @@
8271
import org.slf4j.Logger;
8372
import org.slf4j.LoggerFactory;
8473

74+
import java.util.ArrayList;
75+
import java.util.Arrays;
76+
import java.util.HashMap;
77+
import java.util.List;
78+
import java.util.concurrent.Executors;
79+
import java.util.concurrent.ScheduledExecutorService;
80+
import java.util.concurrent.TimeUnit;
81+
82+
import static org.forgerock.json.resource.Router.uriTemplate;
83+
8584
/**
8685
* A health service determining system state.
8786
*/
@@ -566,7 +565,12 @@ private void checkState() {
566565
if (refs != null && refs.length > 0) {
567566
for (String req : requiredServices) {
568567
for (ServiceReference<?> ref : refs) {
569-
String pid = (String) ref.getProperty(Constants.SERVICE_PID);
568+
final String pid;
569+
if(ref.getProperty(Constants.SERVICE_PID) instanceof List) {
570+
pid = ((List<String>) ref.getProperty(Constants.SERVICE_PID)).get(0);
571+
} else {
572+
pid = (String) ref.getProperty(Constants.SERVICE_PID);
573+
}
570574
if (pid != null && (pid.matches(req)||pid.replace("org.forgerock.","org.openidentityplatform.").matches(req))) {
571575
missingServices.remove(req);
572576
break;

openidm-provisioner-openicf/src/main/java/org/forgerock/openidm/provisioner/openicf/impl/OpenICFProvisionerService.java

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,9 @@
1616
*/
1717
package org.forgerock.openidm.provisioner.openicf.impl;
1818

19-
import static org.forgerock.json.JsonValue.json;
20-
import static org.forgerock.json.JsonValue.object;
21-
import static org.forgerock.json.resource.Responses.newActionResponse;
22-
23-
import java.util.ArrayList;
24-
import java.util.HashMap;
25-
import java.util.LinkedHashMap;
26-
import java.util.List;
27-
import java.util.Map;
28-
import java.util.Map.Entry;
29-
import java.util.concurrent.ConcurrentHashMap;
30-
import java.util.concurrent.ConcurrentMap;
31-
import java.util.concurrent.atomic.AtomicReference;
32-
33-
import org.apache.commons.lang3.StringUtils;
3419
import com.google.common.base.Predicate;
3520
import com.google.common.collect.FluentIterable;
36-
import org.forgerock.services.context.Context;
21+
import org.apache.commons.lang3.StringUtils;
3722
import org.forgerock.json.JsonValue;
3823
import org.forgerock.json.JsonValueException;
3924
import org.forgerock.json.resource.ActionRequest;
@@ -47,8 +32,8 @@
4732
import org.forgerock.json.resource.ReadRequest;
4833
import org.forgerock.json.resource.RequestHandler;
4934
import org.forgerock.json.resource.Requests;
50-
import org.forgerock.json.resource.ResourceResponse;
5135
import org.forgerock.json.resource.ResourceException;
36+
import org.forgerock.json.resource.ResourceResponse;
5237
import org.forgerock.json.resource.ServiceUnavailableException;
5338
import org.forgerock.json.resource.SingletonResourceProvider;
5439
import org.forgerock.json.resource.UpdateRequest;
@@ -77,6 +62,7 @@
7762
import org.forgerock.openidm.router.RouteBuilder;
7863
import org.forgerock.openidm.router.RouteEntry;
7964
import org.forgerock.openidm.router.RouterRegistry;
65+
import org.forgerock.services.context.Context;
8066
import org.forgerock.util.promise.Promise;
8167
import org.identityconnectors.common.security.GuardedString;
8268
import org.identityconnectors.framework.api.APIConfiguration;
@@ -98,7 +84,6 @@
9884
import org.identityconnectors.framework.common.objects.SyncToken;
9985
import org.identityconnectors.framework.common.serializer.SerializerUtil;
10086
import org.identityconnectors.framework.impl.api.local.LocalConnectorFacadeImpl;
101-
import org.osgi.framework.Constants;
10287
import org.osgi.service.component.ComponentContext;
10388
import org.osgi.service.component.ComponentException;
10489
import org.osgi.service.component.annotations.Activate;
@@ -112,6 +97,20 @@
11297
import org.slf4j.Logger;
11398
import org.slf4j.LoggerFactory;
11499

100+
import java.util.ArrayList;
101+
import java.util.HashMap;
102+
import java.util.LinkedHashMap;
103+
import java.util.List;
104+
import java.util.Map;
105+
import java.util.Map.Entry;
106+
import java.util.concurrent.ConcurrentHashMap;
107+
import java.util.concurrent.ConcurrentMap;
108+
import java.util.concurrent.atomic.AtomicReference;
109+
110+
import static org.forgerock.json.JsonValue.json;
111+
import static org.forgerock.json.JsonValue.object;
112+
import static org.forgerock.json.resource.Responses.newActionResponse;
113+
115114
/**
116115
* The OpenICFProvisionerService is the implementation of
117116
* {@link CollectionResourceProvider} interface with <a
@@ -158,9 +157,13 @@ public class OpenICFProvisionerService implements ProvisionerService, SingletonR
158157
private Map<String, ObjectClassInfoHelper> objectTypes;
159158

160159
/** The Connection Factory */
161-
@Reference(policy = ReferencePolicy.STATIC)
160+
162161
protected IDMConnectionFactory connectionFactory;
163162

163+
@Reference(
164+
service = IDMConnectionFactory.class,
165+
unbind = "unbindConnectionFactory",
166+
policy = ReferencePolicy.STATIC)
164167
void bindConnectionFactory(final IDMConnectionFactory connectionFactory) {
165168
this.connectionFactory = connectionFactory;
166169
// update activityLogger to use the "real" activity logger on the router
@@ -214,6 +217,12 @@ protected void activate(ComponentContext context) {
214217
try {
215218
factoryPid = (String)context.getProperties().get("config.factory-pid");
216219
jsonConfiguration = enhancedConfig.getConfigurationAsJson(context);
220+
221+
if(!jsonConfiguration.isDefined("name")) {
222+
logger.info("OpenICF Provisioner Service config is not defined");
223+
return;
224+
}
225+
217226
systemIdentifier = new SimpleSystemIdentifier(jsonConfiguration);
218227

219228
if (!jsonConfiguration.get("enabled").defaultTo(true).asBoolean()) {

openidm-provisioner/src/main/java/org/forgerock/openidm/provisioner/impl/SystemObjectSetService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ boolean isLiveSync() {
168168
}
169169
}
170170

171-
private Map<SystemIdentifier, ProvisionerService> provisionerServices = new HashMap<SystemIdentifier, ProvisionerService>();
171+
private final Map<SystemIdentifier, ProvisionerService> provisionerServices = new HashMap<>();
172172

173173
@SuppressWarnings("rawtypes")
174174
@Reference(
@@ -198,7 +198,7 @@ protected void bindConnectionFactory(IDMConnectionFactory connectionFactory) {
198198
this.connectionFactory = connectionFactory;
199199
}
200200

201-
private Map<String, ConnectorConfigurationHelper> connectorConfigurationHelpers = new HashMap<String, ConnectorConfigurationHelper>();
201+
private Map<String, ConnectorConfigurationHelper> connectorConfigurationHelpers = new HashMap<>();
202202

203203
@Reference(
204204
service = ConnectorConfigurationHelper.class,

0 commit comments

Comments
 (0)