The Persistence Manager Setup

Basic setup

When you start your application, you need the following code to initialize correctly the Persistence Manager.

import javax.jcr.Session;
import javax.jcr.Repository;
					
import org.apache.portals.graffito.jcr.mapper.Mapper;
import org.apache.portals.graffito.jcr.mapper.impl.DigesterMapperImpl;				
					
import org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverterProvider;
import org.apache.portals.graffito.jcr.persistence.atomictypeconverter.impl.DefaultAtomicTypeConverterProvider;
					
import org.apache.portals.graffito.jcr.persistence.objectconverter.ObjectConverter;
import org.apache.portals.graffito.jcr.persistence.objectconverter.impl.ObjectConverterImpl;

import org.apache.portals.graffito.jcr.query.QueryManager;
import org.apache.portals.graffito.jcr.query.impl.QueryManagerImpl;
import org.apache.portals.graffito.jcr.repository.RepositoryUtil;
				
// 1. Instantiate a JCR session
			
Repository repository = RepositoryUtil.getRepository("repositoryTest");
Session session = RepositoryUtil.login(repository, "superuser", "superuser");
					
// 2. Specify the different mapping files
					
String[] files = { "./src/test-config/jcrmapping.xml", 
			"./src/test-config/jcrmapping-atomic.xml",
			"./src/test-config/jcrmapping-beandescriptor.xml"};

// 3. Initialise the PersistenceManager dependencies
				
Mapper mapper = new DigesterMapperImpl(files).buildMapper();
AtomicTypeConverterProvider converterProvider = new DefaultAtomicTypeConverterProvider();
Map atomicTypeConverters = converterProvider.getAtomicTypeConverters();
QueryManager queryManager = new QueryManagerImpl(mapper, atomicTypeConverters);
ObjectConverter objectConverter = new ObjectConverterImpl(mapper, converterProvider);
				
// 4. Intantiate the PersistenceManager
				
PersistenceManager persistenceManager = new PersistenceManagerImpl(mapper, objectConverter, queryManager, session);	
					
					

See the page here to get a complete overview on the Persistence Manager API.

Platform/Framework integration

You can also get more information on the Spring support here.

Of course, support for other containers are welcome.