You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/07/23 15:57:42 UTC

svn commit: r1364635 - in /jackrabbit/oak/trunk: oak-core/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/ oak-core/src/main/resources/org/ oak-core/src/main/resources/org/apache/ oak-core/src/main/resources/org/apache/jackrabbit/ oak-co...

Author: jukka
Date: Mon Jul 23 13:57:41 2012
New Revision: 1364635

URL: http://svn.apache.org/viewvc?rev=1364635&view=rev
Log:
OAK-66: JCR Node Type Management

Switch to using the new content-base NodeTypeManagerImpl

Added:
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/type/
    jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/type/builtin_nodetypes.cnd   (contents, props changed)
      - copied, changed from r1364630, jackrabbit/oak/trunk/oak-jcr/src/main/resources/org/apache/jackrabbit/oak/jcr/nodetype/builtin_nodetypes.cnd
Removed:
    jackrabbit/oak/trunk/oak-jcr/src/main/resources/org/apache/jackrabbit/oak/jcr/nodetype/builtin_nodetypes.cnd
Modified:
    jackrabbit/oak/trunk/oak-core/pom.xml
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeUtil.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionImpl.java
    jackrabbit/oak/trunk/oak-jcr/pom.xml
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java

Modified: jackrabbit/oak/trunk/oak-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-core/pom.xml Mon Jul 23 13:57:41 2012
@@ -44,6 +44,7 @@
               org.apache.jackrabbit.oak.util,
               org.apache.jackrabbit.oak.namepath,
               org.apache.jackrabbit.oak.plugins.name,
+              org.apache.jackrabbit.oak.plugins.type,
               org.apache.jackrabbit.oak.plugins.value,
               org.apache.jackrabbit.oak.spi.state,
               org.apache.jackrabbit.oak.spi.security.authentication,

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeDefinitionImpl.java Mon Jul 23 13:57:41 2012
@@ -51,7 +51,7 @@ class NodeDefinitionImpl extends ItemDef
 
     @Override
     public String[] getRequiredPrimaryTypeNames() {
-        return node.getNames("requiredPrimaryTypes", "nt:base");
+        return node.getNames("jcr:requiredPrimaryTypes", "nt:base");
     }
 
     @Override
@@ -71,7 +71,7 @@ class NodeDefinitionImpl extends ItemDef
 
     @Override
     public String getDefaultPrimaryTypeName() {
-        return node.getName("jcr:defaultPrimaryTypeName", null);
+        return node.getName("jcr:defaultPrimaryType", null);
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeImpl.java Mon Jul 23 13:57:41 2012
@@ -27,6 +27,7 @@ import java.util.Set;
 
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
+import javax.jcr.ValueFactory;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 import javax.jcr.nodetype.NodeDefinition;
 import javax.jcr.nodetype.NodeType;
@@ -59,10 +60,14 @@ class NodeTypeImpl implements NodeType {
 
     private final NodeTypeManager manager;
 
+    private final ValueFactory factory;
+
     private final NodeUtil node;
 
-    public NodeTypeImpl(NodeTypeManager manager, NodeUtil node) {
+    public NodeTypeImpl(
+            NodeTypeManager manager, ValueFactory factory, NodeUtil node) {
         this.manager = manager;
+        this.factory = factory;
         this.node = node;
     }
 
@@ -107,43 +112,44 @@ class NodeTypeImpl implements NodeType {
 
     @Override
     public PropertyDefinition[] getDeclaredPropertyDefinitions() {
-        NodeUtil[] nodes = node.getNodes("jcr:propertyDefinition");
-        PropertyDefinition[] definitions = new PropertyDefinition[nodes.length];
-        for (int i = 0; i < nodes.length; i++) {
-            definitions[i] = new PropertyDefinitionImpl(this, nodes[i]);
+        List<NodeUtil> nodes = node.getNodes("jcr:propertyDefinition");
+        PropertyDefinition[] definitions = new PropertyDefinition[nodes.size()];
+        for (int i = 0; i < nodes.size(); i++) {
+            definitions[i] = new PropertyDefinitionImpl(
+                    this, factory, nodes.get(i));
         }
         return definitions;
     }
 
     @Override
     public NodeDefinition[] getDeclaredChildNodeDefinitions() {
-        NodeUtil[] nodes = node.getNodes("jcr:childNodeDefinition");
-        NodeDefinition[] definitions = new NodeDefinition[nodes.length];
-        for (int i = 0; i < nodes.length; i++) {
-            definitions[i] = new NodeDefinitionImpl(manager, this, nodes[i]);
+        List<NodeUtil> nodes = node.getNodes("jcr:childNodeDefinition");
+        NodeDefinition[] definitions = new NodeDefinition[nodes.size()];
+        for (int i = 0; i < nodes.size(); i++) {
+            definitions[i] = new NodeDefinitionImpl(manager, this, nodes.get(i));
         }
         return definitions;
     }
 
     @Override
     public NodeType[] getSupertypes() {
-        try {
-            Collection<NodeType> types = new ArrayList<NodeType>();
-            Set<String> added = new HashSet<String>();
-            Queue<String> queue = new LinkedList<String>(Arrays.asList(
-                    getDeclaredSupertypeNames()));
-            while (!queue.isEmpty()) {
-                String name = queue.remove();
-                if (added.add(name)) {
+        Collection<NodeType> types = new ArrayList<NodeType>();
+        Set<String> added = new HashSet<String>();
+        Queue<String> queue = new LinkedList<String>(Arrays.asList(
+                getDeclaredSupertypeNames()));
+        while (!queue.isEmpty()) {
+            String name = queue.remove();
+            if (added.add(name)) {
+                try {
                     NodeType type = manager.getNodeType(name);
                     types.add(type);
                     queue.addAll(Arrays.asList(type.getDeclaredSupertypeNames()));
+                } catch (RepositoryException e) {
+                    throw new IllegalStateException("Inconsistent node type: " + this, e);
                 }
             }
-            return types.toArray(new NodeType[types.size()]);
-        } catch (RepositoryException e) {
-            throw new IllegalStateException("Inconsistent node type: " + this, e);
         }
+        return types.toArray(new NodeType[types.size()]);
     }
 
     @Override
@@ -152,7 +158,8 @@ class NodeTypeImpl implements NodeType {
         List<NodeType> types = new ArrayList<NodeType>(names.length);
         for (int i = 0; i < names.length; i++) {
             try {
-                types.add(manager.getNodeType(names[i]));
+                NodeType type = manager.getNodeType(names[i]);
+                types.add(type);
             } catch (RepositoryException e) {
                 log.warn("Unable to access declared supertype "
                         + names[i] + " of " + getName(), e);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeManagerImpl.java Mon Jul 23 13:57:41 2012
@@ -50,6 +50,7 @@ import org.apache.jackrabbit.oak.core.De
 import org.apache.jackrabbit.oak.namepath.NameMapper;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 public class NodeTypeManagerImpl implements NodeTypeManager {
 
@@ -65,23 +66,54 @@ public class NodeTypeManagerImpl impleme
         this.mapper = mapper;
         this.factory = factory;
 
-        try {
-            InputStream stream = NodeTypeManagerImpl.class.getResourceAsStream(
-                    "builtin_nodetypes.cnd");
+        if (session.getCurrentRoot().getTree("/jcr:system/jcr:nodeTypes") == null) {
             try {
-                CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>> reader =
-                        new CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>>(
-                                new InputStreamReader(stream, "UTF-8"), null, new DefBuilderFactory());
-                registerNodeTypes(reader.getNodeTypeDefinitions().toArray(
-                        new NodeTypeTemplate[0]), true);
-            } finally {
-                stream.close();
+                InputStream stream = NodeTypeManagerImpl.class.getResourceAsStream(
+                        "builtin_nodetypes.cnd");
+                try {
+                    CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>> reader =
+                            new CompactNodeTypeDefReader<NodeTypeTemplate, Map<String, String>>(
+                                    new InputStreamReader(stream, "UTF-8"), null, new DefBuilderFactory());
+                    Map<String, NodeTypeTemplate> templates = Maps.newHashMap();
+                    for (NodeTypeTemplate template : reader.getNodeTypeDefinitions()) {
+                        templates.put(template.getName(), template);
+                    }
+                    for (NodeTypeTemplate template : templates.values()) {
+                        if (!template.isMixin()
+                                && !"nt:base".equals(template.getName())) {
+                            String[] supertypes =
+                                    template.getDeclaredSupertypeNames();
+                            if (supertypes.length == 0) {
+                                template.setDeclaredSuperTypeNames(
+                                        new String[] { "nt:base" });
+                            } else {
+                                // Check whether we need to add the implicit "nt:base" supertype
+                                boolean needsNtBase = true;
+                                for (String name : supertypes) {
+                                    if (!templates.get(name).isMixin()) {
+                                        needsNtBase = false;
+                                    }
+                                }
+                                if (needsNtBase) {
+                                    String[] withBase = new String[supertypes.length + 1];
+                                    withBase[0] = "nt:base";
+                                    System.arraycopy(supertypes, 0, withBase, 1, supertypes.length);
+                                    template.setDeclaredSuperTypeNames(withBase);
+                                }
+                            }
+                        }
+                    }
+                    registerNodeTypes(templates.values().toArray(
+                            new NodeTypeTemplate[templates.size()]), true);
+                } finally {
+                    stream.close();
+                }
+            } catch (Exception e) {
+                throw new IllegalStateException(
+                        "Unable to load built-in node types", e);
             }
-        } catch (Exception e) {
-            throw new IllegalStateException(
-                    "Unable to load built-in node types", e);
         }
-}
+    }
 
     protected String getOakName(String name) throws RepositoryException {
         return name; // TODO
@@ -114,7 +146,7 @@ public class NodeTypeManagerImpl impleme
         if (types != null) {
             Tree type = types.getChild(mapper.getOakName(name));
             if (type != null) {
-                return new NodeTypeImpl(this, new NodeUtil(
+                return new NodeTypeImpl(this, factory, new NodeUtil(
                         session.getCoreValueFactory(), mapper, type));
             }
         }
@@ -128,7 +160,7 @@ public class NodeTypeManagerImpl impleme
                 "/jcr:system/jcr:nodeTypes");
         if (types != null) {
             for (Tree type : types.getChildren()) {
-                list.add(new NodeTypeImpl(this, new NodeUtil(
+                list.add(new NodeTypeImpl(this, factory, new NodeUtil(
                         session.getCoreValueFactory(), mapper, type)));
                 
             }
@@ -243,28 +275,32 @@ public class NodeTypeManagerImpl impleme
             node.setName("jcr:primaryItemName", primaryItemName);
         }
 
-        Tree props = type.addChild("jcr:propertyDefinition");
+        int pdn = 1;
         for (PropertyDefinition pd : ntd.getDeclaredPropertyDefinitions()) {
-            Tree def = props.addChild(mapper.getOakName(pd.getName()));
+            Tree def = type.addChild("jcr:propertyDefinition" + pdn++);
             internalRegisterPropertyDefinition(
                     new NodeUtil(factory, mapper, def), pd);
         }
 
-        Tree nodes = type.addChild("jcr:childNodeDefinition");
+        int ndn = 1;
         for (NodeDefinition nd : ntd.getDeclaredChildNodeDefinitions()) {
-            Tree def = nodes.addChild(mapper.getOakName(nd.getName()));
+            Tree def = type.addChild("jcr:childNodeDefinition" + ndn++);
             internalRegisterNodeDefinition(
                     new NodeUtil(factory, mapper, def), nd);
         }
 
-        return new NodeTypeImpl(this, node);
+        return new NodeTypeImpl(this, this.factory, node);
     }
 
     private void internalRegisterItemDefinition(
             NodeUtil node, ItemDefinition def) {
-        node.setName("jcr:name", def.getName());
+        String name = def.getName();
+        if (!"*".equals(name)) {
+            node.setName("jcr:name", name);
+        }
         node.setBoolean("jcr:autoCreated", def.isAutoCreated());
         node.setBoolean("jcr:mandatory", def.isMandatory());
+        node.setBoolean("jcr:protected", def.isProtected());
         node.setString(
                 "jcr:onParentVersion",
                 OnParentVersionAction.nameFromValue(def.getOnParentVersion()));
@@ -290,7 +326,7 @@ public class NodeTypeManagerImpl impleme
 
         Value[] values = def.getDefaultValues();
         if (values != null) {
-            // TODO: convert to CoreValues
+            node.setValues("jcr:defaultValues", values);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeTypeTemplateImpl.java Mon Jul 23 13:57:41 2012
@@ -32,6 +32,7 @@ import javax.jcr.nodetype.PropertyDefini
 import javax.jcr.nodetype.PropertyDefinitionTemplate;
 
 import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder;
+import org.apache.jackrabbit.value.ValueFactoryImpl;
 
 class NodeTypeTemplateImpl
     extends AbstractNodeTypeDefinitionBuilder<NodeTypeTemplate>
@@ -57,7 +58,7 @@ class NodeTypeTemplateImpl
     }
 
     public NodeTypeTemplateImpl() {
-        this(null, null);
+        this(null, ValueFactoryImpl.getInstance());
     }
 
     public NodeTypeTemplateImpl(
@@ -117,11 +118,7 @@ class NodeTypeTemplateImpl
             @Override
             protected Value createValue(String value)
                     throws RepositoryException {
-                if (factory != null) {
-                    return factory.createValue(value);
-                } else {
-                    return super.createValue(value);
-                }
+                return factory.createValue(value);
             }
             @Override
             public void build() {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeUtil.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeUtil.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/NodeUtil.java Mon Jul 23 13:57:41 2012
@@ -20,18 +20,28 @@ import java.util.ArrayList;
 import java.util.List;
 
 import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
 
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.api.CoreValueFactory;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.NameMapper;
+import org.apache.jackrabbit.value.ValueFactoryImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Lists;
 
 /**
  * Utility class for accessing typed content of a node.
  */
 class NodeUtil {
 
+    private static final Logger log = LoggerFactory.getLogger(NodeUtil.class);
+
     private final CoreValueFactory factory;
 
     private final NameMapper mapper;
@@ -135,15 +145,43 @@ class NodeUtil {
         tree.setProperty(name, cvs);
     }
 
-    public NodeUtil[] getNodes(String name) {
-        List<NodeUtil> nodes = new ArrayList<NodeUtil>();
-        Tree child = tree.getChild(name);
-        if (child != null) {
-            for (Tree tree : child.getChildren()) {
-                nodes.add(new NodeUtil(factory, mapper, tree));
+    public List<NodeUtil> getNodes(String namePrefix) {
+        List<NodeUtil> nodes = Lists.newArrayList();
+        for (Tree child : tree.getChildren()) {
+            if (child.getName().startsWith(namePrefix)) {
+                nodes.add(new NodeUtil(factory, mapper, child));
+            }
+        }
+        return nodes;
+    }
+
+    public void setValues(String name, Value[] values) {
+        List<CoreValue> cvs = Lists.newArrayList();
+        for (Value value : values) {
+            try {
+                cvs.add(factory.createValue(value.getString(), value.getType()));
+            } catch (RepositoryException e) {
+                log.warn("Unable to convert a default value", e);
+            }
+        }
+        tree.setProperty(name, cvs);
+    }
+
+    public Value[] getValues(String name, ValueFactory vf) {
+        PropertyState property = tree.getProperty(name);
+        if (property != null) {
+            List<Value> values = Lists.newArrayList();
+            for (CoreValue value : property.getValues()) {
+                try {
+                    values.add(vf.createValue(value.getString(), value.getType()));
+                } catch (RepositoryException e) {
+                    log.warn("Unable to convert a default value", e);
+                }
             }
+            return values.toArray(new Value[values.size()]);
+        } else {
+            return null;
         }
-        return nodes.toArray(new NodeUtil[nodes.size()]);
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/type/PropertyDefinitionImpl.java Mon Jul 23 13:57:41 2012
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.plugin
 
 import javax.jcr.PropertyType;
 import javax.jcr.Value;
+import javax.jcr.ValueFactory;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.jcr.query.qom.QueryObjectModelConstants;
@@ -47,8 +48,11 @@ class PropertyDefinitionImpl extends Ite
     private static final Logger log =
             LoggerFactory.getLogger(PropertyDefinitionImpl.class);
 
-    public PropertyDefinitionImpl(NodeType type, NodeUtil node) {
+    private final ValueFactory factory;
+
+    public PropertyDefinitionImpl(NodeType type, ValueFactory factory, NodeUtil node) {
         super(type, node);
+        this.factory = factory;
     }
 
     @Override
@@ -70,7 +74,7 @@ class PropertyDefinitionImpl extends Ite
 
     @Override
     public Value[] getDefaultValues() {
-        return new Value[0]; // TODO
+        return node.getValues("jcr:defaultValues", factory);
     }
 
     @Override

Copied: jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/type/builtin_nodetypes.cnd (from r1364630, jackrabbit/oak/trunk/oak-jcr/src/main/resources/org/apache/jackrabbit/oak/jcr/nodetype/builtin_nodetypes.cnd)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/type/builtin_nodetypes.cnd?p2=jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/type/builtin_nodetypes.cnd&p1=jackrabbit/oak/trunk/oak-jcr/src/main/resources/org/apache/jackrabbit/oak/jcr/nodetype/builtin_nodetypes.cnd&r1=1364630&r2=1364635&rev=1364635&view=diff
==============================================================================
    (empty)

Propchange: jackrabbit/oak/trunk/oak-core/src/main/resources/org/apache/jackrabbit/oak/plugins/type/builtin_nodetypes.cnd
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Mon Jul 23 13:57:41 2012
@@ -47,6 +47,9 @@ org.apache.jackrabbit.test.api.NodeTest#
 org.apache.jackrabbit.test.api.NodeTest#testMixinTypesProtected<!--OAK-66-->
 org.apache.jackrabbit.test.api.NodeUUIDTest#testSaveReferentialIntegrityException<!--OAK-66-->
 org.apache.jackrabbit.test.api.NodeUUIDTest#testSaveMovedRefNode<!--OAK-66-->
+org.apache.jackrabbit.test.api.NodeReadMethodsTest#testGetUUID<!-- OAK-66 -->
+org.apache.jackrabbit.test.api.SessionReadMethodsTest#testGetNodeByUUID<!-- OAK-66 -->
+org.apache.jackrabbit.test.api.ExportSysViewTest<!-- OAK-66 -->
 org.apache.jackrabbit.test.api.NodeOrderableChildNodesTest#testOrderBeforeUnsupportedRepositoryOperationException<!--OAK-169-->
 org.apache.jackrabbit.test.api.NodeOrderableChildNodesTest#testOrderBeforePlaceAtEndParentSave<!--OAK-169-->
 org.apache.jackrabbit.test.api.NodeOrderableChildNodesTest#testOrderBeforePlaceAtEndSessionSave<!--OAK-169-->

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java Mon Jul 23 13:57:41 2012
@@ -46,7 +46,6 @@ public class RepositoryImpl implements R
 
     private final Descriptors descriptors = new Descriptors(new SimpleValueFactory());
     private final ContentRepository contentRepository;
-    private final NodeTypeManagerDelegate nodeTypeManagerDelegate;
 
     private final LazyValue<Timer> observationTimer = new LazyValue<Timer>() {
         @Override
@@ -57,12 +56,6 @@ public class RepositoryImpl implements R
 
     public RepositoryImpl(ContentRepository contentRepository) {
         this.contentRepository = contentRepository;
-        try {
-            nodeTypeManagerDelegate = new NodeTypeManagerDelegate();
-        }
-        catch (RepositoryException ex) {
-            throw new RuntimeException(ex);
-        }
     }
 
     /**
@@ -139,7 +132,7 @@ public class RepositoryImpl implements R
         // TODO: needs complete refactoring
         try {
             ContentSession contentSession = contentRepository.login(credentials, workspaceName);
-            return new SessionDelegate(this, nodeTypeManagerDelegate, observationTimer, contentSession).getSession();
+            return new SessionDelegate(this, observationTimer, contentSession).getSession();
         } catch (LoginException e) {
             throw new javax.jcr.LoginException(e.getMessage());
         }

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java Mon Jul 23 13:57:41 2012
@@ -51,7 +51,6 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.core.DefaultConflictHandler;
-import org.apache.jackrabbit.oak.jcr.nodetype.NodeTypeManagerDelegate;
 import org.apache.jackrabbit.oak.jcr.observation.ObservationManagerImpl;
 import org.apache.jackrabbit.oak.jcr.util.LazyValue;
 import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
@@ -67,7 +66,6 @@ public class SessionDelegate {
 
     private final NamePathMapper namePathMapper = new NamePathMapperImpl(new SessionNameMapper());
     private final Repository repository;
-    private final NodeTypeManagerDelegate nodeTypeManagerDelegate;
     private final LazyValue<Timer> observationTimer;
     private final ContentSession contentSession;
     private final ValueFactoryImpl valueFactory;
@@ -79,13 +77,12 @@ public class SessionDelegate {
     private ObservationManagerImpl observationManager;
     private boolean isAlive = true;
 
-    SessionDelegate(Repository repository, NodeTypeManagerDelegate nodeTypeManagerDelegate, LazyValue<Timer> observationTimer, ContentSession contentSession)
+    SessionDelegate(Repository repository, LazyValue<Timer> observationTimer, ContentSession contentSession)
             throws RepositoryException {
         assert repository != null;
         assert contentSession != null;
 
         this.repository = repository;
-        this.nodeTypeManagerDelegate = nodeTypeManagerDelegate;
         this.observationTimer = observationTimer;
         this.contentSession = contentSession;
         this.valueFactory = new ValueFactoryImpl(contentSession.getCoreValueFactory(), namePathMapper);
@@ -114,11 +111,6 @@ public class SessionDelegate {
         return repository;
     }
 
-    @Nonnull
-    public NodeTypeManagerDelegate getNodeTypeManagerDelegate() {
-        return nodeTypeManagerDelegate;
-    }
-
     public void logout() {
         if (!isAlive) {
             // ignore

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java?rev=1364635&r1=1364634&r2=1364635&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java Mon Jul 23 13:57:41 2012
@@ -34,11 +34,10 @@ import org.apache.jackrabbit.api.Jackrab
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.jcr.lock.LockManagerImpl;
-import org.apache.jackrabbit.oak.jcr.nodetype.NodeTypeManagerDelegate;
-import org.apache.jackrabbit.oak.jcr.nodetype.NodeTypeManagerImpl;
 import org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl;
 import org.apache.jackrabbit.oak.jcr.security.privilege.PrivilegeManagerImpl;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceRegistryImpl;
+import org.apache.jackrabbit.oak.plugins.type.NodeTypeManagerImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
@@ -55,7 +54,6 @@ public class WorkspaceImpl implements Ja
     private static final Logger log = LoggerFactory.getLogger(WorkspaceImpl.class);
 
     private final SessionDelegate sessionDelegate;
-    private final NodeTypeManager nodeTypeManager;
     private final QueryManagerImpl queryManager;
 
     private final LockManager lockManager;
@@ -63,7 +61,6 @@ public class WorkspaceImpl implements Ja
     public WorkspaceImpl(SessionDelegate sessionDelegate)
             throws RepositoryException {
         this.sessionDelegate = sessionDelegate;
-        this.nodeTypeManager = new NodeTypeManagerImpl(sessionDelegate, sessionDelegate.getNodeTypeManagerDelegate());
         this.queryManager = new QueryManagerImpl(sessionDelegate);
         this.lockManager = new LockManagerImpl(sessionDelegate.getSession());
     }
@@ -157,7 +154,10 @@ public class WorkspaceImpl implements Ja
 
     @Override
     public NodeTypeManager getNodeTypeManager() {
-        return nodeTypeManager;
+        return new NodeTypeManagerImpl(
+                sessionDelegate.getContentSession(),
+                sessionDelegate.getNamePathMapper(),
+                sessionDelegate.getValueFactory());
     }
 
     @Override