+
+ private CmsUiProvider findUiProvider(Node context) {
+ try {
+ Set<String> types = new TreeSet<>();
+ for (NodeType nodeType : context.getMixinNodeTypes()) {
+ String typeName = nodeType.getName();
+ if (uiProvidersByType.containsKey(typeName)) {
+ types.add(typeName);
+ }
+ }
+ NodeType nodeType = context.getPrimaryNodeType();
+ String typeName = nodeType.getName();
+ if (uiProvidersByType.containsKey(typeName)) {
+ types.add(typeName);
+ }
+// if (context.getPath().equals("/")) {// root node
+// types.add("nt:folder");
+// }
+ if (NodeUtils.isUserHome(context)) {// home node
+ types.add("nt:folder");
+ }
+
+ if (types.size() == 0)
+ throw new IllegalArgumentException("No UI provider found for " + context);
+ return uiProvidersByType.get(types.iterator().next()).get();
+ } catch (RepositoryException e) {
+ throw new IllegalStateException(e);
+ }
+ }