### Eclipse Workspace Patch 1.0
#P ocm
Index: trunk/src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/jackrabbit/NodeTypeManagerImpl.java
===================================================================
--- trunk/src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/jackrabbit/NodeTypeManagerImpl.java (revision 927960)
+++ trunk/src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/jackrabbit/NodeTypeManagerImpl.java (working copy)
@@ -25,18 +25,16 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Workspace;
+import javax.jcr.nodetype.NodeTypeDefinition;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.version.OnParentVersionAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
-import org.apache.jackrabbit.core.nodetype.NodeDef;
-import org.apache.jackrabbit.core.nodetype.NodeDefImpl;
-import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
+
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.nodetype.PropDef;
-import org.apache.jackrabbit.core.nodetype.PropDefImpl;
+
import org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader;
import org.apache.jackrabbit.ocm.mapper.model.BeanDescriptor;
import org.apache.jackrabbit.ocm.mapper.model.ChildNodeDefDescriptor;
@@ -51,555 +49,628 @@
import org.apache.jackrabbit.ocm.nodemanagement.exception.NodeTypeRemovalException;
import org.apache.jackrabbit.ocm.nodemanagement.exception.OperationNotSupportedException;
import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QNodeDefinition;
+import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.commons.QNodeDefinitionImpl;
+import org.apache.jackrabbit.spi.commons.QNodeTypeDefinitionImpl;
+import org.apache.jackrabbit.spi.commons.QPropertyDefinitionImpl;
+import org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl;
+import org.apache.jackrabbit.spi.commons.nodetype.NodeTypeDefinitionImpl;
+import org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl;
-/** This is the NodeTypeManager implementation for Apache Jackrabbit.
- *
+/**
+ * This is the NodeTypeManager implementation for Apache Jackrabbit.
+ *
* @author Oliver Kiessler
*/
-public class NodeTypeManagerImpl implements NodeTypeManager
-{
- /**
- * Logging.
- */
- private static Log log = LogFactory.getLog(NodeTypeManagerImpl.class);
+public class NodeTypeManagerImpl implements NodeTypeManager {
+ /**
+ * Logging.
+ */
+ private static Log log = LogFactory.getLog(NodeTypeManagerImpl.class);
- /** Namespace helper class for Jackrabbit.
- */
- private NamespaceHelper namespaceHelper = new NamespaceHelper();
+ /**
+ * Namespace helper class for Jackrabbit.
+ */
+ private NamespaceHelper namespaceHelper = new NamespaceHelper();
- /** Creates a new instance of NodeTypeManagerImpl. */
- public NodeTypeManagerImpl()
- {
- }
+ /** Creates a new instance of NodeTypeManagerImpl. */
+ public NodeTypeManagerImpl() {
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNamespace
- */
- public void createNamespace(Session session, String namespace, String namespaceUri)
- throws NamespaceCreationException
- {
- if (session != null)
- {
- try
- {
- session.getWorkspace().getNamespaceRegistry().registerNamespace(namespace, namespaceUri);
- log.info("Namespace created: " +
- "{" + namespaceUri + "}" + namespace);
- }
- catch (Exception e)
- {
- throw new NamespaceCreationException(e);
- }
- }
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNamespace
+ */
+ public void createNamespace(Session session, String namespace,
+ String namespaceUri) throws NamespaceCreationException {
+ if (session != null) {
+ try {
+ session.getWorkspace().getNamespaceRegistry()
+ .registerNamespace(namespace, namespaceUri);
+ log.info("Namespace created: " + "{" + namespaceUri + "}"
+ + namespace);
+ } catch (Exception e) {
+ throw new NamespaceCreationException(e);
+ }
+ }
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypes
- */
- public void createNodeTypes(Session session, MappingDescriptor mappingDescriptor)
- throws NodeTypeCreationException
- {
- if (mappingDescriptor != null && mappingDescriptor.getClassDescriptorsByClassName().size() > 0)
- {
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypes
+ */
+ public void createNodeTypes(Session session,
+ MappingDescriptor mappingDescriptor)
+ throws NodeTypeCreationException {
+ if (mappingDescriptor != null
+ && mappingDescriptor.getClassDescriptorsByClassName().size() > 0) {
- }
- else
- {
- throw new NodeTypeCreationException("The MappingDescriptor can't be null or empty.");
- }
- }
+ } else {
+ throw new NodeTypeCreationException(
+ "The MappingDescriptor can't be null or empty.");
+ }
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypes
- */
- public void createNodeTypes(Session session, ClassDescriptor[] classDescriptors)
- throws NodeTypeCreationException
- {
- if (classDescriptors != null && classDescriptors.length > 0)
- {
- log.info("Trying to create " + classDescriptors.length +
- " JCR node types.");
- for (int i = 0; i < classDescriptors.length; i++)
- {
- createSingleNodeType(session, classDescriptors[i]);
- }
- }
- else
- {
- throw new NodeTypeCreationException("The ClassDescriptor can't be null or empty.");
- }
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypes
+ */
+ public void createNodeTypes(Session session,
+ ClassDescriptor[] classDescriptors)
+ throws NodeTypeCreationException {
+ if (classDescriptors != null && classDescriptors.length > 0) {
+ log.info("Trying to create " + classDescriptors.length
+ + " JCR node types.");
+ for (int i = 0; i < classDescriptors.length; i++) {
+ createSingleNodeType(session, classDescriptors[i]);
+ }
+ } else {
+ throw new NodeTypeCreationException(
+ "The ClassDescriptor can't be null or empty.");
+ }
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypesFromMappingFiles
- */
- public void createNodeTypesFromMappingFiles(Session session,
- InputStream[] mappingXmlFiles)
- throws NodeTypeCreationException
- {
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypesFromMappingFiles
+ */
+ public void createNodeTypesFromMappingFiles(Session session,
+ InputStream[] mappingXmlFiles) throws NodeTypeCreationException {
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createSingleNodeType
- */
- public void createSingleNodeType(Session session, ClassDescriptor classDescriptor)
- throws NodeTypeCreationException
- {
- try
- {
- getNamespaceHelper().setRegistry(session.getWorkspace().getNamespaceRegistry());
- ArrayList list = new ArrayList();
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createSingleNodeType
+ */
+ public void createSingleNodeType(Session session,
+ ClassDescriptor classDescriptor) throws NodeTypeCreationException {
+ try {
+ getNamespaceHelper().setRegistry(
+ session.getWorkspace().getNamespaceRegistry());
+ ArrayList list = new ArrayList();
- if (classDescriptor.getJcrType() != null &&
- (classDescriptor.getJcrType().startsWith("nt:")
- || classDescriptor.getJcrType().startsWith("mix:")))
- {
- throw new NodeTypeCreationException("Namespace nt and mix are reserved namespaces. Please specify your own.");
- }
+ if (classDescriptor.getJcrType() != null
+ && (classDescriptor.getJcrType().startsWith("nt:") || classDescriptor
+ .getJcrType().startsWith("mix:"))) {
+ throw new NodeTypeCreationException(
+ "Namespace nt and mix are reserved namespaces. Please specify your own.");
+ }
- if (checkSuperTypes(session.getWorkspace().getNodeTypeManager(),
- classDescriptor.getJcrSuperTypes()))
- {
- NodeTypeDef nodeTypeDef = getNodeTypeDef(classDescriptor.getJcrType(),
- classDescriptor.getJcrSuperTypes(),
- classDescriptor.getClassName());
+ if (checkSuperTypes(session.getWorkspace().getNodeTypeManager(),
+ classDescriptor.getJcrSuperTypes())) {
+
+ Name nodeTypeName = getNodeTypeName(classDescriptor
+ .getJcrType(),classDescriptor.getClassName());
+
+
- List propDefs = new ArrayList();
- List nodeDefs = new ArrayList();
- if (classDescriptor.getFieldDescriptors() != null)
- {
- Iterator fieldIterator = classDescriptor.getFieldDescriptors().iterator();
- while (fieldIterator.hasNext())
- {
- FieldDescriptor field = (FieldDescriptor) fieldIterator.next();
- if (!field.isPath()) {
- propDefs.add(getPropertyDefinition(field.getFieldName(), field, nodeTypeDef.getName()));
- }
- }
- }
+ List propDefs = new ArrayList();
+ List nodeDefs = new ArrayList();
+ if (classDescriptor.getFieldDescriptors() != null) {
+ Iterator fieldIterator = classDescriptor
+ .getFieldDescriptors().iterator();
+ while (fieldIterator.hasNext()) {
+ FieldDescriptor field = (FieldDescriptor) fieldIterator
+ .next();
+ if (!field.isPath()) {
+
+ propDefs.add(
+ getPropertyDefinition(
+ field.getFieldName()
+ ,field
+ ,nodeTypeName //keep watch
+
+ )
+ );
+ }
+ }
+ }
- if (classDescriptor.getBeanDescriptors() != null) {
- Iterator beanIterator = classDescriptor.getBeanDescriptors().iterator();
- while (beanIterator.hasNext()) {
- BeanDescriptor field = (BeanDescriptor) beanIterator.next();
- if (this.isPropertyType(field.getJcrType())) {
- propDefs.add(getPropertyDefinition(field.getFieldName(), field, nodeTypeDef.getName()));
- } else {
- nodeDefs.add(getNodeDefinition(field.getFieldName(), field, nodeTypeDef.getName()));
- }
- }
- }
+ if (classDescriptor.getBeanDescriptors() != null) {
+ Iterator beanIterator = classDescriptor
+ .getBeanDescriptors().iterator();
+ while (beanIterator.hasNext()) {
+ BeanDescriptor field = (BeanDescriptor) beanIterator
+ .next();
+ if (this.isPropertyType(field.getJcrType())) {
+ propDefs.add(getPropertyDefinition(field
+ .getFieldName(), field,
+ nodeTypeName
+
+ ));
+ } else {
+ nodeDefs.add(getNodeDefinition(
+ field.getFieldName(), field,
+ nodeTypeName
+
+ ));
+ }
+ }
+ }
- if (classDescriptor.getCollectionDescriptors() != null) {
- Iterator collectionIterator = classDescriptor.getCollectionDescriptors().iterator();
- while (collectionIterator.hasNext()) {
- CollectionDescriptor field = (CollectionDescriptor) collectionIterator.next();
- if (this.isPropertyType(field.getJcrType())) {
- propDefs.add(getPropertyDefinition(field.getFieldName(), field, nodeTypeDef.getName()));
- } else {
- nodeDefs.add(getNodeDefinition(field.getFieldName(), field, nodeTypeDef.getName()));
- }
- }
- }
+ if (classDescriptor.getCollectionDescriptors() != null) {
+ Iterator collectionIterator = classDescriptor
+ .getCollectionDescriptors().iterator();
+ while (collectionIterator.hasNext()) {
+ CollectionDescriptor field = (CollectionDescriptor) collectionIterator
+ .next();
+ if (this.isPropertyType(field.getJcrType())) {
+ propDefs.add(getPropertyDefinition(field
+ .getFieldName(), field,
+ nodeTypeName
+ ));
+ } else {
+ nodeDefs.add(getNodeDefinition(
+ field.getFieldName(), field,
+ nodeTypeName
+
+ ));
+ }
+ }
+ }
+
+ NodeTypeDefinition nodeTypeDef = getNodeTypeDef(classDescriptor
+ .getJcrType(), classDescriptor.getJcrSuperTypes(),
+ classDescriptor.getClassName(),nodeTypeName,propDefs,nodeDefs);
+
+ /*
+ nodeTypeDef.setPropertyDefs((PropDef[])
+ propDefs.toArray(new PropDef[propDefs.size()])
+ );
+ nodeTypeDef.setChildNodeDefs((NodeDef[]) nodeDefs
+ .toArray(new NodeDef[nodeDefs.size()]));
+
+ */
+
+
+ list.add(nodeTypeDef);
+ createNodeTypesFromList(session, list);
+ log.info("Registered JCR node type '" + nodeTypeDef.getName()
+ + "' for class '" + classDescriptor.getClassName()
+ + "'");
+ } else {
+ throw new NodeTypeCreationException(
+ "JCR supertypes could not be resolved.");
+ }
+ } catch (Exception e) {
+ log.error("Could not create node types from class descriptor.", e);
+ throw new NodeTypeCreationException(e);
+ }
+ }
- nodeTypeDef.setPropertyDefs((PropDef[]) propDefs.toArray(new PropDef[propDefs.size()]));
- nodeTypeDef.setChildNodeDefs((NodeDef[]) nodeDefs.toArray(new NodeDef[nodeDefs.size()]));
+ /**
+ * Checks if all JCR super types for a given node type exist.
+ *
+ * @param ntMgr
+ * NodeTypeManager
+ * @param superTypes
+ * Comma separated String with JCR node types
+ * @return true/false
+ */
+ private boolean checkSuperTypes(javax.jcr.nodetype.NodeTypeManager ntMgr,
+ String superTypes) {
+ boolean exists = true;
- list.add(nodeTypeDef);
- createNodeTypesFromList(session, list);
- log.info("Registered JCR node type '" + nodeTypeDef.getName() +
- "' for class '" + classDescriptor.getClassName() + "'");
- }
- else
- {
- throw new NodeTypeCreationException("JCR supertypes could not be resolved.");
- }
- }
- catch (Exception e)
- {
- log.error("Could not create node types from class descriptor.", e);
- throw new NodeTypeCreationException(e);
- }
- }
+ if (superTypes != null && superTypes.length() > 0) {
+ String[] superTypesArray = superTypes.split(",");
+ log.debug("JCR super types found: " + superTypesArray.length);
+ for (int i = 0; i < superTypesArray.length; i++) {
+ try {
+ ntMgr.getNodeType(superTypesArray[i]);
+ } catch (Exception e) {
+ log.error("JCR super type '" + superTypesArray[i]
+ + "' does not exist!");
+ exists = false;
+ break;
+ }
+ }
+ }
- /** Checks if all JCR super types for a given node type exist.
- *
- * @param ntMgr NodeTypeManager
- * @param superTypes Comma separated String with JCR node types
- * @return true/false
- */
- private boolean checkSuperTypes(javax.jcr.nodetype.NodeTypeManager ntMgr,
- String superTypes)
- {
- boolean exists = true;
+ return exists;
+ }
- if (superTypes != null && superTypes.length() > 0)
- {
- String[] superTypesArray = superTypes.split(",");
- log.debug("JCR super types found: " + superTypesArray.length);
- for (int i = 0; i < superTypesArray.length; i++)
- {
- try
- {
- ntMgr.getNodeType(superTypesArray[i]);
- }
- catch (Exception e)
- {
- log.error("JCR super type '" + superTypesArray[i] + "' does not exist!");
- exists = false;
- break;
- }
- }
- }
+
+ private Name getNodeTypeName(String jcrNodeType,String className) {
+ Name name = null;
- return exists;
- }
+ if (jcrNodeType != null && (!jcrNodeType.equals(""))) {
+ name = getNamespaceHelper().getName(jcrNodeType);
- /** Creates a NodeTypeDef object.
- *
- * @param jcrNodeType Name of JCR node type
- * @param jcrSuperTypes JCR node super types
- * @return type
- */
- public NodeTypeDef getNodeTypeDef(String jcrNodeType, String jcrSuperTypes,
- String className)
- {
- NodeTypeDef type = new NodeTypeDef();
- type.setMixin(false);
+ } else {
+ name = getNamespaceHelper().getName(className);
- if (jcrNodeType != null && (! jcrNodeType.equals("")))
- {
- type.setName(getNamespaceHelper().getName(jcrNodeType));
- }
- else
- {
- type.setName(getNamespaceHelper().getName(className));
- }
+ }
+ return name;
+ }
+
+ /**
+ * Creates a NodeTypeDef object.
+ *
+ * @param jcrNodeType
+ * Name of JCR node type
+ * @param jcrSuperTypes
+ * JCR node super types
+ * @return type
+ */
+ public NodeTypeDefinition getNodeTypeDef(String jcrNodeType,
+ String jcrSuperTypes, String className,Name jcrNodeTypeName
+ ,List propDefs, List nodeDefs) {
+ Name name = jcrNodeTypeName;
+
+ Name superTypeNames[] = getJcrSuperTypes(jcrSuperTypes);
- type.setSupertypes(getJcrSuperTypes(jcrSuperTypes));
- type.setPrimaryItemName(getNamespaceHelper().getName(jcrNodeType));
- return type;
- }
+ Name primaryItemName = getNamespaceHelper().getName(jcrNodeType);
+ // changed
+ QNodeTypeDefinition qNodetypeDef = new QNodeTypeDefinitionImpl(name,
+ superTypeNames, null, false, false, true, true,
+ primaryItemName,
+ (QPropertyDefinition[] )propDefs.toArray(),
+ (QNodeDefinition[] )nodeDefs.toArray());
- /** Creates a PropDefImpl object.
- *
- * @param fieldName The name of the field
- * @param field property definition descriptor
- * @param declaringNodeType Node Type QName where the property belongs to
- * @return property
- */
- public PropDefImpl getPropertyDefinition(String fieldName,
- PropertyDefDescriptor field, Name declaringNodeType)
- {
- PropDefImpl property = new PropDefImpl();
+ NodeTypeDefinition nodeTypeDef = new NodeTypeDefinitionImpl(
+ qNodetypeDef, null, null);
- if (field.getJcrName() != null)
- {
- property.setName(getNamespaceHelper().getName(field.getJcrName()));
-
- }
- else
- {
- property.setName(getNamespaceHelper().getName(fieldName));
- }
+ return nodeTypeDef;
+ }
- if (field.getJcrType() != null)
- {
- property.setRequiredType(PropertyType.valueFromName(field.getJcrType()));
- }
- else
- {
- log.info("No property type set for " + property.getName() +
- ". Setting 'String' type.");
- property.setRequiredType(PropertyType.valueFromName("String"));
- }
+ /**
+ * Creates a PropDefImpl object.
+ *
+ * @param fieldName
+ * The name of the field
+ * @param field
+ * property definition descriptor
+ * @param declaringNodeType
+ * Node Type QName where the property belongs to
+ * @return property
+ */
+ public QPropertyDefinition getPropertyDefinition(String fieldName,
+ PropertyDefDescriptor field, Name declaringNodeType) {
+
+ Name name = null;
- property.setDeclaringNodeType(declaringNodeType);
- property.setAutoCreated(field.isJcrAutoCreated());
- property.setMandatory(field.isJcrMandatory());
- property.setMultiple(field.isJcrMultiple());
+ if (field.getJcrName() != null) {
+ name = getNamespaceHelper().getName(field.getJcrName());
- if (field.getJcrOnParentVersion() != null &&
- field.getJcrOnParentVersion().length() > 0)
- {
- property.setOnParentVersion(OnParentVersionAction.valueFromName(field.getJcrOnParentVersion()));
- }
+ } else {
+ name = getNamespaceHelper().getName(fieldName);
- property.setProtected(field.isJcrProtected());
- return property;
- }
+ }
- /** Creates a NodeDefImpl object.
- *
- * @param fieldName Name of the field
- * @param field child node definition descriptor
- * @param declaringNodeType Node Type QName where the chid node belongs to
- * @return child node definition
- */
- private NodeDefImpl getNodeDefinition(String fieldName,
- ChildNodeDefDescriptor field, Name declaringNodeType) {
+ int requiredType = -1;
- NodeDefImpl node = new NodeDefImpl();
+ if (field.getJcrType() != null) {
+ requiredType = PropertyType.valueFromName(field.getJcrType());
- if (field.getJcrName() != null) {
- node.setName(getNamespaceHelper().getName(field.getJcrName()));
- } else {
- node.setName(getNamespaceHelper().getName("*"));
- }
+ } else {
+ log.info("No property type set for " + name
+ + ". Setting 'String' type.");
+ requiredType = PropertyType.valueFromName("String");
- if (field.getJcrType() != null) {
- node.setRequiredPrimaryTypes(getJcrSuperTypes(field.getJcrType()));
- }
+ }
- node.setDeclaringNodeType(declaringNodeType);
- node.setAutoCreated(field.isJcrAutoCreated());
- node.setMandatory(field.isJcrMandatory());
- node.setAllowsSameNameSiblings(field.isJcrSameNameSiblings());
- node.setDefaultPrimaryType( getNamespaceHelper().getName( field.getDefaultPrimaryType() ) );
+ int onParentVersion = -1;
+
- if (field.getJcrOnParentVersion() != null
- && field.getJcrOnParentVersion().length() > 0) {
- node.setOnParentVersion(OnParentVersionAction.valueFromName(field.getJcrOnParentVersion()));
- }
+ if (field.getJcrOnParentVersion() != null
+ && field.getJcrOnParentVersion().length() > 0) {
+ onParentVersion = OnParentVersionAction.valueFromName(field
+ .getJcrOnParentVersion());
- node.setProtected(field.isJcrProtected());
- return node;
- }
+ }
- /**
- *
- * @param propDef
- * @return
- */
- protected String showPropertyDefinition(PropertyDefinition propDef)
- {
- StringBuffer sb = new StringBuffer();
- sb.append("----");
- sb.append("\nName: " + propDef.getName());
- sb.append("\nAutocreated: " + propDef.isAutoCreated());
- sb.append("\nMandatory: " + propDef.isMandatory());
- sb.append("\n----");
- return sb.toString();
- }
+
- /** Creates a QName array from a comma separated list of JCR super types in
- * a given String.
- *
- * @param superTypes JCR super types
- * @return qNameSuperTypes
- */
- public Name[] getJcrSuperTypes(String superTypes)
- {
- Name[] nameSuperTypes = null;
- if (superTypes != null && superTypes.length() > 0)
- {
- String[] superTypesArray = superTypes.split(",");
- log.debug("JCR super types found: " + superTypesArray.length);
- nameSuperTypes = new Name[superTypesArray.length];
- for (int i = 0; i < superTypesArray.length; i++)
- {
- String superTypeName = superTypesArray[i].trim();
- nameSuperTypes[i] = getNamespaceHelper().getName(superTypeName);
- log.debug("Setting JCR super type: " + superTypeName);
- }
- }
+ QPropertyDefinition qPropertyDef = new QPropertyDefinitionImpl(
+ name,
+ declaringNodeType,
+ field.isJcrAutoCreated(),
+ field.isJcrMandatory(),
+ onParentVersion,
+ field.isJcrProtected(),
+ null,
+ field.isJcrMultiple(),
+ requiredType,
+ null,
+ null,
+ true,
+ true);
- return nameSuperTypes;
- }
+
+
+ return qPropertyDef;
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createSingleNodeTypeFromMappingFile
- */
- public void createSingleNodeTypeFromMappingFile(Session session,
- InputStream mappingXmlFile, String jcrNodeType)
- throws NodeTypeCreationException
- {
- }
+ /**
+ * Creates a NodeDefImpl object.
+ *
+ * @param fieldName
+ * Name of the field
+ * @param field
+ * child node definition descriptor
+ * @param declaringNodeType
+ * Node Type QName where the chid node belongs to
+ * @return child node definition
+ */
+ private QNodeDefinition getNodeDefinition(String fieldName,
+ ChildNodeDefDescriptor field, Name declaringNodeType) {
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypeFromClass
- */
- public void createNodeTypeFromClass(Session session, Class clazz,
- String jcrNodeType, boolean reflectSuperClasses)
- throws NodeTypeCreationException
- {
- }
+ Name name = null;
+ if (field.getJcrName() != null) {
+ name = getNamespaceHelper().getName(field.getJcrName());
+
+ } else {
+ name = getNamespaceHelper().getName("*");
+
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypesFromConfiguration
- */
- public void createNodeTypesFromConfiguration(Session session,
- InputStream jcrRepositoryConfigurationFile)
- throws OperationNotSupportedException, NodeTypeCreationException
- {
- try
- {
- NodeTypeDef[] types = NodeTypeReader.read(jcrRepositoryConfigurationFile);
+
+
+ int onParentVersion = -1;
+
+ if (field.getJcrOnParentVersion() != null
+ && field.getJcrOnParentVersion().length() > 0) {
+ onParentVersion = OnParentVersionAction.valueFromName(field
+ .getJcrOnParentVersion());
+ }
- ArrayList list = new ArrayList();
- for (int i = 0; i < types.length; i++)
- {
- list.add(types[i]);
- }
+ QNodeDefinition qNodeDef = new QNodeDefinitionImpl(
+ name
+ ,declaringNodeType
+ ,field.isJcrAutoCreated()
+ ,field.isJcrMandatory()
+ ,onParentVersion
+ ,field.isJcrProtected()
+ ,getNamespaceHelper().getName(
+ field.getDefaultPrimaryType())
+ ,getJcrSuperTypes(field.getJcrType())
+ ,field.isJcrSameNameSiblings()
+ );
+
- createNodeTypesFromList(session, list);
- log.info("Registered " + list.size() + " nodetypes from xml configuration file.");
- }
- catch (Exception e)
- {
- log.error("Could not create node types from configuration file.", e);
- throw new NodeTypeCreationException(e);
- }
- }
+
+
+
+ return qNodeDef;
+ }
- /**
- *
- * @param session
- * @param nodeTypes
- * @throws org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException
- * @throws javax.jcr.RepositoryException
- */
- private void createNodeTypesFromList(Session session, List nodeTypes)
- throws InvalidNodeTypeDefException, RepositoryException
- {
- getNodeTypeRegistry(session).registerNodeTypes(nodeTypes);
- }
+ /**
+ *
+ * @param propDef
+ * @return
+ */
+ protected String showPropertyDefinition(PropertyDefinition propDef) {
+ StringBuffer sb = new StringBuffer();
+ sb.append("----");
+ sb.append("\nName: " + propDef.getName());
+ sb.append("\nAutocreated: " + propDef.isAutoCreated());
+ sb.append("\nMandatory: " + propDef.isMandatory());
+ sb.append("\n----");
+ return sb.toString();
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#removeNodeTypes
- */
- public void removeNodeTypesFromConfiguration(Session session, InputStream jcrRepositoryConfigurationFile)
- throws NodeTypeRemovalException
- {
- try
- {
- NodeTypeDef[] types = NodeTypeReader.read(jcrRepositoryConfigurationFile);
+ /**
+ * Creates a QName array from a comma separated list of JCR super types in a
+ * given String.
+ *
+ * @param superTypes
+ * JCR super types
+ * @return qNameSuperTypes
+ */
+ public Name[] getJcrSuperTypes(String superTypes) {
+ Name[] nameSuperTypes = null;
+ if (superTypes != null && superTypes.length() > 0) {
+ String[] superTypesArray = superTypes.split(",");
+ log.debug("JCR super types found: " + superTypesArray.length);
+ nameSuperTypes = new Name[superTypesArray.length];
+ for (int i = 0; i < superTypesArray.length; i++) {
+ String superTypeName = superTypesArray[i].trim();
+ nameSuperTypes[i] = getNamespaceHelper().getName(superTypeName);
+ log.debug("Setting JCR super type: " + superTypeName);
+ }
+ }
- ArrayList list = new ArrayList();
- for (int i = 0; i < types.length; i++)
- {
- list.add(types[i]);
- }
+ return nameSuperTypes;
+ }
- removeNodeTypesFromList(session, list);
- log.info("Registered " + list.size() + " nodetypes from xml configuration file.");
- }
- catch (Exception e)
- {
- log.error("Could not create node types from configuration file.", e);
- throw new NodeTypeRemovalException(e);
- }
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createSingleNodeTypeFromMappingFile
+ */
+ public void createSingleNodeTypeFromMappingFile(Session session,
+ InputStream mappingXmlFile, String jcrNodeType)
+ throws NodeTypeCreationException {
+ }
- private void removeNodeTypesFromList(Session session, List nodeTypes)
- throws NodeTypeRemovalException
- {
- for (Iterator nodeTypeIterator = nodeTypes.iterator(); nodeTypeIterator.hasNext();)
- {
- NodeTypeDef nodeTypeDef = (NodeTypeDef) nodeTypeIterator.next();
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypeFromClass
+ */
+ public void createNodeTypeFromClass(Session session, Class clazz,
+ String jcrNodeType, boolean reflectSuperClasses)
+ throws NodeTypeCreationException {
+ }
+
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createNodeTypesFromConfiguration
+ */
+ public void createNodeTypesFromConfiguration(Session session,
+ InputStream jcrRepositoryConfigurationFile)
+ throws OperationNotSupportedException, NodeTypeCreationException {
+ try {
+
+ QNodeTypeDefinition[] types = NodeTypeReader
+ .read(jcrRepositoryConfigurationFile);
+
+ ArrayList list = new ArrayList();
+ for (int i = 0; i < types.length; i++) {
+ list.add(types[i]);
+ }
+
+ createNodeTypesFromList(session, list);
+ log.info("Registered " + list.size()
+ + " nodetypes from xml configuration file.");
+ } catch (Exception e) {
+ log
+ .error(
+ "Could not create node types from configuration file.",
+ e);
+ throw new NodeTypeCreationException(e);
+ }
+ }
+
+ /**
+ *
+ * @param session
+ * @param nodeTypes
+ * @throws org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException
+ * @throws javax.jcr.RepositoryException
+ */
+ private void createNodeTypesFromList(Session session, List nodeTypes)
+ throws InvalidNodeTypeDefException, RepositoryException {
+ getNodeTypeRegistry(session).registerNodeTypes(nodeTypes);
+ }
+
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#removeNodeTypes
+ */
+ public void removeNodeTypesFromConfiguration(Session session,
+ InputStream jcrRepositoryConfigurationFile)
+ throws NodeTypeRemovalException {
+ try {
+ QNodeTypeDefinition[] types = NodeTypeReader
+ .read(jcrRepositoryConfigurationFile);
+
+ ArrayList list = new ArrayList();
+ for (int i = 0; i < types.length; i++) {
+ list.add(types[i]);
+ }
+
+ removeNodeTypesFromList(session, list);
+ log.info("Registered " + list.size()
+ + " nodetypes from xml configuration file.");
+ } catch (Exception e) {
+ log
+ .error(
+ "Could not create node types from configuration file.",
+ e);
+ throw new NodeTypeRemovalException(e);
+ }
+ }
+
+ private void removeNodeTypesFromList(Session session, List nodeTypes)
+ throws NodeTypeRemovalException {
+ for (Iterator nodeTypeIterator = nodeTypes.iterator(); nodeTypeIterator
+ .hasNext();) {
+ NodeTypeDefinition nodeTypeDef = (NodeTypeDefinition) nodeTypeIterator.next();
this.removeSingleNodeType(session, nodeTypeDef.getName());
-
+
}
-
- }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createSingleNodeTypeFromMappingFile
- */
- public void removeNodeTypesFromMappingFile(Session session, InputStream[] mappingXmlFile)
- throws NodeTypeRemovalException
- {
- }
+ }
- public void removeSingleNodeType(Session session, Name name)
- throws NodeTypeRemovalException
- {
- try
- {
- getNodeTypeRegistry(session).unregisterNodeType(name);
- }
- catch (Exception e)
- {
- throw new NodeTypeRemovalException(e);
- }
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#createSingleNodeTypeFromMappingFile
+ */
+ public void removeNodeTypesFromMappingFile(Session session,
+ InputStream[] mappingXmlFile) throws NodeTypeRemovalException {
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#removeSingleNodeType
- */
- public void removeSingleNodeType(Session session, String jcrNodeType)
- throws NodeTypeRemovalException
- {
- try
- {
- getNodeTypeRegistry(session).unregisterNodeType(getNamespaceHelper().getName(jcrNodeType));
- }
- catch (Exception e)
- {
- throw new NodeTypeRemovalException(e);
- }
- }
+ public void removeSingleNodeType(Session session, Name name)
+ throws NodeTypeRemovalException {
+ try {
+ getNodeTypeRegistry(session).unregisterNodeType(name);
+ } catch (Exception e) {
+ throw new NodeTypeRemovalException(e);
+ }
+ }
- /** Returns the jackrabbit NodeTypeRegistry from an open session.
- *
- * @param session Repository session
- * @return nodeTypeRegistry
- */
- private NodeTypeRegistry getNodeTypeRegistry(Session session)
- throws RepositoryException
- {
- Workspace wsp = session.getWorkspace();
- javax.jcr.nodetype.NodeTypeManager ntMgr = wsp.getNodeTypeManager();
- NodeTypeRegistry ntReg =
- ((org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl) ntMgr).getNodeTypeRegistry();
- return ntReg;
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#removeSingleNodeType
+ */
+ public void removeSingleNodeType(Session session, String jcrNodeType)
+ throws NodeTypeRemovalException {
+ try {
+ getNodeTypeRegistry(session).unregisterNodeType(
+ getNamespaceHelper().getName(jcrNodeType));
+ } catch (Exception e) {
+ throw new NodeTypeRemovalException(e);
+ }
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#getPrimaryNodeTypeNames
- */
- public List getPrimaryNodeTypeNames(Session session, String namespace)
- {
- return null;
- }
+ /**
+ * Returns the jackrabbit NodeTypeRegistry from an open session.
+ *
+ * @param session
+ * Repository session
+ * @return nodeTypeRegistry
+ */
+ private NodeTypeRegistry getNodeTypeRegistry(Session session)
+ throws RepositoryException {
+ Workspace wsp = session.getWorkspace();
+ javax.jcr.nodetype.NodeTypeManager ntMgr = wsp.getNodeTypeManager();
+ NodeTypeRegistry ntReg = ((org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl) ntMgr)
+ .getNodeTypeRegistry();
+ return ntReg;
+ }
- /**
- * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#getAllPrimaryNodeTypeNames
- */
- public List getAllPrimaryNodeTypeNames(Session session)
- {
- return null;
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#getPrimaryNodeTypeNames
+ */
+ public List getPrimaryNodeTypeNames(Session session, String namespace) {
+ return null;
+ }
- /** Getter for property namespaceHelper.
- *
- * @return namespaceHelper
- */
- public NamespaceHelper getNamespaceHelper()
- {
- return namespaceHelper;
- }
+ /**
+ * @see org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager#getAllPrimaryNodeTypeNames
+ */
+ public List getAllPrimaryNodeTypeNames(Session session) {
+ return null;
+ }
- /** Setter for property namespaceHelper.
- *
- * @param object namespaceHelper
- */
- public void setNamespaceHelper(NamespaceHelper object)
- {
- this.namespaceHelper = object;
- }
+ /**
+ * Getter for property namespaceHelper.
+ *
+ * @return namespaceHelper
+ */
+ public NamespaceHelper getNamespaceHelper() {
+ return namespaceHelper;
+ }
+ /**
+ * Setter for property namespaceHelper.
+ *
+ * @param object
+ * namespaceHelper
+ */
+ public void setNamespaceHelper(NamespaceHelper object) {
+ this.namespaceHelper = object;
+ }
- private boolean isPropertyType(String type)
- {
- return (type.equals(PropertyType.TYPENAME_BINARY) ||
- type.equals(PropertyType.TYPENAME_BOOLEAN) ||
- type.equals(PropertyType.TYPENAME_DATE) ||
- type.equals(PropertyType.TYPENAME_DOUBLE) ||
- type.equals(PropertyType.TYPENAME_LONG) ||
- type.equals(PropertyType.TYPENAME_NAME) ||
- type.equals(PropertyType.TYPENAME_PATH) ||
- type.equals(PropertyType.TYPENAME_REFERENCE) ||
- type.equals(PropertyType.TYPENAME_STRING));
- }
+ private boolean isPropertyType(String type) {
+ return (type.equals(PropertyType.TYPENAME_BINARY)
+ || type.equals(PropertyType.TYPENAME_BOOLEAN)
+ || type.equals(PropertyType.TYPENAME_DATE)
+ || type.equals(PropertyType.TYPENAME_DOUBLE)
+ || type.equals(PropertyType.TYPENAME_LONG)
+ || type.equals(PropertyType.TYPENAME_NAME)
+ || type.equals(PropertyType.TYPENAME_PATH)
+ || type.equals(PropertyType.TYPENAME_REFERENCE) || type
+ .equals(PropertyType.TYPENAME_STRING));
+ }
}
Index: trunk/pom.xml
===================================================================
--- trunk/pom.xml (revision 927960)
+++ trunk/pom.xml (working copy)
@@ -1,38 +1,36 @@
-
- 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.
- -->
-
-
- 4.0.0
+ 4.0.0
-
- org.apache.jackrabbit
- parent
- 3
-
+
+ org.apache.jackrabbit
+ parent
+ 3
+
- jackrabbit-ocm
- 1.6-SNAPSHOT
- Jackrabbit Object Content Mapping
-
+ jackrabbit-ocm
+ 2.0-SNAPSHOT
+ Jackrabbit Object Content Mapping
+
This Jackrabbit subproject is an object/JCR persistence and
query service. This tools lets you to persist java objects into
a JCR compliant repository - including association, inheritance,
@@ -42,159 +40,149 @@
also features like version support and object locking.
-
-
-
-
-
-
- maven-compiler-plugin
-
- 1.5
- 1.5
-
-
-
- maven-javadoc-plugin
-
- 1.5
-
-
-
- maven-surefire-plugin
-
- -Xmx256m
-
-
- derby.system.durability
- test
-
-
- derby.stream.error.file
- target/derby.log
-
-
-
-
-
- org.codehaus.mojo
- retrotranslator-maven-plugin
- 1.0-alpha-4
-
-
-
- translate-project
-
-
-
-
-
- maven-antrun-plugin
-
-
- process-test-resources
- process-test-resources
-
-
+
+
+
+
+
+
+
+ maven-compiler-plugin
+
+ 1.6
+ 1.6
+
+
+
+
+
-
-
-
-
-
- javax.jcr
- jcr
- 1.0
-
-
- commons-digester
- commons-digester
- 1.7
-
-
- commons-collections
- commons-collections
- 3.1
-
-
- commons-lang
- commons-lang
- 2.1
-
+
+
+
+
+
+ javax.jcr
+ jcr
+ 2.0
+
-
- org.slf4j
- slf4j-api
- 1.5.3
-
+
+ commons-digester
+ commons-digester
+ 2.0
+
-
- cglib
- cglib
- 2.1_3
-
-
- commons-beanutils
- commons-beanutils
- 1.7.0
-
+
+ commons-collections
+ commons-collections
+ 3.1
+
-
- org.apache.jackrabbit
- jackrabbit-core
- 1.5.5
- true
-
+
+ commons-lang
+ commons-lang
+ 2.5
+
-
-
- org.apache.geronimo.specs
- geronimo-jta_1.0.1B_spec
- 1.0.1
- test
-
-
- junit
- junit
- 3.8.1
- test
-
-
- org.slf4j
- slf4j-log4j12
- 1.5.3
- test
-
-
-
-
+
+ org.slf4j
+ slf4j-api
+ 1.5.3
+
+
+
+ cglib
+ cglib-nodep
+ 2.2
+
+
+
+ commons-beanutils
+ commons-beanutils
+ 1.8.2
+
+
+
+ org.apache.jackrabbit
+ jackrabbit-core
+ 2.0-SNAPSHOT
+ true
+
+
+
+
+ geronimo-spec
+ geronimo-spec-jta
+ 1.0-M1
+
+
+
+
+ xerces
+ xercesImpl
+ 2.9.1
+ test
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.5.3
+ test
+
+
+
+
+
scm:svn:http://svn.apache.org/repos/asf/jackrabbit/commons/ocm/trunk
-
+
scm:svn:https://svn.apache.org/repos/asf/jackrabbit/commons/ocm/trunk
-
+
http://svn.apache.org/viewvc/asf/jackrabbit/commons/ocm/trunk
-
+
Index: trunk/src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/jackrabbit/NamespaceHelper.java
===================================================================
--- trunk/src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/jackrabbit/NamespaceHelper.java (revision 927960)
+++ trunk/src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/jackrabbit/NamespaceHelper.java (working copy)
@@ -18,7 +18,6 @@
import javax.jcr.NamespaceRegistry;
-import org.apache.jackrabbit.core.nodetype.ItemDef;
import org.apache.jackrabbit.ocm.nodemanagement.impl.BaseNamespaceHelper;
import org.apache.jackrabbit.spi.Name;
@@ -31,7 +30,7 @@
*/
public class NamespaceHelper extends BaseNamespaceHelper
{
-
+ private final String ANY_NAME = "*";
/** JCR namespace registry.
*/
private NamespaceRegistry registry;
@@ -49,12 +48,14 @@
public Name getName(String itemName)
{
Name name = null;
+
if (itemName != null && itemName.length() > 0)
{
if (itemName.equals("*"))
{
- name = ItemDef.ANY_NAME;
+ //name = ItemDef.ANY_NAME;
+ name = NameFactoryImpl.getInstance().create(DEFAULT_NAMESPACE_URI,"*");
}
else
{
Index: .project
===================================================================
--- .project (revision 0)
+++ .project (revision 0)
@@ -0,0 +1,11 @@
+
+
+ ocm
+
+
+
+
+
+
+
+
Index: trunk/src/test/java/org/apache/jackrabbit/ocm/AbstractTestBase.java
===================================================================
--- trunk/src/test/java/org/apache/jackrabbit/ocm/AbstractTestBase.java (revision 927960)
+++ trunk/src/test/java/org/apache/jackrabbit/ocm/AbstractTestBase.java (working copy)
@@ -40,7 +40,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
-import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
+import javax.jcr.nodetype.NodeTypeDefinition;
import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader;
@@ -51,6 +51,7 @@
import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
import org.apache.jackrabbit.ocm.repository.RepositoryUtil;
import org.xml.sax.ContentHandler;
+import org.apache.jackrabbit.spi.QNodeTypeDefinition;
/**
* Base class for testcases. Provides priviledged access to the jcr test
@@ -151,14 +152,14 @@
"./src/test/test-config/nodetypes/custom_nodetypes.xml");
// HINT: throws InvalidNodeTypeDefException, IOException
- NodeTypeDef[] types = NodeTypeReader.read(xml);
+ QNodeTypeDefinition[] types = NodeTypeReader.read(xml);
Workspace workspace = session.getWorkspace();
NodeTypeManager ntMgr = workspace.getNodeTypeManager();
NodeTypeRegistry ntReg = ((NodeTypeManagerImpl) ntMgr).getNodeTypeRegistry();
for (int j = 0; j < types.length; j++) {
- NodeTypeDef def = types[j];
+ QNodeTypeDefinition def = types[j];
try {
ntReg.getNodeTypeDef(def.getName());