jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dhrubojyoti Kayal (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OCM-42) OCM Versioning is not working as expected
Date Thu, 25 Mar 2010 17:21:27 GMT

    [ 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.


Mime
View raw message