/* * 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.test.api; import org.apache.jackrabbit.test.AbstractJCRTest; import org.apache.jackrabbit.test.RepositoryStub; import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.ValueFactory; import javax.jcr.Value; import javax.jcr.PropertyType; import javax.jcr.Property; import javax.jcr.Workspace; /** * <code>NameTest</code>... */ public class NameTest extends AbstractJCRTest { private String getExpandedName(String jcrName) throws RepositoryException { if (jcrName.startsWith("{")) { return jcrName; } else { int pos = jcrName.indexOf(":"); String prefix = (pos > -1) ? jcrName.substring(0, pos) : ""; String uri = superuser.getNamespaceURI(prefix); return "{" + uri + "}" + jcrName.substring(pos+1); } } /** * Expanded names must always be resolved. * Test NAME-value creation. * * @throws RepositoryException */ public void testExpandedNameValue() throws RepositoryException { ValueFactory vf = superuser.getValueFactory(); Value nameValue = vf.createValue(Workspace.NAME_VERSION_STORAGE_NODE, PropertyType.NAME); assertEquals(PropertyType.NAME, nameValue.getType()); assertEquals(nameValue.getString(), vf.createValue("jcr:versionStorage", PropertyType.NAME).getString()); assertEquals(nameValue, vf.createValue("jcr:versionStorage", PropertyType.NAME)); assertEquals("jcr:versionStorage", nameValue.getString()); } /** * Expanded names must always be resolved. * Test setting a NAME-value property. * * @throws RepositoryException */ public void testExpandedNameValueProperty() throws RepositoryException { ValueFactory vf = superuser.getValueFactory(); Value nameValue = vf.createValue(Workspace.NAME_VERSION_STORAGE_NODE, PropertyType.NAME); Property p = testRootNode.setProperty(propertyName1, nameValue); assertEquals(PropertyType.NAME, p.getType()); assertEquals(nameValue.getString(), p.getValue().getString()); assertEquals(nameValue, p.getValue()); assertEquals("jcr:versionStorage", p.getString()); } /** * Test if the name of property created with an expanded name is properly * return as standard JCR name. * * @throws RepositoryException */ public void testExpandedNameItem() throws RepositoryException { String propName = getExpandedName(propertyName1); Property p = testRootNode.setProperty(propName, getJcrValue(superuser, RepositoryStub.PROP_PROP_VALUE1, RepositoryStub.PROP_PROP_TYPE1, "test")); assertEquals(propertyName1, p.getName()); } /** * Test if creating a node with an expanded node type name returns the proper * standard JCR node type name. * * @throws RepositoryException */ public void testExpandedNodeTypeName() throws RepositoryException { String nodeName = getExpandedName(nodeName1); String ntName = getExpandedName(testNodeType); Node n = testRootNode.addNode(nodeName, ntName); assertEquals(nodeName1, n.getName()); assertEquals(testNodeType, n.getPrimaryNodeType().getName()); } }