### 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());