Code:package org.springframework.extensions.jcr.jackrabbit; import java.io.InputStreamReader; import javax.jcr.Session; import org.apache.jackrabbit.commons.cnd.CndImporter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.Resource; import org.springframework.extensions.jcr.JcrSessionFactory; import org.springframework.util.ObjectUtils; /** * Jackrabbit specific {@link JcrSessionFactory} which allows registration of node types in <a * href="http://jackrabbit.apache.org/node-types.html">Content node types</a> format. * @author Costin Leau * @author Sergio Bossa * @author Salvatore Incandela */ public class JackrabbitSessionFactory2 extends JcrSessionFactory { private static final Logger log = LoggerFactory.getLogger(JackrabbitSessionFactory2.class); /** * Node definitions in CND format. */ private Resource[] nodeDefinitions; //private String contentType = JackrabbitNodeTypeManager.TEXT_XML; /* * (non-Javadoc) * @see org.springframework.extensions.jcr.JcrSessionFactory#registerNodeTypes() */ protected void registerNodeTypes() throws Exception { if (!ObjectUtils.isEmpty(nodeDefinitions)) { Session session = getBareSession(); for (int i = 0; i < nodeDefinitions.length; i++) { Resource resource = nodeDefinitions[i]; if(log.isDebugEnabled()) log.debug("adding node type definitions from " + resource.getDescription()); CndImporter.registerNodeTypes(new InputStreamReader(resource.getInputStream()), session); } session.logout(); } } /** * @param nodeDefinitions The nodeDefinitions to set. */ public void setNodeDefinitions(Resource[] nodeDefinitions) { this.nodeDefinitions = nodeDefinitions; } }


Reply With Quote