Author: cziegeler Date: Tue Feb 23 15:30:38 2010 New Revision: 915386 URL: http://svn.apache.org/viewvc?rev=915386&view=rev Log: SLING-1406 : Upgrade to JCR 2.0/Jackrabbit 2.0 and add simple test case for the repository util.
Added: sling/trunk/bundles/commons/testing/src/test/ sling/trunk/bundles/commons/testing/src/test/java/ sling/trunk/bundles/commons/testing/src/test/java/org/ sling/trunk/bundles/commons/testing/src/test/java/org/apache/ sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/ sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/ sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/ sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/ sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java (with props) Modified: sling/trunk/bundles/commons/testing/pom.xml sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNode.java sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNodeType.java sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockProperty.java sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockPropertyDefinition.java sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockValue.java sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryUtil.java sling/trunk/bundles/commons/testing/src/main/resources/jackrabbit-test-config.xml Modified: sling/trunk/bundles/commons/testing/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/pom.xml?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/pom.xml (original) +++ sling/trunk/bundles/commons/testing/pom.xml Tue Feb 23 15:30:38 2010 @@ -60,7 +60,7 @@ <groupId>org.osgi</groupId> <artifactId>org.osgi.compendium</artifactId> </dependency> - + <!-- Dependencies required for testing and provided transitively to modules using this artifact @@ -80,18 +80,31 @@ <dependency> <groupId>javax.jcr</groupId> <artifactId>jcr</artifactId> + <version>2.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.jackrabbit</groupId> <artifactId>jackrabbit-api</artifactId> - <version>1.4</version> + <version>2.0.0</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-jcr-commons</artifactId> + <version>2.0.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.jackrabbit</groupId> <artifactId>jackrabbit-core</artifactId> - <version>1.4.6</version> + <version>2.0.0</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.4</version> <scope>compile</scope> </dependency> <dependency> Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNode.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNode.java?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNode.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNode.java Tue Feb 23 15:30:38 2010 @@ -18,15 +18,16 @@ */ package org.apache.sling.commons.testing.jcr; -import org.apache.jackrabbit.util.ChildrenCollectorFilter; - import java.io.InputStream; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.jcr.Binary; +import javax.jcr.InvalidLifecycleTransitionException; import javax.jcr.Item; import javax.jcr.ItemVisitor; import javax.jcr.Node; @@ -35,17 +36,21 @@ import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.UnsupportedRepositoryOperationException; import javax.jcr.Value; import javax.jcr.ValueFormatException; import javax.jcr.lock.Lock; import javax.jcr.lock.LockException; import javax.jcr.nodetype.ConstraintViolationException; +import javax.jcr.nodetype.NoSuchNodeTypeException; import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.NodeType; import javax.jcr.version.Version; import javax.jcr.version.VersionException; import javax.jcr.version.VersionHistory; +import org.apache.jackrabbit.util.ChildrenCollectorFilter; + // simple mock implementation of a node public class MockNode implements Node { @@ -181,7 +186,7 @@ public PropertyIterator getProperties(String namePattern) throws RepositoryException { PropertyIterator iterator = getProperties(); List<Property> properties = new ArrayList<Property>(); - + while (iterator.hasNext()) { Property p = iterator.nextProperty(); String name = p.getName(); @@ -189,7 +194,7 @@ properties.add(p); } } - + return new MockPropertyIterator(properties.iterator()); } @@ -370,7 +375,7 @@ public Session getSession() { return this.session; } - + public void setSession(Session session) { this.session = session; } @@ -396,4 +401,89 @@ public void save() { } + // JCR 2.0 methods + + public void followLifecycleTransition(String transition) + throws UnsupportedRepositoryOperationException, + InvalidLifecycleTransitionException, RepositoryException { + // TODO Auto-generated method stub + + } + + public String[] getAllowedLifecycleTransistions() + throws UnsupportedRepositoryOperationException, RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public String getIdentifier() throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public NodeIterator getNodes(String[] nameGlobs) throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public PropertyIterator getProperties(String[] nameGlobs) + throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public PropertyIterator getReferences(String name) + throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public NodeIterator getSharedSet() throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public PropertyIterator getWeakReferences() throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public PropertyIterator getWeakReferences(String name) + throws RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public void removeShare() throws VersionException, LockException, + ConstraintViolationException, RepositoryException { + // TODO Auto-generated method stub + + } + + public void removeSharedSet() throws VersionException, LockException, + ConstraintViolationException, RepositoryException { + // TODO Auto-generated method stub + + } + + public void setPrimaryType(String nodeTypeName) + throws NoSuchNodeTypeException, VersionException, + ConstraintViolationException, LockException, RepositoryException { + // TODO Auto-generated method stub + + } + + public Property setProperty(String name, BigDecimal value) + throws ValueFormatException, VersionException, LockException, + ConstraintViolationException, RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public Property setProperty(String name, Binary value) + throws ValueFormatException, VersionException, LockException, + ConstraintViolationException, RepositoryException { + // TODO Auto-generated method stub + return null; + } } Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNodeType.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNodeType.java?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNodeType.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockNodeType.java Tue Feb 23 15:30:38 2010 @@ -21,6 +21,7 @@ import javax.jcr.Value; import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.NodeType; +import javax.jcr.nodetype.NodeTypeIterator; import javax.jcr.nodetype.PropertyDefinition; public class MockNodeType implements NodeType { @@ -95,4 +96,40 @@ return false; } + // JCR 2.0 methods + + public boolean canRemoveNode(String nodeName) { + // TODO Auto-generated method stub + return false; + } + + public boolean canRemoveProperty(String propertyName) { + // TODO Auto-generated method stub + return false; + } + + public NodeTypeIterator getDeclaredSubtypes() { + // TODO Auto-generated method stub + return null; + } + + public NodeTypeIterator getSubtypes() { + // TODO Auto-generated method stub + return null; + } + + public String[] getDeclaredSupertypeNames() { + // TODO Auto-generated method stub + return null; + } + + public boolean isAbstract() { + // TODO Auto-generated method stub + return false; + } + + public boolean isQueryable() { + // TODO Auto-generated method stub + return false; + } } Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockProperty.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockProperty.java?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockProperty.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockProperty.java Tue Feb 23 15:30:38 2010 @@ -19,9 +19,11 @@ package org.apache.sling.commons.testing.jcr; import java.io.InputStream; +import java.math.BigDecimal; import java.util.Calendar; import javax.jcr.AccessDeniedException; +import javax.jcr.Binary; import javax.jcr.InvalidItemStateException; import javax.jcr.Item; import javax.jcr.ItemExistsException; @@ -45,11 +47,11 @@ private Value [] values = {}; private final String name; - + public MockProperty(String name) { this.name = name; } - + public boolean getBoolean() throws ValueFormatException, RepositoryException { if (values.length > 1) { throw new ValueFormatException(); @@ -245,4 +247,41 @@ NoSuchNodeTypeException, RepositoryException { } + // JCR 2.0 methods + + public Binary getBinary() throws ValueFormatException, RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public BigDecimal getDecimal() throws ValueFormatException, + RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public Property getProperty() throws ItemNotFoundException, + ValueFormatException, RepositoryException { + // TODO Auto-generated method stub + return null; + } + + public boolean isMultiple() throws RepositoryException { + // TODO Auto-generated method stub + return false; + } + + public void setValue(BigDecimal value) throws ValueFormatException, + VersionException, LockException, ConstraintViolationException, + RepositoryException { + // TODO Auto-generated method stub + + } + + public void setValue(Binary value) throws ValueFormatException, + VersionException, LockException, ConstraintViolationException, + RepositoryException { + // TODO Auto-generated method stub + + } } Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockPropertyDefinition.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockPropertyDefinition.java?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockPropertyDefinition.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockPropertyDefinition.java Tue Feb 23 15:30:38 2010 @@ -25,10 +25,10 @@ public class MockPropertyDefinition implements PropertyDefinition { private boolean multiple; - + public MockPropertyDefinition(boolean multiple) { this.multiple = multiple; - + } public Value[] getDefaultValues() { return null; @@ -70,4 +70,18 @@ return false; } + // JCR 2.0 methods + + public String[] getAvailableQueryOperators() { + // TODO Auto-generated method stub + return null; + } + public boolean isFullTextSearchable() { + // TODO Auto-generated method stub + return false; + } + public boolean isQueryOrderable() { + // TODO Auto-generated method stub + return false; + } } Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockValue.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockValue.java?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockValue.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/MockValue.java Tue Feb 23 15:30:38 2010 @@ -19,8 +19,10 @@ package org.apache.sling.commons.testing.jcr; import java.io.InputStream; +import java.math.BigDecimal; import java.util.Calendar; +import javax.jcr.Binary; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; import javax.jcr.Value; @@ -35,15 +37,16 @@ private long longValue; private InputStream stream; private int propertyType; - + private BigDecimal decimal; + public MockValue() { } - + public MockValue(String str) { stringValue = str; propertyType = PropertyType.STRING; } - + public boolean getBoolean() throws ValueFormatException, IllegalStateException, RepositoryException { return booleanValue; } @@ -96,4 +99,16 @@ public void setValue(InputStream stream) { this.stream = stream; } + + public void setDecimal(BigDecimal value) { + this.decimal = value; + } + + public Binary getBinary() throws RepositoryException { + return null; + } + + public BigDecimal getDecimal() throws ValueFormatException, RepositoryException { + return decimal; + } } Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryUtil.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryUtil.java?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryUtil.java (original) +++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryUtil.java Tue Feb 23 15:30:38 2010 @@ -20,7 +20,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Hashtable; +import java.io.InputStreamReader; import javax.jcr.Credentials; import javax.jcr.LoginException; @@ -29,14 +29,11 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; -import javax.jcr.Workspace; -import javax.jcr.nodetype.NodeTypeManager; -import javax.naming.Context; -import javax.naming.InitialContext; +import javax.jcr.Value; import javax.naming.NamingException; -import org.apache.jackrabbit.api.JackrabbitNodeTypeManager; -import org.apache.jackrabbit.core.jndi.RegistryHelper; +import org.apache.jackrabbit.commons.JcrUtils; +import org.apache.jackrabbit.commons.cnd.CndImporter; import org.apache.sling.jcr.api.SlingRepository; /** @@ -45,117 +42,97 @@ */ public class RepositoryUtil { - public static final String REPOSITORY_NAME = "repositoryTest"; - public static final String ADMIN_NAME = "admin"; public static final String ADMIN_PASSWORD = "admin"; - public static final String CONTEXT_FACTORY = "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory"; - - public static final String PROVIDER_URL = "localhost"; + public static final String HOME_DIR = "target/repository"; public static final String CONFIG_FILE = "jackrabbit-test-config.xml"; - public static final String HOME_DIR = "target/repository"; + private static SlingRepository repository; - protected static InitialContext getInitialContext() throws NamingException { - final Hashtable<String, String> env = new Hashtable<String, String>(); - env.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY); - env.put(Context.PROVIDER_URL, PROVIDER_URL); - return new InitialContext(env); - } + private static Session adminSession; /** * Start a new repository * * @throws RepositoryException when it is not possible to start the * repository. - * @throws NamingException */ - public static void startRepository() throws RepositoryException, - NamingException { - - // copy the repository configuration file to the repository HOME_DIR - InputStream ins = RepositoryUtil.class.getClassLoader().getResourceAsStream( - CONFIG_FILE); - if (ins == null) { - throw new RepositoryException("Cannot get " + CONFIG_FILE); - } + public static void startRepository() throws RepositoryException { + if ( adminSession == null ) { + // copy the repository configuration file to the repository HOME_DIR + InputStream ins = RepositoryUtil.class.getClassLoader().getResourceAsStream( + CONFIG_FILE); + if (ins == null) { + throw new RepositoryException("Cannot get " + CONFIG_FILE); + } - File configFile = new File(HOME_DIR, CONFIG_FILE); - configFile.getParentFile().mkdirs(); + File configFile = new File(HOME_DIR, "repository.xml"); + configFile.getParentFile().mkdirs(); - FileOutputStream out = null; - try { - out = new FileOutputStream(configFile); - byte[] buf = new byte[1024]; - int rd; - while ((rd = ins.read(buf)) >= 0) { - out.write(buf, 0, rd); - } - } catch (IOException ioe) { - throw new RepositoryException("Cannot copy configuration file to " - + configFile); - } finally { + FileOutputStream out = null; try { - ins.close(); - } catch (IOException ignore) { - } - if (out != null) { + out = new FileOutputStream(configFile); + byte[] buf = new byte[1024]; + int rd; + while ((rd = ins.read(buf)) >= 0) { + out.write(buf, 0, rd); + } + } catch (IOException ioe) { + throw new RepositoryException("Cannot copy configuration file to " + + configFile); + } finally { try { - out.close(); + ins.close(); } catch (IOException ignore) { } + if (out != null) { + try { + out.close(); + } catch (IOException ignore) { + } + } } - } - // somewhat dirty hack to have the derby.log file in a sensible - // location, but don't overwrite anything already set - if (System.getProperty("derby.stream.error.file") == null) { - String derbyLog = HOME_DIR + "/derby.log"; - System.setProperty("derby.stream.error.file", derbyLog); - } + // somewhat dirty hack to have the derby.log file in a sensible + // location, but don't overwrite anything already set + if (System.getProperty("derby.stream.error.file") == null) { + String derbyLog = HOME_DIR + "/derby.log"; + System.setProperty("derby.stream.error.file", derbyLog); + } - RegistryHelper.registerRepository(getInitialContext(), REPOSITORY_NAME, - configFile.getPath(), HOME_DIR, true); + final File f = new File(HOME_DIR); + repository = new RepositoryWrapper(JcrUtils.getRepository(f.toURI().toString())); + adminSession = repository.loginAdministrative(null); + } } /** * Stop a repository. - * - * @throws NamingException when it is not possible to stop the repository - * @throws NamingException */ public static void stopRepository() throws NamingException { - RegistryHelper.unregisterRepository(getInitialContext(), - REPOSITORY_NAME); + if ( adminSession != null ) { + adminSession.logout(); + adminSession = null; + repository = null; + } } /** * Get a repository * * @return a JCR repository reference - * @throws NamingException when it is not possible to get the repository. - * Before calling this method, the repository has to be - * registered (@see RepositoryUtil#registerRepository(String, - * String, String) - * @throws NamingException */ - public static SlingRepository getRepository() throws NamingException { - return new RepositoryWrapper((Repository) getInitialContext().lookup( - REPOSITORY_NAME)); + public static SlingRepository getRepository() { + return repository; } /** * Registers node types from the CND file read from the <code>source</code> * with the node type manager available from the given <code>session</code>. * <p> - * The <code>NodeTypeManager</code> returned by the <code>session</code>'s - * workspace is expected to be of type - * <code>org.apache.jackrabbit.api.JackrabbitNodeTypeManager</code> for - * the node type registration to succeed. - * <p> * This method is not synchronized. It is up to the calling method to * prevent paralell execution. * @@ -167,36 +144,13 @@ */ public static boolean registerNodeType(Session session, InputStream source) throws IOException, RepositoryException { - - Workspace workspace = session.getWorkspace(); - NodeTypeManager ntm = workspace.getNodeTypeManager(); - if (ntm instanceof JackrabbitNodeTypeManager) { - JackrabbitNodeTypeManager jntm = (JackrabbitNodeTypeManager) ntm; - try { - jntm.registerNodeTypes(source, - JackrabbitNodeTypeManager.TEXT_X_JCR_CND); - return true; - } catch (RepositoryException re) { - Throwable t = re.getCause(); - if (t != null - && t.getClass().getName().endsWith( - ".InvalidNodeTypeDefException")) { - // hacky wacky: interpret message to check whether it is for - // duplicate node type -> very bad, that this is the only - // way to check !!! - if (re.getCause().getMessage().indexOf("already exists") >= 0) { - // alright, node types are already registered, ignore - // this - return true; - } - } - - // get here to rethrow the RepositoryException - throw re; - } + try { + CndImporter.registerNodeTypes(new InputStreamReader(source, "UTF-8"), session); + return true; + } catch (Exception e) { + // ignore + return false; } - - return false; } public static void registerSlingNodeTypes(Session adminSession) throws IOException, RepositoryException { @@ -232,7 +186,7 @@ public Session login(Credentials credentials, String workspaceName) throws LoginException, NoSuchWorkspaceException, RepositoryException { - return wrapped.login(credentials, workspaceName); + return wrapped.login(credentials, (workspaceName == null ? getDefaultWorkspace() : workspaceName)); } public Session login(Credentials credentials) throws LoginException, @@ -242,18 +196,34 @@ public Session login(String workspaceName) throws LoginException, NoSuchWorkspaceException, RepositoryException { - return wrapped.login(workspaceName); + return wrapped.login((workspaceName == null ? getDefaultWorkspace() : workspaceName)); } public String getDefaultWorkspace() { return "default"; } - public Session loginAdministrative(String workspace) + public Session loginAdministrative(String workspaceName) throws RepositoryException { final Credentials credentials = new SimpleCredentials(ADMIN_NAME, ADMIN_PASSWORD.toCharArray()); - return this.login(credentials, workspace); + return this.login(credentials, (workspaceName == null ? getDefaultWorkspace() : workspaceName)); + } + + public Value getDescriptorValue(String key) { + return wrapped.getDescriptorValue(key); + } + + public Value[] getDescriptorValues(String key) { + return wrapped.getDescriptorValues(key); + } + + public boolean isSingleValueDescriptor(String key) { + return wrapped.isSingleValueDescriptor(key); + } + + public boolean isStandardDescriptor(String key) { + return wrapped.isStandardDescriptor(key); } } Modified: sling/trunk/bundles/commons/testing/src/main/resources/jackrabbit-test-config.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/resources/jackrabbit-test-config.xml?rev=915386&r1=915385&r2=915386&view=diff ============================================================================== --- sling/trunk/bundles/commons/testing/src/main/resources/jackrabbit-test-config.xml (original) +++ sling/trunk/bundles/commons/testing/src/main/resources/jackrabbit-test-config.xml Tue Feb 23 15:30:38 2010 @@ -15,8 +15,16 @@ See the License for the specific language governing permissions and limitations under the License. --> -<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.2//EN" - "http://jackrabbit.apache.org/dtd/repository-1.2.dtd"> + +<!DOCTYPE Repository + PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 2.0//EN" + "http://jackrabbit.apache.org/dtd/repository-2.0.dtd"> + +<!-- Example Repository Configuration File + Used by + - org.apache.jackrabbit.core.config.RepositoryConfigTest.java + - +--> <Repository> <!-- virtual file system where the repository stores global state @@ -27,20 +35,44 @@ </FileSystem> <!-- + data store configuration + --> + <DataStore class="org.apache.jackrabbit.core.data.FileDataStore"/> + + <!-- security configuration --> <Security appName="Jackrabbit"> <!-- + security manager: + class: FQN of class implementing the JackrabbitSecurityManager interface + --> + <SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager" workspaceName="security"> + <!-- + workspace access: + class: FQN of class implementing the WorkspaceAccessManager interface + --> + <!-- <WorkspaceAccessManager class="..."/> --> + <!-- <param name="config" value="${rep.home}/security.xml"/> --> + </SecurityManager> + + <!-- access manager: class: FQN of class implementing the AccessManager interface --> - <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"> + <AccessManager class="org.apache.jackrabbit.core.security.DefaultAccessManager"> <!-- <param name="config" value="${rep.home}/access.xml"/> --> </AccessManager> - <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule"> - <!-- anonymous user name ('anonymous' is the default value) --> + <LoginModule class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule"> + <!-- + anonymous user name ('anonymous' is the default value) + --> <param name="anonymousId" value="anonymous"/> + <!-- + administrator user id (default value if param is missing is 'admin') + --> + <param name="adminId" value="admin"/> </LoginModule> </Security> @@ -52,7 +84,7 @@ workspace configuration template: used to create the initial workspace if there's no workspace yet --> - <Workspace name="Jackrabbit Core"> + <Workspace name="${wsp.name}"> <!-- virtual file system of the workspace: class: FQN of class implementing the FileSystem interface @@ -64,9 +96,9 @@ persistence manager of the workspace: class: FQN of class implementing the PersistenceManager interface --> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.DerbyPersistenceManager"> + <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager"> <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/> - <param name="schemaObjectPrefix" value="Jackrabbit Core_"/> + <param name="schemaObjectPrefix" value="${wsp.name}_"/> </PersistenceManager> <!-- Search index and the file system it uses. @@ -74,6 +106,7 @@ --> <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> <param name="path" value="${wsp.home}/index"/> + <param name="supportHighlighting" value="true"/> </SearchIndex> </Workspace> @@ -95,7 +128,7 @@ a 'normal' persistence manager, but this could change in future implementations. --> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.DerbyPersistenceManager"> + <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager"> <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/> <param name="schemaObjectPrefix" value="version_"/> </PersistenceManager> @@ -107,6 +140,6 @@ --> <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> <param name="path" value="${rep.home}/repository/index"/> + <param name="supportHighlighting" value="true"/> </SearchIndex> </Repository> - Added: sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java?rev=915386&view=auto ============================================================================== --- sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java (added) +++ sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java Tue Feb 23 15:30:38 2010 @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.sling.commons.testing.jcr; + +import static org.junit.Assert.assertNotNull; + +import javax.jcr.Session; + +/** + * This is a simple test for the repository util. We start + * the repository, try to login as admin and anonymous and + * then stop the repository. + */ +public class RepositoryUtilTest { + + @org.junit.Test public void testRepository() throws Exception { + // start the repository + RepositoryUtil.startRepository(); + + // get admin session + final Session adminSession = RepositoryUtil.getRepository().loginAdministrative(null); + assertNotNull(adminSession); + adminSession.logout(); + + // get anonymous session + final Session anonSession = RepositoryUtil.getRepository().login(); + assertNotNull(anonSession); + anonSession.logout(); + + // stop the repository + RepositoryUtil.stopRepository(); + } +} Propchange: sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java ------------------------------------------------------------------------------ svn:keywords = author date id revision rev url Propchange: sling/trunk/bundles/commons/testing/src/test/java/org/apache/sling/commons/testing/jcr/RepositoryUtilTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain