]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/issues/SCLIssueFactoryProvider.java
SCL-compiler should activate installed bundles
[simantics/platform.git] / bundles / org.simantics.scl.osgi / src / org / simantics / scl / osgi / issues / SCLIssueFactoryProvider.java
1 package org.simantics.scl.osgi.issues;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import org.osgi.framework.InvalidSyntaxException;
8 import org.osgi.framework.ServiceReference;
9 import org.simantics.scl.osgi.internal.Activator;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12
13 public final class SCLIssueFactoryProvider {
14
15     private static final Logger LOGGER = LoggerFactory.getLogger(SCLIssueFactoryProvider.class);
16
17     public static List<SCLIssueProviderFactory> getSCLIssueProviderFactories() {
18         ServiceReference<?>[] serviceReferences = new ServiceReference<?>[0];
19         try {
20             serviceReferences = Activator.getContext().getAllServiceReferences(SCLIssueProviderFactory.class.getName(), null);
21         } catch (InvalidSyntaxException e) {
22             LOGGER.error("Could not get service references for " + SCLIssueProviderFactory.class.getName(), e);
23         }
24         if (serviceReferences == null || serviceReferences.length == 0)
25             return Collections.emptyList();
26
27         List<SCLIssueProviderFactory> services = new ArrayList<>(serviceReferences.length);
28         for (ServiceReference<?> reference : serviceReferences) {
29             SCLIssueProviderFactory service = (SCLIssueProviderFactory) Activator.getContext().getService(reference);
30             services.add(service);
31         }
32         return services;
33     }
34
35 }