/* * ModeShape (http://www.modeshape.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.modeshape.jcr; import java.io.IOException; import java.io.InputStream; import javax.jcr.ImportUUIDBehavior; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Workspace; import org.modeshape.schematic.document.Document; import org.modeshape.schematic.document.Json; /** * @author okulikov */ public class TestRepository { private final String configName = "config/test-repository.json"; private RepositoryConfiguration config; private ModeShapeEngine engine; private boolean dropOnExit; private boolean createOnStart = true; private String cnd = "cnd/cars.cnd"; private JcrRepository repository; public void start() throws Exception { System.setProperty("dropOnExit", Boolean.toString(dropOnExit)); System.setProperty("createOnStart", Boolean.toString(createOnStart)); System.setProperty("node.types", cnd); InputStream configStream = getClass().getClassLoader().getResourceAsStream(configName); Document configDoc = Json.read(configStream); config = new RepositoryConfiguration(configDoc, configName); engine = new ModeShapeEngine(); engine.start(); engine.deploy(config); repository = engine.startRepository(config.getName()).get(); } public void setDropOnExit(boolean dropOnExit) { this.dropOnExit = dropOnExit; } public void setCreateOnStart(boolean createOnStart) { this.createOnStart = createOnStart; } public void setCnd(String cnd) { this.cnd = cnd; } public Session login() throws RepositoryException { return repository.login(); } public Session login(String workspace) throws RepositoryException { return repository.login(workspace); } public Repository repository() { return repository; } public void shutdown() { TestingUtil.killRepository(repository); } public void restart() throws Exception { shutdown(); start(); } public void loadInitialContent(String resourceName, Session session) throws RepositoryException, IOException { InputStream stream = TestRepository.class.getClassLoader().getResourceAsStream(resourceName); Workspace workspace = session.getWorkspace(); workspace.importXML("/", stream, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW); } }