You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2006/11/20 14:54:30 UTC
svn commit: r477177 - in
/jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name:
./ NamespaceRegistryTest.java
Author: angela
Date: Mon Nov 20 05:54:29 2006
New Revision: 477177
URL: http://svn.apache.org/viewvc?view=rev&rev=477177
Log:
work in progress
- tests
Added:
jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/
jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java (with props)
Added: jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java?view=auto&rev=477177
==============================================================================
--- jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java (added)
+++ jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java Mon Nov 20 05:54:29 2006
@@ -0,0 +1,196 @@
+/*
+ * 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.jackrabbit.jcr2spi.name;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.apache.jackrabbit.test.NotExecutableException;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.NamespaceException;
+import javax.jcr.Repository;
+import javax.jcr.Session;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Arrays;
+
+/**
+ * <code>NamespaceRegistryTest</code>...
+ */
+public class NamespaceRegistryTest extends AbstractJCRTest {
+
+ private static Logger log = LoggerFactory.getLogger(NamespaceRegistryTest.class);
+
+ /** Default value of test prefix */
+ private static final String TEST_PREFIX = "test";
+
+ /** Default value of test namespace uri */
+ private static final String TEST_URI = "http://www.apache.org/jackrabbit/test/namespaceRegistryTest";
+
+ private NamespaceRegistry nsRegistry;
+ private String testPrefix;
+ private String testURI;
+
+ protected void setUp() throws Exception {
+ Session superuser = helper.getSuperuserSession();
+ nsRegistry = superuser.getWorkspace().getNamespaceRegistry();
+
+ testPrefix = getUnusedPrefix();
+ testURI = getUnusedURI();
+
+ boolean level2 = Boolean.valueOf((String) superuser.getRepository().getDescriptor(Repository.LEVEL_2_SUPPORTED)).booleanValue();
+ if (!level2) {
+ throw new NotExecutableException("Cannot test namespace registration/unregistration. Repository is a Level 1 only.");
+ }
+
+ }
+
+ /**
+ * Test if a new registred namespace is immediately visible through another
+ * session object.
+ *
+ * @throws RepositoryException
+ */
+ public void testRegisteredNamespaceVisibility() throws RepositoryException {
+ NamespaceRegistry other = helper.getReadOnlySession().getWorkspace().getNamespaceRegistry();
+
+ nsRegistry.registerNamespace(testPrefix, testURI);
+ String otherUri = other.getURI(testPrefix);
+ String otherPrefix = other.getPrefix(testURI);
+ assertTrue("Namespace registered must be immediately visible to any other session.", testURI.equals(otherUri) && testPrefix.equals(otherPrefix));
+ }
+
+ /**
+ * Test if a replace namespace prefix cannot be used as key any more to
+ * retrieve the uri.
+ *
+ * @throws RepositoryException
+ */
+ public void testReRegisteredNamespace() throws RepositoryException {
+ nsRegistry.registerNamespace(testPrefix, testURI);
+ String replacePrefix = getUnusedPrefix();
+ nsRegistry.registerNamespace(replacePrefix, testURI);
+ try {
+ nsRegistry.getURI(testPrefix);
+ fail("Namespace with prefix " + testPrefix + " has been reregistered with new prefix " + replacePrefix);
+ } catch (NamespaceException e) {
+ // OK
+ }
+ }
+
+ /**
+ * Test if a replace namespace prefix cannot be used as key any more to
+ * retrieve the uri in the <code>NamespaceRegistry</code> retrieved by
+ * another Session object.
+ *
+ * @throws RepositoryException
+ */
+ public void testReRegisteredNamespace2() throws RepositoryException {
+ NamespaceRegistry other = helper.getReadOnlySession().getWorkspace().getNamespaceRegistry();
+
+ nsRegistry.registerNamespace(testPrefix, testURI);
+ other.getPrefix(testURI);
+
+ String replacePrefix = getUnusedPrefix();
+ nsRegistry.registerNamespace(replacePrefix, testURI);
+
+ String otherPrefix = other.getPrefix(testURI);
+ assertEquals("Namespace with prefix " + testPrefix + " has been reregistered with new prefix " + replacePrefix, replacePrefix, otherPrefix);
+ }
+
+ /**
+ * Test if a replaced namespace prefix is immediately visible in the
+ * NamespaceRegistry obtained from another session object.
+ *
+ * @throws RepositoryException
+ */
+ public void testReRegisteredNamespaceVisibility() throws RepositoryException {
+ NamespaceRegistry other = helper.getReadOnlySession().getWorkspace().getNamespaceRegistry();
+
+ nsRegistry.registerNamespace(testPrefix, testURI);
+ other.getPrefix(testURI);
+
+ String replacePrefix = getUnusedPrefix();
+ nsRegistry.registerNamespace(replacePrefix, testURI);
+
+ String otherUri = other.getURI(replacePrefix);
+ String otherPrefix = other.getPrefix(testURI);
+ assertTrue("Namespace registered must be immediately visible to any other session.", testURI.equals(otherUri) && replacePrefix.equals(otherPrefix));
+
+ try {
+ other.getURI(testPrefix);
+ fail("Namespace with prefix " + testPrefix + " has been reregistered with new prefix " + replacePrefix);
+ } catch (NamespaceException e) {
+ // OK
+ }
+ }
+
+ /**
+ * Test if unregistering a namespace is propagated to all other sessions.
+ *
+ * @throws RepositoryException
+ */
+ public void testUnregisteredNamespaceVisibility() throws RepositoryException, NotExecutableException {
+ String prefix = getUnusedPrefix();
+ String uri = getUnusedURI();
+
+ NamespaceRegistry other = helper.getReadOnlySession().getWorkspace().getNamespaceRegistry();
+
+ nsRegistry.registerNamespace(prefix, uri);
+ try {
+ nsRegistry.unregisterNamespace(prefix);
+ } catch (NamespaceException e) {
+ throw new NotExecutableException("Repository does not support unregistration of namespaces.");
+ }
+
+ String otherUri = other.getURI(prefix);
+ String otherPrefix = other.getPrefix(uri);
+ assertTrue("Namespace registered must be immediately visible to any other session.", uri.equals(otherUri) && prefix.equals(otherPrefix));
+ }
+
+ /**
+ * Returns a namespace prefix that currently not used in the namespace
+ * registry.
+ * @return an unused namespace prefix.
+ */
+ private String getUnusedPrefix() throws RepositoryException {
+ Set prefixes = new HashSet(Arrays.asList(nsRegistry.getPrefixes()));
+ String prefix = TEST_PREFIX;
+ int i = 0;
+ while (prefixes.contains(prefix)) {
+ prefix = TEST_PREFIX + i++;
+ }
+ return prefix;
+ }
+
+ /**
+ * Returns a namespace URI that currently not used in the namespace
+ * registry.
+ * @return an unused namespace URI.
+ */
+ private String getUnusedURI() throws RepositoryException {
+ Set uris = new HashSet(Arrays.asList(nsRegistry.getURIs()));
+ String uri = TEST_URI;
+ int i = 0;
+ while (uris.contains(uri)) {
+ uri = TEST_URI + i++;
+ }
+ return uri;
+ }
+}
\ No newline at end of file
Propchange: jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/trunk/contrib/spi/client/src/test/java/org/apache/jackrabbit/jcr2spi/name/NamespaceRegistryTest.java
------------------------------------------------------------------------------
svn:keywords = author date id revision url