Hi,

how do you construct the repository? Maybe something is wrong
with how you use the Jcr or Oak builder and the commit hook
for JCR versioning is missing?

Regards
 Marcel 

On 19/05/16 01:09, "Ciro Santos" wrote:

>Hello Guys,
>
>I'm working in a project that uses JCR with 2 versions, one using
>jackrabbit and one using OAK. Right now I'm implementing versioning on
>documents.
>
>I was able to make it work using jackrabbit. But when I try to use the
>code
>in the OAK version, I'm getting an error.
>
>We use OSGI to create bundles and the JCR (JackRabbit and OAK) are also
>bundles, which means that we create the OAK repository when starting the
>OSGI felix. Also, the repository is created in the AWS S3.
>
>The odd thing is that we have integration tests that creates a transient
>repository in memory, and it works correctly too.
>
>Here is the creation of the document part of my method:
>
>userSession =
>repository.getUserSession(currentUser.getUserId(),tenantManager.getWorkspa
>ceFromTenant(currentUser.getTenantId()));
>
>folderNode =  userSession.getNodeByIdentifier(parentFolderId);
>String documentName = Text.escapeIllegalJcrChars(name);
>final Node fileNode = folderNode.addNode(documentName,
>JcrConstants.NT_FILE);
>final Node contentNode = fileNode.addNode(JcrConstants.JCR_CONTENT,
>JcrConstants.NT_RESOURCE);
>contentNode.addMixin(NodeType.MIX_VERSIONABLE);
>contentNode.setProperty(JcrConstants.JCR_MIMETYPE, mimeType);
>
>try {
>    contentNode.setProperty(JcrConstants.JCR_DATA,
>userSession.getValueFactory().createBinary(document));
>} finally {
>    document.close();
>}
>
>contentNode.setProperty(Property.JCR_LAST_MODIFIED,
>Calendar.getInstance().getTimeInMillis());
>userSession.save();
>userSession.getWorkspace().getVersionManager().checkin(contentNode.getPath
>());
>
>And here is the exception:
>
>Caused by: javax.jcr.nodetype.ConstraintViolationException:
>OakConstraint0021:
>/0/00/00000185-24a6-3bd1-b232-d7ff21f33b6a/home/a/ad/ad50ee6d-60a3-4689-9f
>90-4aa6326a4f45/root/document_to_test_11/jcr:content[[nt:resource,
>mix:versionable]]: Mandatory property jcr:versionHistory not found in a
>new
>node
>    at
>org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(
>CommitFailedException.java:225)
>    at
>org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(
>CommitFailedException.java:212)
>    at
>org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryExcept
>ion(SessionDelegate.java:670)
>    at
>org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegat
>e.java:496)
>    at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.performVoid(SessionImp
>l.java:419)
>    at
>org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performVoid(Session
>Delegate.java:274)
>    at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:41
>6)
>    at com.hp.ccp.jcr.impl.JCRDAO.addDocument(JCRDAO.java:887)
>    ... 99 more
>
>If I add a mixin and save, I already get the error. I dont understand why
>is saying that I dont have this jcr:versionHistory property.
>
>The oak version that we are using is 1.4.0
>
>Is there anything else to consider?
>
>Could anyone help me out please? I tried some things without success,
>right
>now I don't know how to proccedd.
>
>Thanks in Advance
>Ciro Santos

Reply via email to