Author: reschke
Date: Tue Jul  3 14:08:34 2012
New Revision: 1356742

URL: http://svn.apache.org/viewvc?rev=1356742&view=rev
Log:
OAK-66: split NodeTypeManager into delegate and session dependent part

Added:
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerDelegate.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java

Added: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerDelegate.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerDelegate.java?rev=1356742&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerDelegate.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerDelegate.java
 Tue Jul  3 14:08:34 2012
@@ -0,0 +1,284 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.jcr.nodetype;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
+import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory;
+import 
org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeDefinitionBuilder;
+import 
org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder;
+import 
org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractPropertyDefinitionBuilder;
+import org.apache.jackrabbit.commons.cnd.ParseException;
+import org.apache.jackrabbit.oak.api.ContentSession;
+import org.apache.jackrabbit.oak.api.CoreValue;
+import org.apache.jackrabbit.oak.api.CoreValueFactory;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceRegistryImpl;
+
+public class NodeTypeManagerDelegate {
+
+    private final CoreValueFactory cvf;
+    private final NamespaceRegistry nsregistry;
+    private final List<NodeTypeDelegate> typeDelegates;
+
+    public NodeTypeManagerDelegate(ContentSession session, CoreValueFactory 
cvf) throws RepositoryException {
+        this.cvf = cvf;
+        this.nsregistry = new NamespaceRegistryImpl(session);
+
+        try {
+            InputStream stream = 
NodeTypeManagerImpl.class.getResourceAsStream("builtin_nodetypes.cnd");
+            Reader reader = new InputStreamReader(stream, "UTF-8");
+            try {
+                DefinitionBuilderFactory<NodeTypeDelegate, Map<String, 
String>> dbf = new DefinitionDelegateBuilderFactory();
+                CompactNodeTypeDefReader<NodeTypeDelegate, Map<String, 
String>> cndr = new CompactNodeTypeDefReader<NodeTypeDelegate, Map<String, 
String>>(
+                        reader, null, dbf);
+
+                typeDelegates = cndr.getNodeTypeDefinitions();
+            } catch (ParseException ex) {
+                throw new RepositoryException("Failed to load built-in node 
types", ex);
+            } finally {
+                stream.close();
+            }
+        } catch (IOException ex) {
+            throw new RepositoryException("Failed to load built-in node 
types", ex);
+        }
+    }
+
+    public List<NodeTypeDelegate> getAllNodeTypeDelegates() {
+        return typeDelegates;
+    }
+
+    private class DefinitionDelegateBuilderFactory extends 
DefinitionBuilderFactory<NodeTypeDelegate, Map<String, String>> {
+
+        private Map<String, String> nsmap = new HashMap<String, String>();
+
+        @Override
+        public Map<String, String> getNamespaceMapping() {
+            return nsmap;
+        }
+
+        @Override
+        public AbstractNodeTypeDefinitionBuilder<NodeTypeDelegate> 
newNodeTypeDefinitionBuilder() throws RepositoryException {
+            return new NodeTypeDefinitionDelegateBuilder(this);
+        }
+
+        @Override
+        public void setNamespace(String prefix, String uri) throws 
RepositoryException {
+            nsmap.put(prefix, uri);
+        }
+
+        @Override
+        public void setNamespaceMapping(Map<String, String> nsmap) {
+            this.nsmap = nsmap;
+        }
+
+        public String convertNameToOak(String cndName) throws 
RepositoryException {
+            if (cndName == null) {
+                return null;
+            } else {
+                int pos = cndName.indexOf(":");
+                if (pos < 0) {
+                    // no colon
+                    return cndName;
+                } else {
+                    String pref = cndName.substring(0, pos);
+                    String name = cndName.substring(pos + 1);
+                    String ns = nsmap.get(pref);
+
+                    if (ns == null) {
+                        throw new RepositoryException("no namespace defined 
for prefix " + pref);
+                    } else {
+                        String oakprefix = nsregistry.getPrefix(ns);
+                        return oakprefix + ":" + name;
+                    }
+                }
+            }
+        }
+
+        public List<String> convertNamesToOak(List<String> cndNames) throws 
RepositoryException {
+            List<String> result = new ArrayList<String>();
+            for (String cndName : cndNames) {
+                result.add(convertNameToOak(cndName));
+            }
+            return result;
+        }
+    }
+
+    private class NodeTypeDefinitionDelegateBuilder extends 
AbstractNodeTypeDefinitionBuilder<NodeTypeDelegate> {
+
+        private final List<PropertyDefinitionDelegateBuilder> 
propertyDefinitions = new ArrayList<PropertyDefinitionDelegateBuilder>();
+        private final List<NodeDefinitionDelegateBuilder> childNodeDefinitions 
= new ArrayList<NodeDefinitionDelegateBuilder>();
+
+        private final DefinitionDelegateBuilderFactory ddbf;
+
+        private String primaryItemName;
+        private List<String> declaredSuperTypes = new ArrayList<String>();
+
+        public 
NodeTypeDefinitionDelegateBuilder(DefinitionDelegateBuilderFactory ddbf) {
+            this.ddbf = ddbf;
+        }
+
+        @Override
+        public void addSupertype(String superType) throws RepositoryException {
+            this.declaredSuperTypes.add(superType);
+        }
+
+        @Override
+        public void setPrimaryItemName(String primaryItemName) throws 
RepositoryException {
+            this.primaryItemName = primaryItemName;
+        }
+
+        @Override
+        public AbstractPropertyDefinitionBuilder<NodeTypeDelegate> 
newPropertyDefinitionBuilder() throws RepositoryException {
+            return new PropertyDefinitionDelegateBuilder(this);
+        }
+
+        @Override
+        public AbstractNodeDefinitionBuilder<NodeTypeDelegate> 
newNodeDefinitionBuilder() throws RepositoryException {
+            return new NodeDefinitionDelegateBuilder(this);
+        }
+
+        @Override
+        public NodeTypeDelegate build() throws RepositoryException {
+
+            name = ddbf.convertNameToOak(name);
+            declaredSuperTypes = ddbf.convertNamesToOak(declaredSuperTypes);
+            primaryItemName = ddbf.convertNameToOak(primaryItemName);
+
+            NodeTypeDelegate result = new NodeTypeDelegate(name, 
declaredSuperTypes.toArray(new String[declaredSuperTypes.size()]),
+                    primaryItemName, isMixin, isAbstract, isOrderable);
+
+            for (PropertyDefinitionDelegateBuilder pdb : propertyDefinitions) {
+                
result.addPropertyDefinitionDelegate(pdb.getPropertyDefinitionDelegate());
+            }
+
+            for (NodeDefinitionDelegateBuilder ndb : childNodeDefinitions) {
+                
result.addChildNodeDefinitionDelegate(ndb.getNodeDefinitionDelegate());
+            }
+
+            return result;
+        }
+
+        public void addPropertyDefinition(PropertyDefinitionDelegateBuilder 
pd) {
+            this.propertyDefinitions.add(pd);
+        }
+
+        public void addNodeDefinition(NodeDefinitionDelegateBuilder nd) {
+            this.childNodeDefinitions.add(nd);
+        }
+
+        public String convertNameToOak(String name) throws RepositoryException 
{
+            return ddbf.convertNameToOak(name);
+        }
+    }
+
+    private class NodeDefinitionDelegateBuilder extends 
AbstractNodeDefinitionBuilder<NodeTypeDelegate> {
+
+        private String declaringNodeType;
+        private String defaultPrimaryType;
+        private final List<String> requiredPrimaryTypes = new 
ArrayList<String>();
+
+        private final NodeTypeDefinitionDelegateBuilder ndtb;
+
+        public NodeDefinitionDelegateBuilder(NodeTypeDefinitionDelegateBuilder 
ntdb) {
+            this.ndtb = ntdb;
+        }
+
+        public NodeDefinitionDelegate getNodeDefinitionDelegate() {
+            return new NodeDefinitionDelegate(name, autocreate, isMandatory, 
onParent, isProtected,
+                    requiredPrimaryTypes.toArray(new 
String[requiredPrimaryTypes.size()]), defaultPrimaryType, allowSns);
+        }
+
+        @Override
+        public void setDefaultPrimaryType(String defaultPrimaryType) throws 
RepositoryException {
+            this.defaultPrimaryType = defaultPrimaryType;
+        }
+
+        @Override
+        public void addRequiredPrimaryType(String name) throws 
RepositoryException {
+            this.requiredPrimaryTypes.add(name);
+        }
+
+        @Override
+        public void setDeclaringNodeType(String declaringNodeType) throws 
RepositoryException {
+            this.declaringNodeType = declaringNodeType;
+        }
+
+        @Override
+        public void build() throws RepositoryException {
+            this.ndtb.addNodeDefinition(this);
+        }
+    }
+
+    private class PropertyDefinitionDelegateBuilder extends 
AbstractPropertyDefinitionBuilder<NodeTypeDelegate> {
+
+        private String declaringNodeType;
+        private final List<String> defaultValues = new ArrayList<String>();
+        private final List<String> valueConstraints = new ArrayList<String>();
+
+        private final NodeTypeDefinitionDelegateBuilder ndtb;
+
+        public 
PropertyDefinitionDelegateBuilder(NodeTypeDefinitionDelegateBuilder ntdb) {
+            this.ndtb = ntdb;
+        }
+
+        public PropertyDefinitionDelegate getPropertyDefinitionDelegate() 
throws RepositoryException {
+
+            CoreValue[] defaultCoreValues = new 
CoreValue[defaultValues.size()];
+
+            for (int i = 0; i < defaultCoreValues.length; i++) {
+                // TODO: need name mapping?
+                defaultCoreValues[i] = cvf.createValue(defaultValues.get(i), 
requiredType);
+            }
+
+            name = ndtb.convertNameToOak(name);
+
+            return new PropertyDefinitionDelegate(name, autocreate, 
isMandatory, onParent, isProtected, requiredType, isMultiple,
+                    defaultCoreValues);
+        }
+
+        @Override
+        public void addValueConstraint(String constraint) throws 
RepositoryException {
+            this.valueConstraints.add(constraint);
+        }
+
+        @Override
+        public void addDefaultValues(String value) throws RepositoryException {
+            this.defaultValues.add(value);
+        }
+
+        @Override
+        public void setDeclaringNodeType(String declaringNodeType) throws 
RepositoryException {
+            this.declaringNodeType = declaringNodeType;
+        }
+
+        @Override
+        public void build() throws RepositoryException {
+            this.ndtb.addPropertyDefinition(this);
+        }
+    }
+}

Propchange: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerDelegate.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java?rev=1356742&r1=1356741&r2=1356742&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java
 Tue Jul  3 14:08:34 2012
@@ -16,10 +16,6 @@
  */
 package org.apache.jackrabbit.oak.jcr.nodetype;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -27,7 +23,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.jcr.NamespaceRegistry;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
@@ -39,56 +34,29 @@ import javax.jcr.nodetype.NodeTypeManage
 import javax.jcr.nodetype.NodeTypeTemplate;
 import javax.jcr.nodetype.PropertyDefinitionTemplate;
 
-import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
-import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory;
-import 
org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeDefinitionBuilder;
-import 
org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder;
-import 
org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractPropertyDefinitionBuilder;
-import org.apache.jackrabbit.commons.cnd.ParseException;
 import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
-import org.apache.jackrabbit.oak.api.CoreValue;
-import org.apache.jackrabbit.oak.api.CoreValueFactory;
 import org.apache.jackrabbit.oak.jcr.SessionDelegate;
 import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl;
 import org.apache.jackrabbit.oak.namepath.NameMapper;
-import org.apache.jackrabbit.oak.plugins.name.NamespaceRegistryImpl;
 
 public class NodeTypeManagerImpl implements NodeTypeManager {
 
     private final ValueFactoryImpl vf;
     private final NameMapper mapper;
-    private final NamespaceRegistry nsregistry;
-    private final List<NodeTypeDelegate> typeDelegates;
-
+    private final NodeTypeManagerDelegate ntmd;
     private final Map<String, NodeType> typemap = new HashMap<String, 
NodeType>();
 
     public NodeTypeManagerImpl(SessionDelegate sd) throws RepositoryException {
         this.vf = sd.getValueFactory();
         this.mapper = sd.getNamePathMapper();
-        this.nsregistry = new NamespaceRegistryImpl(sd.getContentSession());
-
-        try {
-            InputStream stream = 
NodeTypeManagerImpl.class.getResourceAsStream("builtin_nodetypes.cnd");
-            Reader reader = new InputStreamReader(stream, "UTF-8");
-            try {
-                DefinitionBuilderFactory<NodeTypeDelegate, Map<String, 
String>> dbf = new DefinitionDelegateBuilderFactory();
-                CompactNodeTypeDefReader<NodeTypeDelegate, Map<String, 
String>> cndr = new CompactNodeTypeDefReader<NodeTypeDelegate, Map<String, 
String>>(
-                        reader, null, dbf);
-
-                typeDelegates = cndr.getNodeTypeDefinitions();
-            } catch (ParseException ex) {
-                throw new RepositoryException("Failed to load built-in node 
types", ex);
-            } finally {
-                stream.close();
-            }
-        } catch (IOException ex) {
-            throw new RepositoryException("Failed to load built-in node 
types", ex);
-        }
+        this.ntmd = new NodeTypeManagerDelegate(sd.getContentSession(), 
sd.getValueFactory().getCoreValueFactory());
     }
 
     private void init() {
         if (typemap.isEmpty()) {
-            for (NodeTypeDelegate t : typeDelegates) {
+            List<NodeTypeDelegate> alltypes = ntmd.getAllNodeTypeDelegates();
+
+            for (NodeTypeDelegate t : alltypes) {
                 NodeType nt = new NodeTypeImpl(this, vf, mapper, t);
                 typemap.put(t.getName(), nt);
             }
@@ -194,214 +162,4 @@ public class NodeTypeManagerImpl impleme
     public void unregisterNodeTypes(String[] names) throws RepositoryException 
{
         throw new UnsupportedRepositoryOperationException();
     }
-
-    private class DefinitionDelegateBuilderFactory extends 
DefinitionBuilderFactory<NodeTypeDelegate, Map<String, String>> {
-
-        private Map<String, String> nsmap = new HashMap<String, String>();
-        
-        @Override
-        public Map<String, String> getNamespaceMapping() {
-            return nsmap;
-        }
-
-        @Override
-        public AbstractNodeTypeDefinitionBuilder<NodeTypeDelegate> 
newNodeTypeDefinitionBuilder() throws RepositoryException {
-            return new NodeTypeDefinitionDelegateBuilder(this);
-        }
-
-        @Override
-        public void setNamespace(String prefix, String uri) throws 
RepositoryException {
-            nsmap.put(prefix, uri);
-        }
-
-        @Override
-        public void setNamespaceMapping(Map<String, String> nsmap) {
-            this.nsmap = nsmap;
-        }
-
-        public String convertNameToOak(String cndName) throws 
RepositoryException {
-            if (cndName == null) {
-                return null;
-            } else {
-                int pos = cndName.indexOf(":");
-                if (pos < 0) {
-                    // no colon
-                    return cndName;
-                } else {
-                    String pref = cndName.substring(0, pos);
-                    String name = cndName.substring(pos + 1);
-                    String ns = nsmap.get(pref);
-
-                    if (ns == null) {
-                        throw new RepositoryException("no namespace defined 
for prefix " + pref);
-                    } else {
-                        String oakprefix = nsregistry.getPrefix(ns);
-                        return oakprefix + ":" + name;
-                    }
-                }
-            }
-        }
-
-        public List<String> convertNamesToOak(List<String> cndNames) throws 
RepositoryException {
-            List<String> result = new ArrayList<String>();
-            for (String cndName : cndNames) {
-                result.add(convertNameToOak(cndName));
-            }
-            return result;
-        }
-    }
-
-    private class NodeTypeDefinitionDelegateBuilder extends 
AbstractNodeTypeDefinitionBuilder<NodeTypeDelegate> {
-
-        private final List<PropertyDefinitionDelegateBuilder> 
propertyDefinitions = new ArrayList<PropertyDefinitionDelegateBuilder>();
-        private final List<NodeDefinitionDelegateBuilder> childNodeDefinitions 
= new ArrayList<NodeDefinitionDelegateBuilder>();
-
-        private final DefinitionDelegateBuilderFactory ddbf;
-
-        private String primaryItemName;
-        private List<String> declaredSuperTypes = new ArrayList<String>();
-
-        public 
NodeTypeDefinitionDelegateBuilder(DefinitionDelegateBuilderFactory ddbf) {
-            this.ddbf = ddbf;
-        }
-
-        @Override
-        public void addSupertype(String superType) throws RepositoryException {
-            this.declaredSuperTypes.add(superType);
-        }
-
-        @Override
-        public void setPrimaryItemName(String primaryItemName) throws 
RepositoryException {
-            this.primaryItemName = primaryItemName;
-        }
-
-        @Override
-        public AbstractPropertyDefinitionBuilder<NodeTypeDelegate> 
newPropertyDefinitionBuilder() throws RepositoryException {
-            return new PropertyDefinitionDelegateBuilder(this);
-        }
-
-        @Override
-        public AbstractNodeDefinitionBuilder<NodeTypeDelegate> 
newNodeDefinitionBuilder() throws RepositoryException {
-            return new NodeDefinitionDelegateBuilder(this);
-        }
-
-        @Override
-        public NodeTypeDelegate build() throws RepositoryException {
-
-            name = ddbf.convertNameToOak(name);
-            declaredSuperTypes = ddbf.convertNamesToOak(declaredSuperTypes);
-            primaryItemName = ddbf.convertNameToOak(primaryItemName);
-
-            NodeTypeDelegate result = new NodeTypeDelegate(name, 
declaredSuperTypes.toArray(new String[declaredSuperTypes.size()]),
-                    primaryItemName, isMixin, isAbstract, isOrderable);
-
-            for (PropertyDefinitionDelegateBuilder pdb : propertyDefinitions) {
-                
result.addPropertyDefinitionDelegate(pdb.getPropertyDefinitionDelegate(vf.getCoreValueFactory()));
-            }
-
-            for (NodeDefinitionDelegateBuilder ndb : childNodeDefinitions) {
-                
result.addChildNodeDefinitionDelegate(ndb.getNodeDefinitionDelegate());
-            }
-
-            return result;
-        }
-
-        public void addPropertyDefinition(PropertyDefinitionDelegateBuilder 
pd) {
-            this.propertyDefinitions.add(pd);
-        }
-
-        public void addNodeDefinition(NodeDefinitionDelegateBuilder nd) {
-            this.childNodeDefinitions.add(nd);
-        }
-
-        public String convertNameToOak(String name) throws RepositoryException 
{
-            return ddbf.convertNameToOak(name);
-        }
-    }
-
-    private class NodeDefinitionDelegateBuilder extends 
AbstractNodeDefinitionBuilder<NodeTypeDelegate> {
-
-        private String declaringNodeType;
-        private String defaultPrimaryType;
-        private final List<String> requiredPrimaryTypes = new 
ArrayList<String>();
-
-        private final NodeTypeDefinitionDelegateBuilder ndtb;
-
-        public NodeDefinitionDelegateBuilder(NodeTypeDefinitionDelegateBuilder 
ntdb) {
-            this.ndtb = ntdb;
-        }
-
-        public NodeDefinitionDelegate getNodeDefinitionDelegate() {
-            return new NodeDefinitionDelegate(name, autocreate, isMandatory, 
onParent, isProtected,
-                    requiredPrimaryTypes.toArray(new 
String[requiredPrimaryTypes.size()]), defaultPrimaryType, allowSns);
-        }
-
-        @Override
-        public void setDefaultPrimaryType(String defaultPrimaryType) throws 
RepositoryException {
-            this.defaultPrimaryType = defaultPrimaryType;
-        }
-
-        @Override
-        public void addRequiredPrimaryType(String name) throws 
RepositoryException {
-            this.requiredPrimaryTypes.add(name);
-        }
-
-        @Override
-        public void setDeclaringNodeType(String declaringNodeType) throws 
RepositoryException {
-            this.declaringNodeType = declaringNodeType;
-        }
-
-        @Override
-        public void build() throws RepositoryException {
-            this.ndtb.addNodeDefinition(this);
-        }
-    }
-
-    private class PropertyDefinitionDelegateBuilder extends 
AbstractPropertyDefinitionBuilder<NodeTypeDelegate> {
-
-        private String declaringNodeType;
-        private final List<String> defaultValues = new ArrayList<String>();
-        private final List<String> valueConstraints = new ArrayList<String>();
-
-        private final NodeTypeDefinitionDelegateBuilder ndtb;
-
-        public 
PropertyDefinitionDelegateBuilder(NodeTypeDefinitionDelegateBuilder ntdb) {
-            this.ndtb = ntdb;
-        }
-
-        public PropertyDefinitionDelegate 
getPropertyDefinitionDelegate(CoreValueFactory cvf) throws RepositoryException {
-
-            CoreValue[] defaultCoreValues = new 
CoreValue[defaultValues.size()];
-
-            for (int i = 0; i < defaultCoreValues.length; i++) {
-                // TODO: need name mapping?
-                defaultCoreValues[i] = cvf.createValue(defaultValues.get(i), 
requiredType);
-            }
-
-            name = ndtb.convertNameToOak(name);
-
-            return new PropertyDefinitionDelegate(name, autocreate, 
isMandatory, onParent, isProtected, requiredType, isMultiple,
-                    defaultCoreValues);
-        }
-
-        @Override
-        public void addValueConstraint(String constraint) throws 
RepositoryException {
-            this.valueConstraints.add(constraint);
-        }
-
-        @Override
-        public void addDefaultValues(String value) throws RepositoryException {
-            this.defaultValues.add(value);
-        }
-
-        @Override
-        public void setDeclaringNodeType(String declaringNodeType) throws 
RepositoryException {
-            this.declaringNodeType = declaringNodeType;
-        }
-
-        @Override
-        public void build() throws RepositoryException {
-            this.ndtb.addPropertyDefinition(this);
-        }
-    }
 }


Reply via email to