import java.util.Map;
import java.util.TreeMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.argeo.cms.CmsException;
import org.argeo.node.DataModelNamespace;
import org.osgi.framework.Bundle;
import org.osgi.framework.wiring.BundleWiring;
class DataModels implements BundleListener {
+ private final static Log log = LogFactory.getLog(DataModels.class);
+
private Map<String, DataModel> dataModels = new TreeMap<>();
public DataModels(BundleContext bc) {
protected void processBundle(Bundle bundle) {
BundleWiring wiring = bundle.adapt(BundleWiring.class);
+ if (wiring == null) {
+ int bundleState = bundle.getState();
+ if (bundleState != Bundle.INSTALLED && bundleState != Bundle.UNINSTALLED) {// ignore unresolved bundles
+ log.warn("Bundle " + bundle.getSymbolicName() + " #" + bundle.getBundleId() + " ("
+ + bundle.getLocation() + ") cannot be adapted to a wiring");
+ } else {
+ if (log.isTraceEnabled())
+ log.warn("Bundle " + bundle.getSymbolicName() + " is not resolved.");
+ }
+ return;
+ }
List<BundleCapability> providedDataModels = wiring.getCapabilities(CMS_DATA_MODEL_NAMESPACE);
if (providedDataModels.size() == 0)
return;