Uploaded image for project: 'ModeShape'
  1. ModeShape
  2. MODE-2363

NodeTypeManager gets confused when using case-sensitive nodetypes on SQL storage

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Major Major
    • 4.1.0.Final
    • 4.0.0.Final
    • None
    • None

      The following code fails on a repository that is backed by a MySql DB running on linux. It does NOT fail when using Filestorage on the same machine.

      I can't make any sense of it, Infinispan or Modeshape problem?

      public void test001NtCreation() throws RepositoryException, InterruptedException {
      		
      		regNodeType(session,"nt:u");
      		regNodeType(session,"nt:U");
      
      	}
      	
      	private void regNodeType(Session repoSession, String typeName) throws RepositoryException{
      			NodeTypeManager mgr = repoSession.getWorkspace().getNodeTypeManager();
      			
      			if (mgr.hasNodeType(typeName)) {
      				return;
      			}
      
      			// Create a template for the node type ...
      			NodeTypeTemplate type = mgr.createNodeTypeTemplate();
      			type.setName(typeName);
      			type.setDeclaredSuperTypeNames(new String[]{CrConstants.JCR_NT_UNSTRUCTURED});
      			type.setAbstract(false);
      			type.setOrderableChildNodes(true);
      			type.setMixin(false);
      			type.setQueryable(true);
      			mgr.registerNodeType(type, true);
      	}
      

      Exception thrown is:

      org.modeshape.jcr.cache.DocumentAlreadyExistsException: af55b68317f1e7/jcr:system/jcr:nodeTypes/nt:U
      	at org.modeshape.jcr.cache.document.WritableSessionCache.persistChanges(WritableSessionCache.java:1187)
      	at org.modeshape.jcr.cache.document.WritableSessionCache.save(WritableSessionCache.java:439)
      	at org.modeshape.jcr.cache.document.WritableSessionCache.save(WritableSessionCache.java:405)
      	at org.modeshape.jcr.SystemContent.save(SystemContent.java:118)
      	at org.modeshape.jcr.RepositoryNodeTypeManager.registerNodeTypes(RepositoryNodeTypeManager.java:533)
      	at org.modeshape.jcr.RepositoryNodeTypeManager.registerNodeType(RepositoryNodeTypeManager.java:388)
      	at org.modeshape.jcr.JcrNodeTypeManager.registerNodeType(JcrNodeTypeManager.java:430)
      	at org.erratic.cr.test.ModeshapeRegisterNodeTypeTest.regNodeType(ModeshapeRegisterNodeTypeTest.java:75)
      	at org.erratic.cr.test.ModeshapeRegisterNodeTypeTest.test001NtCreation(ModeshapeRegisterNodeTypeTest.java:56)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      

              Unassigned Unassigned
              bes82 Bjoern Schmidt (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: