Package org.drools.repository.modeshape

Source Code of org.drools.repository.modeshape.ModeShapeRepositoryConfigurator

package org.drools.repository.modeshape;

import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;

import javax.jcr.LoginException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Workspace;

import org.drools.repository.JCRRepositoryConfigurator;
import org.modeshape.jcr.CndNodeTypeReader;
import org.modeshape.jcr.JcrRepositoryFactory;

/**
* This specialized {@link JCRRepositoryConfigurator}
*/
public class ModeShapeRepositoryConfigurator extends JCRRepositoryConfigurator {

    public ModeShapeRepositoryConfigurator() {
        defaultJCRImplClass = JcrRepositoryFactory.class.getName();
    }
   
    public void registerNodeTypesFromCndFile(String cndFileName, Session session, Workspace workspace)
            throws RepositoryException {
        CndNodeTypeReader reader = new CndNodeTypeReader(session);
        try {
            reader.read(cndFileName);
            workspace.getNodeTypeManager().registerNodeTypes(reader.getNodeTypeDefinitions(), false);
        } catch (Exception e) {
            throw new RepositoryException("Registering node types for repository failed.", e);
        }
    }

    public Session login(String userName) throws RepositoryException {
        Session session = null;
        try {
            session = AccessController.doPrivileged( new PrivilegedExceptionAction<Session>() {
                public Session run() throws Exception {
                    return repository.login();
                }
            });
        } catch (PrivilegedActionException pae) {
            throw new RepositoryException(pae.getMessage(),pae);
        }
        return session;
    }

    public void shutdown() {
        if (factory instanceof org.modeshape.jcr.api.RepositoryFactory) {
            ((org.modeshape.jcr.api.RepositoryFactory)factory).shutdown();
        }
    }
}
TOP

Related Classes of org.drools.repository.modeshape.ModeShapeRepositoryConfigurator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.