[
https://issues.apache.org/jira/browse/OCM-42?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12849789#action_12849789
]
Dhrubojyoti Kayal commented on OCM-42:
--------------------------------------
I have done tests creating a class which is just like yours and I do not see
any problem with versioning and OCM. I am using the patch that has been just
submitted for Jackrabbit 2 OCM. But that should not be a big issue. Here are
the source code below:
Listing 1 - Page.java
---------------------------
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
/**
*
*/
/**
* @author dhrubo
*
*/
@Node(jcrMixinTypes =JcrConstants.MIX_VERSIONABLE)
public class Page {
@Field(path=true)
private String path;
@Field
private String docContent;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getDocContent() {
return docContent;
}
public void setDocContent(String docContent) {
this.docContent = docContent;
}
}
Listing 2 - VersionTester.java
---------------------------------------
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.LoginException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.version.VersionException;
import org.apache.jackrabbit.core.TransientRepository;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
import org.apache.jackrabbit.ocm.mapper.Mapper;
import org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
import org.apache.jackrabbit.ocm.version.Version;
import org.apache.jackrabbit.ocm.version.VersionIterator;
/**
*
*/
/**
* @author dhrubo
*
*/
public class VersionTester {
private Session session;
/**
* @param args
*/
public static void main(String[] args) throws Exception{
VersionTester vt = new VersionTester();
ObjectContentManager ocm = vt.getOCM();
// Create a new page - first version
Page page = new Page();
page.setPath("/page");
ocm.insert(page);
ocm.save();
// Update the page object with first content and create a new
version
page.setDocContent("dc1");
ocm.checkout("/page");
ocm.update(page);
ocm.save();
ocm.checkin("/page");
// Update the page object with content 2 and create a new
version
page.setDocContent("dc2");
ocm.checkout("/page");
ocm.update(page);
ocm.save();
ocm.checkin("/page");
// Update the page object with content 3 and create a new
version
page.setDocContent("dc2");
ocm.checkout("/page");
ocm.update(page);
ocm.save();
ocm.checkin("/page");
vt.showAllVersions(ocm);
vt.cleanUp();
}
private void showAllVersions(ObjectContentManager ocm) throws
VersionException {
VersionIterator versionIterator = ocm.getAllVersions("/page");
while (versionIterator.hasNext())
{
Version version = (Version) versionIterator.next();
System.out.println("version found : "+ version.getName() +
" - " +
version.getPath() + " - " +
version.getCreated().getTime());
}
}
private ObjectContentManager getOCM() throws LoginException,
RepositoryException{
File xml = new
File("C:/ExperimentalWS/jackrabbit-poc/src/repository.xml");
File dir = new File("C:/digivault");
Repository repository = new TransientRepository(xml,dir);
SimpleCredentials adminCred = new SimpleCredentials("admin",
"admin".toCharArray());
this.session = repository.login(adminCred);
List<Class> classes = new ArrayList<Class>();
classes.add(Page.class);
Mapper mapper = new AnnotationMapperImpl(classes);
ObjectContentManager ocm = new ObjectContentManagerImpl(session,
mapper);
return ocm;
}
private void cleanUp() {
session.logout();
}
}
Results
-----------
log4j:WARN No appenders could be found for logger
(org.apache.jackrabbit.core.TransientRepository).
log4j:WARN Please initialize the log4j system properly.
version found : jcr:rootVersion -
/jcr:system/jcr:versionStorage/35/c7/76/35c776d6-b8f1-46fe-940f-90ec77d389c8/jcr:rootVersion
- Thu Mar 25 22:46:50 IST 2010
version found : 1.0 -
/jcr:system/jcr:versionStorage/35/c7/76/35c776d6-b8f1-46fe-940f-90ec77d389c8/1.0
- Thu Mar 25 22:46:51 IST 2010
version found : 1.1 -
/jcr:system/jcr:versionStorage/35/c7/76/35c776d6-b8f1-46fe-940f-90ec77d389c8/1.1
- Thu Mar 25 22:46:51 IST 2010
version found : 1.2 -
/jcr:system/jcr:versionStorage/35/c7/76/35c776d6-b8f1-46fe-940f-90ec77d389c8/1.2
- Thu Mar 25 22:46:51 IST 2010
Note - Jackrabbit does not update the major version number. So this is working
just as you would expect.
Let me know what is different in your test case.
> OCM Versioning is not working as expected
> -----------------------------------------
>
> Key: OCM-42
> URL: https://issues.apache.org/jira/browse/OCM-42
> Project: Jackrabbit OCM
> Issue Type: Bug
> Reporter: Sreekanth S Nair
>
> I have an OCM class as given belwo
> @Node(jcrMixinTypes =JcrConstants.MIX_VERSIONABLE)
> public class XYZ {
> @Field(path=true)
> private String path;
> @Field
> private String docContent;
> // and their closure methods
> }
> Then i have created a root node as /domainName/moduleName
> and set XYZ's path value as /domainName/moduleName/documents.
> I can able to insert and update the XYZ Objects successfully (i'm doing ocm
> checkout and checkin at object update time)
> but when try to get the version i'm always getting root version (means the
> XYZ object value on update time).
> I'm unable to get the base version (means the XYZ object value on insert
> time).
> If its not a bug...Please direct me how to extract version history.
> fyi : i used
> ocm.getObject("/domainName/moduleName/documents","1.0") to get the value.
> i've worked based on apache jackrabbit OCM version mgmt site example but
> didn't work for me.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.