You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2005/04/25 14:36:20 UTC
svn commit: r164563 - in
/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test: ./ api/
api/nodetype/
Author: mreutegg
Date: Mon Apr 25 05:36:19 2005
New Revision: 164563
URL: http://svn.apache.org/viewcvs?rev=164563&view=rev
Log:
Add test cases, contributed by Vinzenz Wyser.
Added:
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java (with props)
Modified:
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/JCRTestResult.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyStringTest.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyValueTest.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/TestAll.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyLongTest.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyMultipleTest.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyTest.java
incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/NodeTypeUtil.java
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/JCRTestResult.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/JCRTestResult.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/JCRTestResult.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/JCRTestResult.java Mon Apr 25 05:36:19 2005
@@ -53,7 +53,7 @@
*/
public synchronized void addError(Test test, Throwable throwable) {
if (throwable instanceof NotExecutableException) {
- log.println("Test case: " + test.toString() + " not executable");
+ log.println("Test case: " + test.toString() + " not executable: " + throwable.getMessage());
} else {
orig.addError(test, throwable);
}
Added: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java?rev=164563&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java (added)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java Mon Apr 25 05:36:19 2005
@@ -0,0 +1,545 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.apache.jackrabbit.test.api;
+
+import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.test.api.nodetype.NodeTypeUtil;
+
+import javax.jcr.nodetype.PropertyDefinition;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.Node;
+import javax.jcr.Value;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.Property;
+import javax.jcr.PathValue;
+
+/**
+ * <code>SetPropertyAssumeTypeTest</code> tests if when setting a property
+ * of type <code>PropertyType.UNDEFINED</code> the type is assumed correctly.
+ * The signatures <code>Node.setProperty(String, Value, int)</code>,
+ * <code>Node.setProperty(String, String, int)</code>,
+ * <code>Node.setProperty(String, Value[], int)</code> and
+ * <code>Node.setProperty(String, Node)</code> are tested.
+ *
+ * @test
+ * @sources SetPropertyAssumeTypeTest.java
+ * @executeClass org.apache.jackrabbit.test.api.SetPropertyAssumeTypeTest
+ * @keywords level2
+ */
+public class SetPropertyAssumeTypeTest extends AbstractJCRTest {
+
+ private Node testNode;
+ private String testPropName;
+ private Value binaryValue;
+ private Value booleanValue;
+ private Value dateValue;
+ private Value doubleValue;
+ private Value longValue;
+ private Value nameValue;
+ private Value pathValue;
+ private Value stringValue;
+ private Value binaryValues[];
+ private Value booleanValues[];
+ private Value dateValues[];
+ private Value doubleValues[];
+ private Value longValues[];
+ private Value nameValues[];
+ private Value pathValues[];
+ private Value stringValues[];
+
+ public void setUp() throws Exception {
+ super.setUp();
+
+ binaryValue = NodeTypeUtil.getValueOfType(PropertyType.BINARY);
+ booleanValue = NodeTypeUtil.getValueOfType(PropertyType.BOOLEAN);
+ dateValue = NodeTypeUtil.getValueOfType(PropertyType.DATE);
+ doubleValue = NodeTypeUtil.getValueOfType(PropertyType.DOUBLE);
+ longValue = NodeTypeUtil.getValueOfType(PropertyType.LONG);
+ nameValue = NodeTypeUtil.getValueOfType(PropertyType.NAME);
+ pathValue = NodeTypeUtil.getValueOfType(PropertyType.PATH);
+ stringValue = NodeTypeUtil.getValueOfType(PropertyType.STRING);
+
+ binaryValues = new Value[] {binaryValue};
+ booleanValues = new Value[] {booleanValue};
+ dateValues = new Value[] {dateValue};
+ doubleValues = new Value[] {doubleValue};
+ longValues = new Value[] {longValue};
+ nameValues = new Value[] {nameValue};
+ pathValues = new Value[] {pathValue};
+ stringValues = new Value[] {stringValue};
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Value, int)</code> if the node
+ * type of this node does not indicate a specific property type, then the
+ * type parameter is used.
+ */
+ public void testValue() throws NotExecutableException, RepositoryException {
+
+ setUpNodeWithUndefinedProperty(false);
+
+ Property prop;
+
+ // create an extra value for BINARY property to avoid IllegalStateException
+ Value stringValueForBinary = NodeTypeUtil.getValueOfType(PropertyType.STRING);
+ prop = testNode.setProperty(testPropName, stringValueForBinary, PropertyType.BINARY);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.BINARY,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, stringValue, PropertyType.BOOLEAN);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.BOOLEAN,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, doubleValue, PropertyType.DATE);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.DATE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValue, PropertyType.DOUBLE);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.DOUBLE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValue, PropertyType.LONG);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.LONG,
+ prop.getType());
+
+ // create a PathValue that is convertible to the value of name property
+ Value valueConvertibleToName = PathValue.valueOf(nameValue.getString());
+ prop = testNode.setProperty(testPropName, valueConvertibleToName, PropertyType.NAME);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.NAME,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, nameValue, PropertyType.PATH);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.PATH,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValue, PropertyType.STRING);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.STRING,
+ prop.getType());
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Value[], int)</code> if the node
+ * type of this node does not indicate a specific property type, then the
+ * type parameter is used.
+ */
+ public void testValues() throws NotExecutableException, RepositoryException {
+
+ setUpNodeWithUndefinedProperty(true);
+
+ Property prop;
+
+ // create an extra value for BINARY property to avoid IllegalStateException
+ Value stringValuesForBinary[] =
+ new Value[] {NodeTypeUtil.getValueOfType(PropertyType.STRING)};
+ prop = testNode.setProperty(testPropName, stringValuesForBinary, PropertyType.BINARY);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.BINARY,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, stringValues, PropertyType.BOOLEAN);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.BOOLEAN,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, doubleValues, PropertyType.DATE);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.DATE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValues, PropertyType.DOUBLE);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.DOUBLE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValues, PropertyType.LONG);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.LONG,
+ prop.getType());
+
+ // create a PathValue that is convertible to the value of name property
+ Value valuesConvertibleToName[] =
+ new Value[] {PathValue.valueOf(nameValue.getString())};
+ prop = testNode.setProperty(testPropName, valuesConvertibleToName, PropertyType.NAME);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.NAME,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, nameValues, PropertyType.PATH);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.PATH,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValues, PropertyType.STRING);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.STRING,
+ prop.getType());
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, String, int)</code> if the node
+ * type of this node does not indicate a specific property type, then the
+ * type parameter is used.
+ */
+ public void testString() throws NotExecutableException, RepositoryException {
+
+ setUpNodeWithUndefinedProperty(false);
+
+ Property prop;
+
+ prop = testNode.setProperty(testPropName, binaryValue.getString(), PropertyType.BINARY);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.BINARY,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, booleanValue.getString(), PropertyType.BOOLEAN);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.BOOLEAN,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValue.getString(), PropertyType.DATE);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.DATE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, doubleValue.getString(), PropertyType.DOUBLE);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.DOUBLE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, longValue.getString(), PropertyType.LONG);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.LONG,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, nameValue.getString(), PropertyType.NAME);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.NAME,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, pathValue.getString(), PropertyType.PATH);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.PATH,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, stringValue.getString(), PropertyType.STRING);
+ assertEquals("setProperty(String, Value, int) of a property of type undefined " +
+ "must assume the property type of the type parameter.",
+ PropertyType.STRING,
+ prop.getType());
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Value)</code> if the node type of
+ * this node does not indicate a specific property type, then the property
+ * type of the supplied Value object is used and if the property already
+ * exists (has previously been set) it assumes the new property type.
+ */
+ public void testValueAssumeTypeOfValue() throws NotExecutableException, RepositoryException {
+
+ setUpNodeWithUndefinedProperty(false);
+
+ Property prop;
+
+ prop = testNode.setProperty(testPropName, binaryValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.BINARY,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, booleanValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.BOOLEAN,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.DATE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, doubleValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.DOUBLE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, longValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.LONG,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, nameValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.NAME,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, pathValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.PATH,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, stringValue);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.STRING,
+ prop.getType());
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Node)</code> if the node type of
+ * this node does not indicate a specific property type, then the property
+ * type of the supplied Value object is used and if the property already
+ * exists (has previously been set) it assumes the new property type.
+ */
+ public void testNodeAssumeTypeOfValue()
+ throws NotExecutableException, RepositoryException {
+
+ setUpNodeWithUndefinedProperty(false);
+
+ Node referenceableNode = testRootNode.addNode(nodeName2);
+ referenceableNode.addMixin(mixReferenceable);
+
+ Property prop = testNode.setProperty(testPropName, referenceableNode);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.REFERENCE,
+ prop.getType());
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Value[])</code> if the node type of
+ * this node does not indicate a specific property type, then the property
+ * type of the supplied Value object is used and if the property already
+ * exists (has previously been set) it assumes the new property type.
+ */
+ public void testValuesAssumeTypeOfValue() throws NotExecutableException, RepositoryException {
+
+ setUpNodeWithUndefinedProperty(true);
+
+ Property prop;
+
+ prop = testNode.setProperty(testPropName, binaryValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.BINARY,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, booleanValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.BOOLEAN,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, dateValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.DATE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, doubleValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.DOUBLE,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, longValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.LONG,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, nameValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.NAME,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, pathValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.PATH,
+ prop.getType());
+
+ prop = testNode.setProperty(testPropName, stringValues);
+ assertEquals("setProperty(String, Value) of a property of type undefined " +
+ "must assume the property type of the supplied value object.",
+ PropertyType.STRING,
+ prop.getType());
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Value, int)</code> throws a
+ * ConstraintViolationException if the type parameter and the type of the
+ * property do not match. The exception has to be thrown either immediately
+ * (by this method) or on save.
+ */
+ public void testValueConstraintVioloationExceptionBecauseOfInvalidTypeParameter()
+ throws NotExecutableException, RepositoryException {
+
+ // locate a property definition of type string
+ PropertyDefinition propDef =
+ NodeTypeUtil.locatePropertyDef(superuser, PropertyType.STRING, false, false, false, false);
+
+ if (propDef == null) {
+ throw new NotExecutableException("No testable property has been found.");
+ }
+
+ // create a node of type propDef.getDeclaringNodeType()
+ String nodeType = propDef.getDeclaringNodeType().getName();
+ Node testNode = testRootNode.addNode(nodeName1, nodeType);
+ String testPropName = propDef.getName();
+
+ try {
+ testNode.setProperty(testPropName, stringValue, PropertyType.DATE);
+ testRootNode.save();
+ fail("Node.setProperty(String, Value, int) must throw a " +
+ "ConstraintViolationExcpetion if" );
+ }
+ catch (ConstraintViolationException e) {
+ // success
+ }
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, String, int)</code> throws a
+ * ConstraintViolationException if the type parameter and the type of the
+ * property do not match. The exception has to be thrown either immediately
+ * (by this method) or on save.
+ */
+ public void testStringConstraintVioloationExceptionBecauseOfInvalidTypeParameter()
+ throws NotExecutableException, RepositoryException {
+
+ // locate a property definition of type string
+ PropertyDefinition propDef =
+ NodeTypeUtil.locatePropertyDef(superuser, PropertyType.STRING, false, false, false, false);
+
+ if (propDef == null) {
+ throw new NotExecutableException("No testable property has been found.");
+ }
+
+ // create a node of type propDef.getDeclaringNodeType()
+ String nodeType = propDef.getDeclaringNodeType().getName();
+ Node testNode = testRootNode.addNode(nodeName1, nodeType);
+ String testPropName = propDef.getName();
+
+ try {
+ testNode.setProperty(testPropName, "abc", PropertyType.DATE);
+ testRootNode.save();
+ fail("Node.setProperty(String, Value, int) must throw a " +
+ "ConstraintViolationExcpetion if" );
+ }
+ catch (ConstraintViolationException e) {
+ // success
+ }
+ }
+
+ /**
+ * Tests if <code>Node.setProperty(String, Value[], int)</code> throws a
+ * ConstraintViolationException if the type parameter and the type of the
+ * property do not match. The exception has to be thrown either immediately
+ * (by this method) or on save.
+ */
+ public void testValuesConstraintVioloationExceptionBecauseOfInvalidTypeParameter()
+ throws NotExecutableException, RepositoryException {
+
+ // locate a property definition of type string
+ PropertyDefinition propDef =
+ NodeTypeUtil.locatePropertyDef(superuser, PropertyType.STRING, true, false, false, false);
+
+ if (propDef == null) {
+ throw new NotExecutableException("No testable property has been found.");
+ }
+
+ // create a node of type propDef.getDeclaringNodeType()
+ String nodeType = propDef.getDeclaringNodeType().getName();
+ Node testNode = testRootNode.addNode(nodeName1, nodeType);
+ String testPropName = propDef.getName();
+
+ try {
+ testNode.setProperty(testPropName, stringValues, PropertyType.DATE);
+ testRootNode.save();
+ fail("Node.setProperty(String, Value, int) must throw a " +
+ "ConstraintViolationExcpetion if" );
+ }
+ catch (ConstraintViolationException e) {
+ // success
+ }
+ }
+
+ //--------------------------< internal >------------------------------------
+
+ private void setUpNodeWithUndefinedProperty(boolean multiple)
+ throws NotExecutableException {
+
+ try {
+ // locate a property definition of type undefined
+ PropertyDefinition propDef =
+ NodeTypeUtil.locatePropertyDef(superuser, PropertyType.UNDEFINED, multiple, false, false, false);
+
+ if (propDef == null) {
+ throw new NotExecutableException("No testable property of type " +
+ "UNDEFINED has been found.");
+ }
+
+ // create a node of type propDef.getDeclaringNodeType()
+ String nodeType = propDef.getDeclaringNodeType().getName();
+ testNode = testRootNode.addNode(nodeName1, nodeType);
+ testPropName = propDef.getName();
+ }
+ catch (RepositoryException e) {
+ throw new NotExecutableException("Not able to set up test items.");
+ }
+ }
+
+}
\ No newline at end of file
Propchange: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyStringTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyStringTest.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyStringTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyStringTest.java Mon Apr 25 05:36:19 2005
@@ -76,6 +76,9 @@
vArray2[2] = new StringValue("z");
}
+
+ // String
+
/**
* Tests if adding a property with <code>Node.setProperty(String,
* String)</code> works with <code>Session.save()</code>
@@ -156,6 +159,92 @@
testNode.hasProperty(propertyName1));
}
+
+ // String with PropertyType
+
+ /**
+ * Tests if adding a property with <code>Node.setProperty(String,
+ * String, int)</code> works with <code>Session.save()</code>
+ */
+ public void testNewStringPropertySessionWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, s1, PropertyType.STRING);
+ superuser.save();
+ assertEquals("Setting property with Node.setProperty(String, String, int) and Session.save() not working",
+ s1,
+ testNode.getProperty(propertyName1).getString());
+ }
+
+ /**
+ * Tests if modifying a property with <code>Node.setProperty(String,
+ * String, int)</code> works with <code>Session.save()</code>
+ */
+ public void testModifyStringPropertySessionWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, s1, PropertyType.STRING);
+ superuser.save();
+ testNode.setProperty(propertyName1, s2, PropertyType.STRING);
+ superuser.save();
+ assertEquals("Modifying property with Node.setProperty(String, String, int) and Session.save() not working",
+ s2,
+ testNode.getProperty(propertyName1).getString());
+ }
+
+ /**
+ * Tests if adding a property with <code>Node.setProperty(String,
+ * String, int)</code> works with <code>parentNode.save()</code>
+ */
+ public void testNewStringPropertyParentWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, s1, PropertyType.STRING);
+ testRootNode.save();
+ assertEquals("Setting property with Node.setProperty(String, String, int) and parentNode.save() not working",
+ s1,
+ testNode.getProperty(propertyName1).getString());
+ }
+
+ /**
+ * Tests if modifying a property with <code>Node.setProperty(String,
+ * String, int)</code> works with <code>parentNode.save()</code>
+ */
+ public void testModifyStringPropertyParentWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, s1, PropertyType.STRING);
+ testRootNode.save();
+ testNode.setProperty(propertyName1, s2, PropertyType.STRING);
+ testRootNode.save();
+ assertEquals("Modifying property with Node.setProperty(String, String, int) and parentNode.save() not working",
+ s2,
+ testNode.getProperty(propertyName1).getString());
+ }
+
+ /**
+ * Tests if removing a <code>String</code> property with
+ * <code>Node.setProperty(String, null, int)</code> works with
+ * <code>Session.save()</code>
+ */
+ public void testRemoveStringPropertySessionWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, s1, PropertyType.STRING);
+ superuser.save();
+ testNode.setProperty(propertyName1, (String) null, PropertyType.STRING);
+ superuser.save();
+ assertFalse("Removing property with Node.setProperty(String, (String)null, int) and Session.save() not working",
+ testNode.hasProperty(propertyName1));
+ }
+
+ /**
+ * Tests if removing a <code>String</code> property with
+ * <code>Node.setProperty(String, null, int)</code> works with
+ * <code>parentNode.save()</code>
+ */
+ public void testRemoveStringPropertyParentWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, s1, PropertyType.STRING);
+ testRootNode.save();
+ testNode.setProperty(propertyName1, (String) null, PropertyType.STRING);
+ testRootNode.save();
+ assertFalse("Removing property with Node.setProperty(String, (String)null, int) and parentNode.save() not working",
+ testNode.hasProperty(propertyName1));
+ }
+
+
+ // String[]
+
/**
* Tests if adding properties with <code>Node.setProperty(String,
* String[])</code> works with <code>Session.save()</code>
@@ -267,6 +356,9 @@
Arrays.asList(testNode.getProperty(propertyName2).getValues()));
}
+
+ // String[] with PropertyType
+
/**
* Tests if adding properties with <code>Node.setProperty(String, String[],
* int)</code> works with <code>Session.save()</code>
@@ -378,4 +470,4 @@
Arrays.asList(testNode.getProperty(propertyName2).getValues()));
}
-}
\ No newline at end of file
+}
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyValueTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyValueTest.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyValueTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/SetPropertyValueTest.java Mon Apr 25 05:36:19 2005
@@ -72,6 +72,11 @@
vArrayWithNulls[3] = new StringValue("z");
}
+
+ /**
+ * Value
+ */
+
/**
* Tests if adding a property with <code>Node.setProperty(String,
* Value)</code> works with <code>Session.save()</code>
@@ -149,6 +154,90 @@
testNode.setProperty(propertyName1, (Value) null);
testRootNode.save();
assertFalse("Removing property with Node.setProperty(String, (Value)null) and parentNode.save() not working",
+ testNode.hasProperty(propertyName1));
+ }
+
+ /**
+ * Value with PropertyType
+ */
+
+ /**
+ * Tests if adding a property with <code>Node.setProperty(String,
+ * Value, int)</code> works with <code>Session.save()</code>
+ */
+ public void testNewValuePropertySessionWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, v1, PropertyType.STRING);
+ superuser.save();
+ assertEquals("Setting property with Node.setProperty(String, Value, int) and Session.save() not working",
+ v1,
+ testNode.getProperty(propertyName1).getValue());
+ }
+
+ /**
+ * Tests if modifying a property with <code>Node.setProperty(String,
+ * Value, int)</code> works with <code>Session.save()</code>
+ */
+ public void testModifyValuePropertySessionWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, v1, PropertyType.STRING);
+ superuser.save();
+ testNode.setProperty(propertyName1, v2, PropertyType.STRING);
+ superuser.save();
+ assertEquals("Modifying property with Node.setProperty(String, Value, int) and Session.save() not working",
+ v2,
+ testNode.getProperty(propertyName1).getValue());
+ }
+
+ /**
+ * Tests if adding a property with <code>Node.setProperty(String,
+ * Value, int)</code> works with <code>parentNode.save()</code>
+ */
+ public void testNewValuePropertyParentWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, v1, PropertyType.STRING);
+ testRootNode.save();
+ assertEquals("Setting property with Node.setProperty(String, Value, int) and parentNode.save() not working",
+ v1,
+ testNode.getProperty(propertyName1).getValue());
+ }
+
+ /**
+ * Tests if modifying a property with <code>Node.setProperty(String,
+ * Value, int)</code> works with <code>parentNode.save()</code>
+ */
+ public void testModifyValuePropertyParentWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, v1, PropertyType.STRING);
+ testRootNode.save();
+ testNode.setProperty(propertyName1, v2, PropertyType.STRING);
+ testRootNode.save();
+ assertEquals("Modifying property with Node.setProperty(String, Value, int) and parentNode.save() not working",
+ v2,
+ testNode.getProperty(propertyName1).getValue());
+ }
+
+ /**
+ * Tests if removing a <code>Value</code> property with
+ * <code>Node.setProperty(String, null, int)</code> works with
+ * <code>Session.save()</code>
+ */
+ public void testRemoveValuePropertySessionWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, v1, PropertyType.STRING);
+ superuser.save();
+ testNode.setProperty(propertyName1, (Value) null, PropertyType.STRING);
+ superuser.save();
+ assertFalse("Removing property with Node.setProperty(String, (Value)null, int) and Session.save() not working",
+ testNode.hasProperty(propertyName1));
+ }
+
+ /**
+ * Tests if removing a <code>Value</code> property with
+ * <code>Node.setProperty(String, null, int)</code> works with
+ * <code>parentNode.save()</code>
+ */
+ public void testRemoveValuePropertyParentWithPropertyType() throws Exception {
+ testNode.setProperty(propertyName1, v1, PropertyType.STRING);
+ testRootNode.save();
+ testNode.setProperty(propertyName1, (Value) null, PropertyType.STRING);
+ testRootNode.save();
+ assertFalse("Removing property with Node.setProperty(String, (Value)null, int) and parentNode.save() not working",
testNode.hasProperty(propertyName1));
}
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/TestAll.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/TestAll.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/TestAll.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/TestAll.java Mon Apr 25 05:36:19 2005
@@ -96,6 +96,7 @@
suite.addTestSuite(SetPropertyStringTest.class);
suite.addTestSuite(SetPropertyValueTest.class);
suite.addTestSuite(SetPropertyConstraintViolationExceptionTest.class);
+ suite.addTestSuite(SetPropertyAssumeTypeTest.class);
suite.addTestSuite(NodeItemIsModifiedTest.class);
suite.addTestSuite(NodeItemIsNewTest.class);
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyLongTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyLongTest.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyLongTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyLongTest.java Mon Apr 25 05:36:19 2005
@@ -32,7 +32,7 @@
/**
* Test of <code>NodeType.canSetProperty(String propertyName, Value
* value)</code> and <code>NodeType.canSetProperty(String propertyName, Value[]
- * values)</code> where property is of type Double.
+ * values)</code> where property is of type Long.
*
* @test
* @sources CanSetPropertyLongTest.java
@@ -74,7 +74,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.DOUBLE, false, false, false, false);
+ NodeTypeUtil.locatePropertyDef(session, PropertyType.LONG, false, false, false, false);
if (propDef == null) {
throw new NotExecutableException("No long property def that meets the " +
@@ -149,7 +149,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.DOUBLE, true, false, false, false);
+ NodeTypeUtil.locatePropertyDef(session, PropertyType.LONG, true, false, false, false);
if (propDef == null) {
throw new NotExecutableException("No multiple long property def that meets the " +
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyMultipleTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyMultipleTest.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyMultipleTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyMultipleTest.java Mon Apr 25 05:36:19 2005
@@ -23,7 +23,6 @@
import javax.jcr.nodetype.NodeType;
import javax.jcr.Session;
import javax.jcr.RepositoryException;
-import javax.jcr.PropertyType;
import javax.jcr.Value;
/**
@@ -71,7 +70,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.UNDEFINED, true, true, false, false);
+ NodeTypeUtil.locatePropertyDef(session, NodeTypeUtil.ANY_PROPERTY_TYPE, true, true, false, false);
// will never happen since at least jcr:mixinTypes of nt:base accomplish the request
if (propDef == null) {
@@ -96,7 +95,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.UNDEFINED, false, false, false, false);
+ NodeTypeUtil.locatePropertyDef(session, NodeTypeUtil.ANY_PROPERTY_TYPE, false, false, false, false);
if (propDef == null) {
throw new NotExecutableException("No not multiple, not protected property def found");
@@ -119,7 +118,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.UNDEFINED, true, false, false, false);
+ NodeTypeUtil.locatePropertyDef(session, NodeTypeUtil.ANY_PROPERTY_TYPE, true, false, false, false);
if (propDef == null) {
throw new NotExecutableException("No not protected, multiple property def found");
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyTest.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/CanSetPropertyTest.java Mon Apr 25 05:36:19 2005
@@ -23,7 +23,6 @@
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.Session;
import javax.jcr.RepositoryException;
-import javax.jcr.PropertyType;
import javax.jcr.Value;
/**
@@ -70,7 +69,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.UNDEFINED, false, true, false, false);
+ NodeTypeUtil.locatePropertyDef(session, NodeTypeUtil.ANY_PROPERTY_TYPE, false, true, false, false);
// will never happen since at least jcr:primaryType of nt:base accomplish the request
if (propDef == null) {
@@ -94,7 +93,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.UNDEFINED, true, false, false, false);
+ NodeTypeUtil.locatePropertyDef(session, NodeTypeUtil.ANY_PROPERTY_TYPE, true, false, false, false);
if (propDef == null) {
throw new NotExecutableException("No multiple, not protected property def found.");
@@ -116,7 +115,7 @@
throws NotExecutableException, RepositoryException {
PropertyDefinition propDef =
- NodeTypeUtil.locatePropertyDef(session, PropertyType.UNDEFINED, false, false, false, false);
+ NodeTypeUtil.locatePropertyDef(session, NodeTypeUtil.ANY_PROPERTY_TYPE, false, false, false, false);
if (propDef == null) {
throw new NotExecutableException("No not protected property def found.");
Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/NodeTypeUtil.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/NodeTypeUtil.java?rev=164563&r1=164562&r2=164563&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/NodeTypeUtil.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/nodetype/NodeTypeUtil.java Mon Apr 25 05:36:19 2005
@@ -44,6 +44,8 @@
*/
public class NodeTypeUtil {
+ public static final int ANY_PROPERTY_TYPE = -1;
+
/**
* Locate a child node def parsing all node types
*
@@ -178,8 +180,8 @@
* Locate a property def parsing all node types
*
* @param session the session to access the node types
- * @param propertyType the type of the returned property. <cod>PropertyType.UNDEFINED</code>
- * returns a property of any type
+ * @param propertyType the type of the returned property. -1 indicates to
+ * return a property of any type but not UNDEFIEND
* @param multiple if true, the returned <code>PropertyDef</code> is
* multiple, else not
* @param isProtected if true, the returned <code>PropertyDef</code> is
@@ -206,9 +208,13 @@
for (int i = 0; i < propDefs.length; i++) {
PropertyDefinition propDef = propDefs[i];
- // PropertyType.UNDEFINED is in use to get a property of any type
- if (propertyType != PropertyType.UNDEFINED &&
+ if (propertyType != ANY_PROPERTY_TYPE &&
propDef.getRequiredType() != propertyType) {
+ continue;
+ }
+
+ if (propertyType == ANY_PROPERTY_TYPE &&
+ propDef.getRequiredType() == PropertyType.UNDEFINED) {
continue;
}