- String path = attrs.get(DataModelNamespace.CAPABILITY_CND_ATTRIBUTE).toString();
- URL url = capability.getRevision().getBundle().getResource(path);
- try (Reader reader = new InputStreamReader(url.openStream())) {
- CndImporter.registerNodeTypes(reader, adminSession, true);
- processed.add(name);
+
+ // CND
+ String path = (String) attrs.get(DataModelNamespace.CAPABILITY_CND_ATTRIBUTE);
+ if (path != null) {
+ URL url = capability.getRevision().getBundle().getResource(path);
+ if (url == null)
+ throw new CmsException("No data model '" + name + "' found under path " + path);
+ try (Reader reader = new InputStreamReader(url.openStream())) {
+ CndImporter.registerNodeTypes(reader, adminSession, true);
+ processed.add(name);
+ if (log.isDebugEnabled())
+ log.debug("Registered CND " + url);
+ } catch (Exception e) {
+ throw new CmsException("Cannot import CND " + url, e);
+ }
+ }
+
+ if (!asBoolean((String) attrs.get(DataModelNamespace.CAPABILITY_ABSTRACT_ATTRIBUTE))) {
+ Hashtable<String, Object> properties = new Hashtable<>();
+ properties.put(LEGACY_JCR_REPOSITORY_ALIAS, name);
+ properties.put(NodeConstants.CN, name);
+ if (name.equals(NodeConstants.NODE))
+ properties.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
+ LocalRepository localRepository = new LocalRepository(adminSession.getRepository(), capability);
+ bc.registerService(Repository.class, localRepository, properties);