You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/09/18 11:59:26 UTC
svn commit: r816568 - in /jackrabbit/trunk:
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/
jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commo...
Author: mreutegg
Date: Fri Sep 18 09:59:25 2009
New Revision: 816568
URL: http://svn.apache.org/viewvc?rev=816568&view=rev
Log:
JCR-1483: Move common node type functionality to jackrabbit-spi-commons
- moved common functionality from NodeTypeImpl (core and jcr2spi) to AbstractNodeType (spi-commons)
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeImpl.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeType.java
jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeTypeManager.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeImpl.java?rev=816568&r1=816567&r2=816568&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeImpl.java Fri Sep 18 09:59:25 2009
@@ -21,7 +21,6 @@
import java.util.Set;
import java.util.List;
-import javax.jcr.NamespaceException;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
@@ -53,11 +52,8 @@
private static Logger log = LoggerFactory.getLogger(NodeTypeImpl.class);
- private final QNodeTypeDefinition ntd;
private final EffectiveNodeType ent;
private final NodeTypeManagerImpl ntMgr;
- // resolver used to translate translate <code>Name</code>s to JCR name strings.
- private final NamePathResolver resolver;
// value factory used for type conversion
private final ValueFactory valueFactory;
private final DataStore store;
@@ -84,20 +80,15 @@
NamePathResolver resolver,
ValueFactory valueFactory,
DataStore store) {
- super(ntMgr);
+ super(ntd, ntMgr, resolver);
this.ent = ent;
this.ntMgr = ntMgr;
- this.resolver = resolver;
this.valueFactory = valueFactory;
- this.ntd = ntd;
this.store = store;
}
/**
- * Checks if the effective node type includes the given <code>nodeTypeName</code>.
- *
- * @param nodeTypeName the name of a node type.
- * @return true if the effective node type includes the given <code>nodeTypeName</code>.
+ * {@inheritDoc}
*/
public boolean isNodeType(Name nodeTypeName) {
return ent.includesNodeType(nodeTypeName);
@@ -116,15 +107,6 @@
}
/**
- * Returns the definition of this node type.
- *
- * @return the definition of this node type
- */
- public QNodeTypeDefinition getDefinition() {
- return ntd;
- }
-
- /**
* Returns an array containing only those child node definitions of this
* node type (including the child node definitions inherited from supertypes
* of this node type) where <code>{@link NodeDefinition#isAutoCreated()}</code>
@@ -241,76 +223,6 @@
//---------------------------------------------------< NodeTypeDefinition >
- /**
- * {@inheritDoc}
- */
- public String getName() {
- try {
- return resolver.getJCRName(ntd.getName());
- } catch (NamespaceException e) {
- // should never get here
- log.error("encountered unregistered namespace in node type name", e);
- return ntd.getName().toString();
- }
- }
-
- /**
- * Returns the names of the supertypes actually declared in this node type.
- * <p/>
- * In implementations that support node type registration, if this
- * <code>NodeTypeDefinition</code> object is actually a newly-created empty
- * <code>NodeTypeTemplate</code>, then this method will return an array
- * containing a single string indicating the node type
- * <code>nt:base</code>.
- *
- * @return an array of <code>String</code>s
- * @since JCR 2.0
- */
- public String[] getDeclaredSupertypeNames() {
- Name[] ntNames = ntd.getSupertypes();
- String[] supertypes = new String[ntNames.length];
- for (int i = 0; i < ntNames.length; i++) {
- try {
- supertypes[i] = resolver.getJCRName(ntNames[i]);
- } catch (NamespaceException e) {
- // should never get here
- log.error("encountered unregistered namespace in node type name", e);
- supertypes[i] = ntNames[i].toString();
- }
- }
- return supertypes;
- }
-
- /**
- * Returns <code>true</code> if this is an abstract node type; returns
- * <code>false</code> otherwise.
- * <p/>
- * An abstract node type is one that cannot be assigned as the primary or
- * mixin type of a node but can be used in the definitions of other node
- * types as a superclass.
- * <p/>
- * In implementations that support node type registration, if this
- * <code>NodeTypeDefinition</code> object is actually a newly-created empty
- * <code>NodeTypeTemplate</code>, then this method will return
- * <code>false</code>.
- *
- * @return a <code>boolean</code>
- * @since JCR 2.0
- */
- public boolean isAbstract() {
- return ntd.isAbstract();
- }
-
- /**
- * {@inheritDoc}
- */
- public boolean isMixin() {
- return ntd.isMixin();
- }
-
- public boolean isQueryable() {
- return ntd.isQueryable();
- }
/**
* {@inheritDoc}
@@ -319,72 +231,7 @@
return ent.hasOrderableChildNodes();
}
- /**
- * {@inheritDoc}
- */
- public String getPrimaryItemName() {
- // TODO JCR-1947: JSR 283: Node Type Attribute Subtyping Rules
- try {
- Name piName = ntd.getPrimaryItemName();
- if (piName != null) {
- return resolver.getJCRName(piName);
- } else {
- return null;
- }
- } catch (NamespaceException e) {
- // should never get here
- log.error("encountered unregistered namespace in name of primary item", e);
- return ntd.getName().toString();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public NodeType[] getDeclaredSupertypes() {
- Name[] ntNames = ntd.getSupertypes();
- NodeType[] supertypes = new NodeType[ntNames.length];
- for (int i = 0; i < ntNames.length; i++) {
- try {
- supertypes[i] = ntMgr.getNodeType(ntNames[i]);
- } catch (NoSuchNodeTypeException e) {
- // should never get here
- log.error("undefined supertype", e);
- return new NodeType[0];
- }
- }
- return supertypes;
- }
-
- /**
- * {@inheritDoc}
- */
- public NodeDefinition[] getDeclaredChildNodeDefinitions() {
- QNodeDefinition[] cnda = ntd.getChildNodeDefs();
- NodeDefinition[] nodeDefs = new NodeDefinition[cnda.length];
- for (int i = 0; i < cnda.length; i++) {
- nodeDefs[i] = ntMgr.getNodeDefinition(cnda[i]);
- }
- return nodeDefs;
- }
-
//-------------------------------------------------------------< NodeType >
- /**
- * {@inheritDoc}
- */
- public boolean isNodeType(String nodeTypeName) {
- Name ntName;
- try {
- ntName = resolver.getQName(nodeTypeName);
- } catch (NamespaceException e) {
- log.warn("invalid node type name: " + nodeTypeName, e);
- return false;
- } catch (NameException e) {
- log.warn("invalid node type name: " + nodeTypeName, e);
- return false;
- }
- return isNodeType(ntName);
- }
/**
* {@inheritDoc}
@@ -612,18 +459,6 @@
return false;
}
- /**
- * {@inheritDoc}
- */
- public PropertyDefinition[] getDeclaredPropertyDefinitions() {
- QPropertyDefinition[] pda = ntd.getPropertyDefs();
- PropertyDefinition[] propDefs = new PropertyDefinition[pda.length];
- for (int i = 0; i < pda.length; i++) {
- propDefs[i] = ntMgr.getPropertyDefinition(pda[i]);
- }
- return propDefs;
- }
-
//--------------------------------------------------< new JSR 283 methods >
/**
* Returns <code>true</code> if removing the child node called
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java?rev=816568&r1=816567&r2=816568&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java Fri Sep 18 09:59:25 2009
@@ -24,7 +24,6 @@
import org.apache.jackrabbit.spi.QValue;
import org.apache.jackrabbit.spi.commons.conversion.NameException;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
import org.apache.jackrabbit.spi.commons.nodetype.AbstractNodeType;
import org.apache.jackrabbit.spi.commons.value.ValueFormat;
@@ -51,7 +50,6 @@
private static Logger log = LoggerFactory.getLogger(NodeTypeImpl.class);
- private final QNodeTypeDefinition ntd;
private final EffectiveNodeType ent;
private final NodeTypeManagerImpl ntMgr;
private final ManagerProvider mgrProvider;
@@ -70,15 +68,10 @@
*/
NodeTypeImpl(EffectiveNodeType ent, QNodeTypeDefinition ntd,
NodeTypeManagerImpl ntMgr, ManagerProvider mgrProvider) {
- super(ntMgr);
+ super(ntd, ntMgr, mgrProvider.getNamePathResolver());
this.ent = ent;
this.ntMgr = ntMgr;
this.mgrProvider = mgrProvider;
- this.ntd = ntd;
- }
-
- private NamespaceResolver nsResolver() {
- return mgrProvider.getNamespaceResolver();
}
private NamePathResolver resolver() {
@@ -106,30 +99,13 @@
}
/**
- * Test if this nodetype equals or is directly or indirectly derived from
- * the node type with the specified <code>nodeTypeName</code>, without
- * checking of a node type of that name really exists.
- *
- * @param nodeTypeName A node type name.
- * @return true if this node type represents the type with the given
- * <code>nodeTypeName</code> or if it is directly or indirectly derived
- * from it; otherwise <code>false</code>. If no node type exists with the
- * specified name this method will also return <code>false</code>.
+ * {@inheritDoc}
*/
public boolean isNodeType(Name nodeTypeName) {
return ent.includesNodeType(nodeTypeName);
}
/**
- * Returns the node type definition.
- *
- * @return the internal node type definition.
- */
- QNodeTypeDefinition getDefinition() {
- return ntd;
- }
-
- /**
* Tests if the value constraints defined in the property definition
* <code>def</code> are satisfied by the the specified <code>values</code>.
* <p/>
@@ -149,43 +125,6 @@
}
//-------------------------------------------------< NodeTypeDefinition >---
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#getName()
- */
- public String getName() {
- try {
- return resolver().getJCRName(ntd.getName());
- } catch (NamespaceException e) {
- // should never get here
- log.error("encountered unregistered namespace in node type name", e);
- return ntd.getName().toString();
- }
- }
-
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#getPrimaryItemName()
- */
- public String getPrimaryItemName() {
- try {
- Name piName = ntd.getPrimaryItemName();
- if (piName != null) {
- return resolver().getJCRName(piName);
- } else {
- return null;
- }
- } catch (NamespaceException e) {
- // should never get here
- log.error("encountered unregistered namespace in name of primary item", e);
- return ntd.getName().toString();
- }
- }
-
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#isMixin()
- */
- public boolean isMixin() {
- return ntd.isMixin();
- }
/**
* @see javax.jcr.nodetype.NodeTypeDefinition#hasOrderableChildNodes()
@@ -194,80 +133,7 @@
return ntd.hasOrderableChildNodes();
}
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#isAbstract()
- */
- public boolean isAbstract() {
- return ntd.isAbstract();
- }
-
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#isQueryable()
- */
- public boolean isQueryable() {
- return ntd.isQueryable();
- }
-
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredPropertyDefinitions()
- */
- public PropertyDefinition[] getDeclaredPropertyDefinitions() {
- QPropertyDefinition[] pda = ntd.getPropertyDefs();
- PropertyDefinition[] propDefs = new PropertyDefinition[pda.length];
- for (int i = 0; i < pda.length; i++) {
- propDefs[i] = ntMgr.getPropertyDefinition(pda[i]);
- }
- return propDefs;
- }
-
-
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredChildNodeDefinitions()
- */
- public NodeDefinition[] getDeclaredChildNodeDefinitions() {
- QNodeDefinition[] cnda = ntd.getChildNodeDefs();
- NodeDefinition[] nodeDefs = new NodeDefinition[cnda.length];
- for (int i = 0; i < cnda.length; i++) {
- nodeDefs[i] = ntMgr.getNodeDefinition(cnda[i]);
- }
- return nodeDefs;
- }
-
- /**
- * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredSupertypeNames()
- */
- public String[] getDeclaredSupertypeNames() {
- Name[] stNames = ntd.getSupertypes();
- String[] dstn = new String[stNames.length];
- for (int i = 0; i < stNames.length; i++) {
- try {
- dstn[i] = resolver().getJCRName(stNames[i]);
- } catch (NamespaceException e) {
- // should never get here
- log.error("invalid node type name: " + stNames[i], e);
- dstn[i] = stNames.toString();
- }
- }
- return dstn;
- }
-
//-----------------------------------------------------------< NodeType >---
- /**
- * @see javax.jcr.nodetype.NodeType#isNodeType(String)
- */
- public boolean isNodeType(String nodeTypeName) {
- Name ntName;
- try {
- ntName = resolver().getQName(nodeTypeName);
- } catch (NamespaceException e) {
- log.warn("invalid node type name: " + nodeTypeName, e);
- return false;
- } catch (NameException e) {
- log.warn("invalid node type name: " + nodeTypeName, e);
- return false;
- }
- return isNodeType(ntName);
- }
/**
* @see javax.jcr.nodetype.NodeType#getSupertypes()
@@ -312,24 +178,6 @@
}
/**
- * @see javax.jcr.nodetype.NodeType#getDeclaredSupertypes()
- */
- public NodeType[] getDeclaredSupertypes() {
- Name[] ntNames = ntd.getSupertypes();
- NodeType[] supertypes = new NodeType[ntNames.length];
- for (int i = 0; i < ntNames.length; i++) {
- try {
- supertypes[i] = ntMgr.getNodeType(ntNames[i]);
- } catch (NoSuchNodeTypeException e) {
- // should never get here
- log.error("undefined supertype", e);
- return new NodeType[0];
- }
- }
- return supertypes;
- }
-
- /**
* @see javax.jcr.nodetype.NodeType#canSetProperty(String, Value)
*/
public boolean canSetProperty(String propertyName, Value value) {
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeType.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeType.java?rev=816568&r1=816567&r2=816568&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeType.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeType.java Fri Sep 18 09:59:25 2009
@@ -19,10 +19,21 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
+import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QNodeDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.conversion.NameException;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.RepositoryException;
+import javax.jcr.NamespaceException;
+
import java.util.ArrayList;
/**
@@ -38,18 +49,109 @@
*/
private static final Logger log = LoggerFactory.getLogger(AbstractNodeType.class);
- private final AbstractNodeTypeManager ntMgr;
+ protected final AbstractNodeTypeManager ntMgr;
+
+ protected final QNodeTypeDefinition ntd;
+
+ protected final NamePathResolver resolver;
/**
* Create a new <code>AbstractNodeType</code>.
*
- * @param ntMgr
+ * @param ntd the underlying node type definition.
+ * @param ntMgr the node type manager.
+ * @param resolver the name/path resolver of the session that created this
+ * node type instance.
*/
- public AbstractNodeType(AbstractNodeTypeManager ntMgr) {
+ public AbstractNodeType(QNodeTypeDefinition ntd,
+ AbstractNodeTypeManager ntMgr,
+ NamePathResolver resolver) {
+ this.ntd = ntd;
this.ntMgr = ntMgr;
+ this.resolver = resolver;
+ }
+
+ /**
+ * Returns the node type definition.
+ *
+ * @return the internal node type definition.
+ */
+ public QNodeTypeDefinition getDefinition() {
+ return ntd;
}
//-----------------------------------------------------------< NodeType >---
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getName() {
+ try {
+ return resolver.getJCRName(ntd.getName());
+ } catch (NamespaceException e) {
+ // should never get here
+ log.error("encountered unregistered namespace in node type name", e);
+ return ntd.getName().toString();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isAbstract() {
+ return ntd.isAbstract();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isMixin() {
+ return ntd.isMixin();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isQueryable() {
+ return ntd.isQueryable();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String[] getDeclaredSupertypeNames() {
+ Name[] ntNames = ntd.getSupertypes();
+ String[] supertypes = new String[ntNames.length];
+ for (int i = 0; i < ntNames.length; i++) {
+ try {
+ supertypes[i] = resolver.getJCRName(ntNames[i]);
+ } catch (NamespaceException e) {
+ // should never get here
+ log.error("encountered unregistered namespace in node type name", e);
+ supertypes[i] = ntNames[i].toString();
+ }
+ }
+ return supertypes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public NodeType[] getDeclaredSupertypes() {
+ Name[] ntNames = ntd.getSupertypes();
+ NodeType[] supertypes = new NodeType[ntNames.length];
+ for (int i = 0; i < ntNames.length; i++) {
+ try {
+ supertypes[i] = ntMgr.getNodeType(ntNames[i]);
+ } catch (NoSuchNodeTypeException e) {
+ // should never get here
+ log.error("undefined supertype", e);
+ return new NodeType[0];
+ }
+ }
+ return supertypes;
+ }
+
/**
* @see javax.jcr.nodetype.NodeType#getDeclaredSubtypes()
*/
@@ -64,7 +166,81 @@
return getSubtypes(false);
}
+ /**
+ * {@inheritDoc}
+ */
+ public NodeDefinition[] getDeclaredChildNodeDefinitions() {
+ QNodeDefinition[] cnda = ntd.getChildNodeDefs();
+ NodeDefinition[] nodeDefs = new NodeDefinition[cnda.length];
+ for (int i = 0; i < cnda.length; i++) {
+ nodeDefs[i] = ntMgr.getNodeDefinition(cnda[i]);
+ }
+ return nodeDefs;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getPrimaryItemName() {
+ // TODO JCR-1947: JSR 283: Node Type Attribute Subtyping Rules
+ try {
+ Name piName = ntd.getPrimaryItemName();
+ if (piName != null) {
+ return resolver.getJCRName(piName);
+ } else {
+ return null;
+ }
+ } catch (NamespaceException e) {
+ // should never get here
+ log.error("encountered unregistered namespace in name of primary item", e);
+ return ntd.getName().toString();
+ }
+ }
+
+ /**
+ * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredPropertyDefinitions()
+ */
+ public PropertyDefinition[] getDeclaredPropertyDefinitions() {
+ QPropertyDefinition[] pda = ntd.getPropertyDefs();
+ PropertyDefinition[] propDefs = new PropertyDefinition[pda.length];
+ for (int i = 0; i < pda.length; i++) {
+ propDefs[i] = ntMgr.getPropertyDefinition(pda[i]);
+ }
+ return propDefs;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isNodeType(String nodeTypeName) {
+ Name ntName;
+ try {
+ ntName = resolver.getQName(nodeTypeName);
+ } catch (NamespaceException e) {
+ log.warn("invalid node type name: " + nodeTypeName, e);
+ return false;
+ } catch (NameException e) {
+ log.warn("invalid node type name: " + nodeTypeName, e);
+ return false;
+ }
+ return isNodeType(ntName);
+ }
+
+ /**
+ * Test if this nodetype equals or is directly or indirectly derived from
+ * the node type with the specified <code>nodeTypeName</code>, without
+ * checking of a node type of that name really exists.
+ *
+ * @param nodeTypeName A node type name.
+ * @return true if this node type represents the type with the given
+ * <code>nodeTypeName</code> or if it is directly or indirectly derived
+ * from it; otherwise <code>false</code>. If no node type exists with the
+ * specified name this method will also return <code>false</code>.
+ */
+ public abstract boolean isNodeType(Name nodeTypeName);
+
//--------------------------------------------------------------------------
+
/**
* Returns the node types derived from this node type.
*
Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeTypeManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeTypeManager.java?rev=816568&r1=816567&r2=816568&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeTypeManager.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/nodetype/AbstractNodeTypeManager.java Fri Sep 18 09:59:25 2009
@@ -16,9 +16,9 @@
*/
package org.apache.jackrabbit.spi.commons.nodetype;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QNodeDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
import javax.jcr.nodetype.NodeTypeManager;
@@ -28,6 +28,8 @@
import javax.jcr.nodetype.PropertyDefinitionTemplate;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.RepositoryException;
@@ -38,11 +40,6 @@
public abstract class AbstractNodeTypeManager implements NodeTypeManager {
/**
- * logger instance
- */
- private static final Logger log = LoggerFactory.getLogger(AbstractNodeTypeManager.class);
-
- /**
* Return the node type with the specified <code>ntName</code>.
*
* @param ntName Name of the node type to be returned.
@@ -52,6 +49,24 @@
public abstract NodeType getNodeType(Name ntName) throws NoSuchNodeTypeException;
/**
+ * Retrieve the <code>NodeDefinition</code> for the given
+ * <code>QNodeDefinition</code>.
+ *
+ * @param nd the QNodeDefinition.
+ * @return the node definition.
+ */
+ public abstract NodeDefinition getNodeDefinition(QNodeDefinition nd);
+
+ /**
+ * Retrieve the <code>PropertyDefinition</code> for the given
+ * <code>QPropertyDefinition</code>.
+ *
+ * @param pd the QPropertyDefinition.
+ * @return the property definition.
+ */
+ public abstract PropertyDefinition getPropertyDefinition(QPropertyDefinition pd);
+
+ /**
* Returns the NamePathResolver used to validate JCR names.
*
* @return the NamePathResolver used to convert JCR names/paths to internal