You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/09/08 18:09:45 UTC
svn commit: r812570 [19/24] - in /jackrabbit/sandbox/JCR-1456: ./
jackrabbit-api/ jackrabbit-api/src/main/appended-resources/
jackrabbit-api/src/main/appended-resources/META-INF/
jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/ jackrabb...
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/value/WeakReferenceValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/value/WeakReferenceValue.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/value/WeakReferenceValue.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/value/WeakReferenceValue.java Tue Sep 8 16:09:28 2009
@@ -16,14 +16,13 @@
*/
package org.apache.jackrabbit.value;
-import org.apache.jackrabbit.uuid.UUID;
-
import javax.jcr.Node;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.ValueFormatException;
import java.util.Calendar;
+import java.util.UUID;
import java.math.BigDecimal;
/**
@@ -148,8 +147,6 @@
public Calendar getDate()
throws ValueFormatException, IllegalStateException,
RepositoryException {
- setValueConsumed();
-
throw new ValueFormatException("conversion to date failed: inconvertible types");
}
@@ -159,8 +156,6 @@
public long getLong()
throws ValueFormatException, IllegalStateException,
RepositoryException {
- setValueConsumed();
-
throw new ValueFormatException("conversion to long failed: inconvertible types");
}
@@ -170,8 +165,6 @@
public boolean getBoolean()
throws ValueFormatException, IllegalStateException,
RepositoryException {
- setValueConsumed();
-
throw new ValueFormatException("conversion to boolean failed: inconvertible types");
}
@@ -181,8 +174,6 @@
public double getDouble()
throws ValueFormatException, IllegalStateException,
RepositoryException {
- setValueConsumed();
-
throw new ValueFormatException("conversion to double failed: inconvertible types");
}
@@ -192,8 +183,6 @@
public BigDecimal getDecimal()
throws ValueFormatException, IllegalStateException,
RepositoryException {
- setValueConsumed();
-
throw new ValueFormatException("conversion to Decimal failed: inconvertible types");
}
}
\ No newline at end of file
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java Tue Sep 8 16:09:28 2009
@@ -88,7 +88,7 @@
final NodeIterator children = node.getNodes();
if (!children.hasNext()) {
// no child present at all -> add special property.
- writeKeyValue(writer, "::NodeIteratorSize", "0", false);
+ writeKeyValue(writer, "::NodeIteratorSize", 0);
} else {
// the child nodes
while (children.hasNext()) {
@@ -162,14 +162,14 @@
// mark binary properties with a leading ':'
// the value(s) reflect the jcr-values length instead of the binary data.
String key = ":" + p.getName();
- if (p.getDefinition().isMultiple()) {
+ if (p.isMultiple()) {
long[] binLengths = p.getLengths();
writeKeyArray(w, key, binLengths);
} else {
writeKeyValue(w, key, p.getLength());
}
} else {
- boolean isMultiple = p.getDefinition().isMultiple();
+ boolean isMultiple = p.isMultiple();
if (type == PropertyType.NAME || type == PropertyType.PATH ||
type == PropertyType.REFERENCE || type == PropertyType.DATE ||
(isMultiple && p.getValues().length == 0)) {
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java Tue Sep 8 16:09:28 2009
@@ -335,7 +335,7 @@
*/
private boolean isMultiple() {
try {
- if (exists() && ((Property)item).getDefinition().isMultiple()) {
+ if (exists() && ((Property)item).isMultiple()) {
return true;
}
} catch (RepositoryException e) {
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java Tue Sep 8 16:09:28 2009
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.webdav.jcr.observation;
-import org.apache.jackrabbit.uuid.UUID;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavResourceLocator;
import org.apache.jackrabbit.webdav.DavServletResponse;
@@ -50,6 +49,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
/**
* The <code>Subscription</code> class encapsulates a single subscription with
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java Tue Sep 8 16:09:28 2009
@@ -29,6 +29,9 @@
import org.w3c.dom.Element;
import javax.jcr.Repository;
+import javax.jcr.Value;
+import javax.jcr.RepositoryException;
+import javax.jcr.PropertyType;
/**
* <code>RepositoryDescriptorsReport</code> allows to retrieve the repository
@@ -96,11 +99,22 @@
public Element toXml(Document document) {
Repository repository = getRepositorySession().getRepository();
Element report = DomUtil.createElement(document, "repositorydescriptors-report", NAMESPACE);
- String[] keys = repository.getDescriptorKeys();
- for (int i = 0; i < keys.length; i++) {
+ for (String key : repository.getDescriptorKeys()) {
Element elem = DomUtil.addChildElement(report, XML_DESCRIPTOR, NAMESPACE);
- DomUtil.addChildElement(elem, XML_DESCRIPTORKEY, NAMESPACE, keys[i]);
- DomUtil.addChildElement(elem, XML_DESCRIPTORVALUE, NAMESPACE, repository.getDescriptor(keys[i]));
+ DomUtil.addChildElement(elem, XML_DESCRIPTORKEY, NAMESPACE, key);
+ for (Value v : repository.getDescriptorValues(key)) {
+ String value;
+ try {
+ value = v.getString();
+ } catch (RepositoryException e) {
+ log.error("Internal error while reading descriptor value: ", e);
+ value = repository.getDescriptor(key);
+ }
+ Element child = DomUtil.addChildElement(elem, XML_DESCRIPTORVALUE, NAMESPACE, value);
+ if (PropertyType.STRING != v.getType()) {
+ child.setAttribute(ATTR_VALUE_TYPE, PropertyType.nameFromValue(v.getType()));
+ }
+ }
}
return report;
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java Tue Sep 8 16:09:28 2009
@@ -29,7 +29,6 @@
import org.apache.jackrabbit.server.io.PropertyExportContext;
import org.apache.jackrabbit.server.io.PropertyImportContext;
import org.apache.jackrabbit.util.Text;
-import org.apache.jackrabbit.uuid.UUID;
import org.apache.jackrabbit.webdav.DavCompliance;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavResource;
@@ -83,6 +82,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
/**
* DavResourceImpl implements a DavResource.
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/remoting/davex/JsonDiffHandlerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/remoting/davex/JsonDiffHandlerTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/remoting/davex/JsonDiffHandlerTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/server/remoting/davex/JsonDiffHandlerTest.java Tue Sep 8 16:09:28 2009
@@ -234,7 +234,7 @@
return null;
}
- public boolean hasCapability(String arg0, Object arg1, Map arg2)
+ public boolean hasCapability(String arg0, Object arg1, Object[] arg2)
throws RepositoryException {
// TODO Auto-generated method stub
return false;
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/pom.xml?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/pom.xml (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/pom.xml Tue Sep 8 16:09:28 2009
@@ -63,6 +63,8 @@
<configuration>
<excludes>
<exclude>**/nodetype/spec/*.txt</exclude>
+ <exclude>*.log</exclude>
+ <exclude>.checkstyle</exclude>
</excludes>
</configuration>
</plugin>
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java Tue Sep 8 16:09:28 2009
@@ -169,6 +169,11 @@
protected String ntBase;
/**
+ * JCR Name nt:unstructured using the namespace resolver of the current session.
+ */
+ protected String ntUnstructured;
+
+ /**
* JCR Name nt:version using the namespace resolver of the current session.
*/
protected String ntVersion;
@@ -356,6 +361,7 @@
jcrMergeFailed = superuser.getNamespacePrefix(NS_JCR_URI) + ":mergeFailed";
jcrSystem = superuser.getNamespacePrefix(NS_JCR_URI) + ":system";
ntBase = superuser.getNamespacePrefix(NS_NT_URI) + ":base";
+ ntUnstructured = superuser.getNamespacePrefix(NS_NT_URI) + ":unstructured";
ntVersion = superuser.getNamespacePrefix(NS_NT_URI) + ":version";
ntVersionHistory = superuser.getNamespacePrefix(NS_NT_URI) + ":versionHistory";
ntVersionLabels = superuser.getNamespacePrefix(NS_NT_URI) + ":versionLabels";
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BooleanPropertyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BooleanPropertyTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BooleanPropertyTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BooleanPropertyTest.java Tue Sep 8 16:09:28 2009
@@ -137,17 +137,15 @@
}
try {
val.getBoolean();
- fail("Non stream method call after stream method call " +
- "should throw an IllegalStateException");
} catch (IllegalStateException ise) {
- //ok
+ fail("Non stream method call after stream method call " +
+ "should not throw an IllegalStateException");
}
try {
ins = otherVal.getStream();
- fail("Stream method call after a non stream method call " +
- "should throw an IllegalStateException");
} catch (IllegalStateException ise) {
- // ok
+ fail("Stream method call after a non stream method call " +
+ "should not throw an IllegalStateException");
} finally {
if (in != null) {
in.close();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DatePropertyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DatePropertyTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DatePropertyTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DatePropertyTest.java Tue Sep 8 16:09:28 2009
@@ -146,17 +146,15 @@
}
try {
val.getDate();
- fail("Non stream method call after stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- //ok
+ fail("Non stream method call after stream method call " +
+ "should not throw an IllegalStateException.");
}
try {
ins = otherVal.getStream();
- fail("Stream method call after a non stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- // ok
+ fail("Stream method call after a non stream method call " +
+ "should not throw an IllegalStateException.");
} finally {
if (in != null) {
in.close();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DoublePropertyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DoublePropertyTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DoublePropertyTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/DoublePropertyTest.java Tue Sep 8 16:09:28 2009
@@ -130,17 +130,15 @@
}
try {
val.getDouble();
- fail("Non stream method call after stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- //ok
+ fail("Non stream method call after stream method call " +
+ "should not throw an IllegalStateException.");
}
try {
ins = otherVal.getStream();
- fail("Stream method call after a non stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- // ok
+ fail("Stream method call after a non stream method call " +
+ "should not throw an IllegalStateException.");
} finally {
if (in != null) {
in.close();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/LongPropertyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/LongPropertyTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/LongPropertyTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/LongPropertyTest.java Tue Sep 8 16:09:28 2009
@@ -128,17 +128,15 @@
}
try {
val.getLong();
- fail("Non stream method call after stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- //ok
+ fail("Non stream method call after stream method call " +
+ "should not throw an IllegalStateException.");
}
try {
ins = otherVal.getStream();
- fail("Stream method call after a non stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- // ok
+ fail("Stream method call after a non stream method call " +
+ "should not throw an IllegalStateException.");
} finally {
if (in != null) {
in.close();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ReferencesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ReferencesTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ReferencesTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ReferencesTest.java Tue Sep 8 16:09:28 2009
@@ -24,6 +24,8 @@
import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
+import java.util.Set;
+import java.util.HashSet;
/**
* <code>ReferencesTest</code> contains the test cases for the references.
@@ -111,6 +113,88 @@
}
/**
+ * Tests Node.getReferences(String)
+ */
+ public void testGetReferencesWithName() throws RepositoryException, NotExecutableException {
+ Node n1 = testRootNode.addNode(nodeName1, testNodeType);
+ ensureMixinType(n1, mixReferenceable);
+
+ // with some impls. the mixin type has only affect upon save
+ testRootNode.save();
+
+ // make sure the node is now referenceable
+ assertTrue("test node should be mix:referenceable", n1.isNodeType(mixReferenceable));
+
+ // create references:
+ // n2.p1 -> n1
+ // n2.p2 -> n1
+ // n3.p1 -> n1
+ Node n2 = testRootNode.addNode(nodeName2, testNodeType);
+ Node n3 = testRootNode.addNode(nodeName3, testNodeType);
+
+ Value[] values = new Value[]{superuser.getValueFactory().createValue(n1)};
+
+ // abort test if the repository does not allow setting
+ // reference properties on this node
+ ensureCanSetProperty(n2, propertyName1, values);
+ ensureCanSetProperty(n2, propertyName2, values);
+ ensureCanSetProperty(n3, propertyName1, values);
+
+ Property p1 = n2.setProperty(propertyName1, values);
+ Property p2 = n2.setProperty(propertyName2, values);
+ Property p3 = n3.setProperty(propertyName1, n1);
+ testRootNode.save();
+
+ // get references with name propertyName1
+ // (should return p1 and p3))
+ PropertyIterator iter = n1.getReferences(propertyName1);
+ Set results = new HashSet();
+ while (iter.hasNext()) {
+ results.add(iter.nextProperty().getPath());
+ }
+ assertEquals("wrong number of references reported", 2, results.size());
+ assertTrue("missing reference property: " + p1.getPath(), results.contains(p1.getPath()));
+ assertTrue("missing reference property: " + p3.getPath(), results.contains(p3.getPath()));
+
+ // get references with name propertyName2
+ // (should return p2))
+ iter = n1.getReferences(propertyName2);
+ results.clear();
+ while (iter.hasNext()) {
+ results.add(iter.nextProperty().getPath());
+ }
+ assertEquals("wrong number of references reported", 1, results.size());
+ assertTrue("missing reference property: " + p2.getPath(), results.contains(p2.getPath()));
+
+ // remove reference n3.p1 -> n1
+ testRootNode.getNode(nodeName3).getProperty(propertyName1).remove();
+ testRootNode.save();
+
+ // get references with name propertyName1
+ // (should return p1))
+ iter = n1.getReferences(propertyName1);
+ results.clear();
+ while (iter.hasNext()) {
+ results.add(iter.nextProperty().getPath());
+ }
+ assertEquals("wrong number of references reported", 1, results.size());
+ assertTrue("missing reference property: " + p1.getPath(), results.contains(p1.getPath()));
+
+ // remove reference n2.p1 -> n1
+ p1.remove();
+ testRootNode.save();
+
+ // get references with name propertyName1
+ // (should nothing))
+ iter = n1.getReferences(propertyName1);
+ results.clear();
+ while (iter.hasNext()) {
+ results.add(iter.nextProperty().getPath());
+ }
+ assertEquals("wrong number of references reported", 0, results.size());
+ }
+
+ /**
* Tests Property.getNode();
*/
public void testReferenceTarget() throws RepositoryException, NotExecutableException {
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/RepositoryDescriptorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/RepositoryDescriptorTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/RepositoryDescriptorTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/RepositoryDescriptorTest.java Tue Sep 8 16:09:28 2009
@@ -20,6 +20,9 @@
import javax.jcr.Repository;
import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
@@ -39,21 +42,55 @@
private static final Set requiredDescriptorKeys = new HashSet();
static {
+ requiredDescriptorKeys.add(Repository.IDENTIFIER_STABILITY);
requiredDescriptorKeys.add(Repository.LEVEL_1_SUPPORTED);
requiredDescriptorKeys.add(Repository.LEVEL_2_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_AUTOCREATED_DEFINITIONS_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_INHERITANCE);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_MULTIPLE_BINARY_PROPERTIES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_MULTIVALUED_PROPERTIES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_ORDERABLE_CHILD_NODES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_OVERRIDES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_PRIMARY_ITEM_NAME_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_PROPERTY_TYPES);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_RESIDUAL_DEFINITIONS_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_VALUE_CONSTRAINTS_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.NODE_TYPE_MANAGEMENT_UPDATE_IN_USE_SUPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_ACCESS_CONTROL_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_JOURNALED_OBSERVATION_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_LIFECYCLE_SUPPORTED);
requiredDescriptorKeys.add(Repository.OPTION_LOCKING_SUPPORTED);
requiredDescriptorKeys.add(Repository.OPTION_OBSERVATION_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_NODE_AND_PROPERTY_WITH_SAME_NAME_SUPPORTED);
requiredDescriptorKeys.add(Repository.OPTION_QUERY_SQL_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_RETENTION_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_SHAREABLE_NODES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_SIMPLE_VERSIONING_SUPPORTED);
requiredDescriptorKeys.add(Repository.OPTION_TRANSACTIONS_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_UNFILED_CONTENT_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_UPDATE_MIXIN_NODE_TYPES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_UPDATE_PRIMARY_NODE_TYPE_SUPPORTED);
requiredDescriptorKeys.add(Repository.OPTION_VERSIONING_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_WORKSPACE_MANAGEMENT_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_XML_EXPORT_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_XML_IMPORT_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_ACTIVITIES_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.OPTION_BASELINES_SUPPORTED);
+
+ requiredDescriptorKeys.add(Repository.QUERY_FULL_TEXT_SEARCH_SUPPORTED);
+ requiredDescriptorKeys.add(Repository.QUERY_JOINS);
+ requiredDescriptorKeys.add(Repository.QUERY_LANGUAGES);
+ requiredDescriptorKeys.add(Repository.QUERY_STORED_QUERIES_SUPPORTED);
requiredDescriptorKeys.add(Repository.QUERY_XPATH_DOC_ORDER);
requiredDescriptorKeys.add(Repository.QUERY_XPATH_POS_INDEX);
requiredDescriptorKeys.add(Repository.REP_NAME_DESC);
requiredDescriptorKeys.add(Repository.REP_VENDOR_DESC);
requiredDescriptorKeys.add(Repository.REP_VENDOR_URL_DESC);
- requiredDescriptorKeys.add(Repository.REP_VERSION_DESC);
requiredDescriptorKeys.add(Repository.SPEC_NAME_DESC);
requiredDescriptorKeys.add(Repository.SPEC_VERSION_DESC);
+ requiredDescriptorKeys.add(Repository.WRITE_SUPPORTED);
}
/** The session for the tests */
@@ -83,10 +120,19 @@
* Tests that the required repository descriptors are available.
*/
public void testRequiredDescriptors() {
+ Repository rep = session.getRepository();
for (Iterator it = requiredDescriptorKeys.iterator(); it.hasNext();) {
- String descriptor = session.getRepository().getDescriptor((String) it.next());
- assertNotNull("Not all required descriptors are available.",
- descriptor);
+ String descName = (String) it.next();
+ assertTrue(descName + " is a standard descriptor", rep.isStandardDescriptor(descName));
+ if (rep.isSingleValueDescriptor(descName)) {
+ Value val = rep.getDescriptorValue(descName);
+ assertNotNull("Required descriptor is missing: " + descName,
+ val);
+ } else {
+ Value[] vals = rep.getDescriptorValues(descName);
+ assertNotNull("Required descriptor is missing: " + descName,
+ vals);
+ }
}
}
@@ -98,9 +144,35 @@
List keys = Arrays.asList(session.getRepository().getDescriptorKeys());
for (Iterator it = requiredDescriptorKeys.iterator(); it.hasNext();) {
String key = (String) it.next();
- assertTrue(key + " is missing from the required descriptor keys.",
+ assertTrue("Required descriptor is missing: " + key,
keys.contains(key));
}
}
+ /**
+ * Tests whether {@link Repository#getDescriptorValues(String)} returns an
+ * Value[] of size 1 for single valued descriptors.
+ */
+ public void testGetDescriptorValues() {
+ Repository rep = session.getRepository();
+ // "option.node.type.management.supported" denotes a single-valued BOOLEAN descriptor
+ String descName = Repository.OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED;
+ assertTrue(rep.isSingleValueDescriptor(descName));
+ Value[] vals = rep.getDescriptorValues(descName);
+ assertNotNull("Required descriptor is missing: " + descName, vals);
+ assertEquals(1, vals.length);
+ assertEquals(PropertyType.BOOLEAN, vals[0].getType());
+ try {
+ // getDescriptorValue(key).getString() is equivalent to getDescriptor(key)
+ assertEquals(vals[0].getString(), rep.getDescriptor(descName));
+ } catch (RepositoryException e) {
+ fail(e.getMessage());
+ }
+
+ // "option.node.type.management.supported" denotes a single-valued BOOLEAN descriptor
+ descName = Repository.QUERY_LANGUAGES;
+ assertFalse(rep.isSingleValueDescriptor(descName));
+ Value val = rep.getDescriptorValue(descName);
+ assertNull(descName + " is a multi-value descriptor, getDescriptorValue() should return null", val);
+ }
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SerializationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SerializationTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SerializationTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SerializationTest.java Tue Sep 8 16:09:28 2009
@@ -452,7 +452,8 @@
throws Exception {
treeComparator.createExampleTree();
- Node node = testRootNode.addNode("ntBase", ntBase);
+ String nodetype = testNodeTypeNoChildren == null ? ntBase : testNodeTypeNoChildren;
+ Node node = testRootNode.addNode("ntBase", nodetype);
session.save();
FileInputStream in = new FileInputStream(file);
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SessionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SessionTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SessionTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SessionTest.java Tue Sep 8 16:09:28 2009
@@ -667,4 +667,38 @@
assertFalse("Session should have no pending changes recorded after property has been removed and saved!", superuser.hasPendingChanges());
}
+
+ /**
+ * Checks if {@link javax.jcr.Session#hasCapability(String, Object, Object[])}
+ * works as specified.
+ * <p/>
+ *
+ * @throws RepositoryException
+ */
+ public void testHasCapability() throws RepositoryException {
+ Session roSession = getHelper().getReadOnlySession();
+ try {
+ Node root = roSession.getRootNode();
+ Object[] args = new Object[] { "foo" };
+ if (!roSession.hasCapability("addNode", root, args)) {
+ // if hasCapability() returns false, the actual method call
+ // is expected to fail
+ try {
+ root.addNode("foo");
+ fail("Node.addNode() should fail according to Session.hasCapability()");
+ } catch (RepositoryException e) {
+ // expected
+ }
+ } else {
+ // hasCapability() returning true doesn't guarantee that the
+ // actual method call succeeds, it's just a best-effort.
+ // therefore nothing to test here...
+ }
+
+ } finally {
+ roSession.logout();
+ }
+
+ }
+
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyAssumeTypeTest.java Tue Sep 8 16:09:28 2009
@@ -122,9 +122,7 @@
Property prop;
- // create an extra value for BINARY property to avoid IllegalStateException
- Value stringValueForBinary = NodeTypeUtil.getValueOfType(superuser, PropertyType.STRING);
- prop = testNode.setProperty(testPropName, stringValueForBinary, PropertyType.BINARY);
+ prop = testNode.setProperty(testPropName, binaryValue, PropertyType.BINARY);
assertEquals("setProperty(String, Value, int) of a property of type undefined " +
"must assume the property type of the type parameter.",
PropertyType.BINARY,
@@ -186,10 +184,7 @@
Property prop;
- // create an extra value for BINARY property to avoid IllegalStateException
- Value stringValuesForBinary[] =
- new Value[] {NodeTypeUtil.getValueOfType(superuser, PropertyType.STRING)};
- prop = testNode.setProperty(testPropName, stringValuesForBinary, PropertyType.BINARY);
+ prop = testNode.setProperty(testPropName, binaryValues, PropertyType.BINARY);
assertEquals("setProperty(String, Value, int) of a property of type undefined " +
"must assume the property type of the type parameter.",
PropertyType.BINARY,
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java Tue Sep 8 16:09:28 2009
@@ -38,6 +38,7 @@
import javax.jcr.version.Version;
import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.apache.jackrabbit.test.NotExecutableException;
/**
* Tests features available with shareable nodes.
@@ -48,8 +49,13 @@
protected void setUp() throws Exception {
super.setUp();
- checkSupportedOption(Repository.OPTION_SHAREABLE_NODES_SUPPORTED);
- ensureKnowsNodeType(superuser, mixShareable);
+ try {
+ checkSupportedOption(Repository.OPTION_SHAREABLE_NODES_SUPPORTED);
+ ensureKnowsNodeType(superuser, mixShareable);
+ } catch (NotExecutableException e) {
+ cleanUp();
+ throw e;
+ }
mixShareable = superuser.getNamespacePrefix(NS_MIX_URI) + ":shareable";
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/StringPropertyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/StringPropertyTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/StringPropertyTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/StringPropertyTest.java Tue Sep 8 16:09:28 2009
@@ -193,17 +193,15 @@
}
try {
val.getString();
- fail("Non stream method call after stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- //ok
+ fail("Non stream method call after stream method call " +
+ "should not throw an IllegalStateException.");
}
try {
otherVal.getStream();
- fail("Stream method call after a non stream method call " +
- "should throw an IllegalStateException.");
} catch (IllegalStateException ise) {
- // ok
+ fail("Stream method call after a non stream method call " +
+ "should not throw an IllegalStateException.");
}
in.close();
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/TestAll.java Tue Sep 8 16:09:28 2009
@@ -148,22 +148,21 @@
suite.addTestSuite(GetWeakReferencesTest.class);
//// new Session features
-
suite.addTestSuite(SessionRemoveItemTest.class);
suite.addTestSuite(HasPermissionTest.class);
//// new Workspace features
-
suite.addTestSuite(WorkspaceTest.class);
-
+
//// shareable nodes
-
suite.addTestSuite(ShareableNodeTest.class);
-
+
//// repository factory
-
suite.addTestSuite(RepositoryFactoryTest.class);
-
+
+ //// lifecycle management
+ suite.addTestSuite(LifecycleTest.class);
+
return suite;
}
}
\ No newline at end of file
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java Tue Sep 8 16:09:28 2009
@@ -108,7 +108,8 @@
*/
public void testCloneNodesConstraintViolationException() throws RepositoryException {
// if parent node is nt:base then no sub nodes can be created
- Node subNodesNotAllowedNode = testRootNodeW2.addNode(nodeName3, ntBase);
+ String nodetype = testNodeTypeNoChildren == null ? ntBase : testNodeTypeNoChildren;
+ Node subNodesNotAllowedNode = testRootNodeW2.addNode(nodeName3, nodetype);
testRootNodeW2.save();
try {
String dstAbsPath = subNodesNotAllowedNode.getPath() + "/" + node2.getName();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java Tue Sep 8 16:09:28 2009
@@ -91,7 +91,8 @@
*/
public void testCopyNodesConstraintViolationException() throws RepositoryException {
// if parent node is nt:base then no sub nodes can be created
- Node subNodesNotAllowedNode = testRootNodeW2.addNode(nodeName3, ntBase);
+ String nodetype = testNodeTypeNoChildren == null ? ntBase : testNodeTypeNoChildren;
+ Node subNodesNotAllowedNode = testRootNodeW2.addNode(nodeName3, nodetype);
testRootNodeW2.save();
try {
String dstAbsPath = subNodesNotAllowedNode.getPath() + "/" + node2.getName();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/lock/AbstractLockTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/lock/AbstractLockTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/lock/AbstractLockTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/lock/AbstractLockTest.java Tue Sep 8 16:09:28 2009
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.test.api.lock;
import javax.jcr.Node;
+import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
@@ -257,39 +258,34 @@
/**
* Test expiration of the lock
*/
- public void testLockExpiration() throws RepositoryException, NotExecutableException {
+ public synchronized void testLockExpiration()
+ throws RepositoryException, NotExecutableException {
lockedNode.unlock();
- ObservationManager obsMgr = superuser.getWorkspace().getObservationManager();
- EventResult listener = new EventResult(((JUnitTest) this).log);
- try {
- obsMgr.addEventListener(listener, Event.PROPERTY_REMOVED, lockedNode.getPath(), false, new String[0], new String[0], false);
-
- boolean lockPropRemoved = false;
- long hint = 1;
- lock = lockMgr.lock(lockedNode.getPath(), isDeep(), isSessionScoped(), hint, null);
- // only test if timeout hint was respected.
- if (lock.getSecondsRemaining() <= 1) {
- Event[] evts = listener.getEvents(2000);
- for (int i = 0; i < evts.length; i++) {
- if (evts[i].getType() == Event.PROPERTY_REMOVED &&
- evts[i].getPath().endsWith(jcrLockOwner)) {
- lockPropRemoved = true;
- // lock property has been removed -> make sure lock has
- // been released and lock.getSecondsRemaining behaves properly.
- assertTrue("A released lock must return a negative number of seconds", lock.getSecondsRemaining() < 0);
- assertFalse("If the timeout hint is respected the lock must be automatically released.", lock.isLive());
- assertFalse("If the timeout hint is respected the lock must be automatically released.", lockedNode.isLocked());
- }
- }
- if (!lockPropRemoved) {
- fail("If the timeout hint is respected the lock must be automatically released.");
- }
- } else {
- throw new NotExecutableException("timeout hint was ignored.");
+ long hint = 1;
+ lock = lockMgr.lock(
+ lockedNode.getPath(), isDeep(), isSessionScoped(), hint, null);
+
+ // only test if timeout hint was respected.
+ long remaining = lock.getSecondsRemaining();
+ if (remaining <= hint) {
+ try {
+ wait(remaining * 2000); // wait twice as long to be safe
+ } catch (InterruptedException ignore) {
}
- } finally {
- obsMgr.removeEventListener(listener);
+ long secs = lock.getSecondsRemaining();
+ assertTrue(
+ "A released lock must return a negative number of seconds, was: " + secs,
+ secs < 0);
+ String message = "If the timeout hint is respected the lock"
+ + " must be automatically released.";
+ assertFalse(message, lock.isLive());
+ assertFalse(message, lockedNode.isLocked());
+ assertFalse(message, lockMgr.isLocked(lockedNode.getPath()));
+ assertFalse(message, lockedNode.hasProperty(Property.JCR_LOCK_IS_DEEP));
+ assertFalse(message, lockedNode.hasProperty(Property.JCR_LOCK_OWNER));
+ } else {
+ throw new NotExecutableException("timeout hint was ignored.");
}
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/CanAddChildNodeCallWithNodeTypeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/CanAddChildNodeCallWithNodeTypeTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/CanAddChildNodeCallWithNodeTypeTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/CanAddChildNodeCallWithNodeTypeTest.java Tue Sep 8 16:09:28 2009
@@ -16,15 +16,15 @@
*/
package org.apache.jackrabbit.test.api.nodetype;
-import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.apache.jackrabbit.test.NotExecutableException;
-
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeTypeManager;
+
+import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.apache.jackrabbit.test.NotExecutableException;
/**
* Tests <code>NodeType.canAddChildNode(String childNodeName, String nodeTypeName)</code>
@@ -88,6 +88,10 @@
NodeType nodeType = nodeDef.getDeclaringNodeType();
String childNodeName = nodeDef.getName();
String nodeTypeName = nodeDef.getRequiredPrimaryTypes()[0].getName();
+ if (nodeTypeName.equals(ntBase)) {
+ // nt:base is abstract and can never be added, upgrade for check below
+ nodeTypeName = ntUnstructured;
+ }
assertTrue("NodeType.canAddChildNode(String childNodeName, String nodeTypeName) " +
"must return true if childNodeName and nodeTypeName match the " +
@@ -221,6 +225,10 @@
}
String type = nodeDef.getRequiredPrimaryTypes()[0].getName();
+ if (type.equals(ntBase)) {
+ // nt:base is abstract and can never be added, upgrade for check below
+ type = ntUnstructured;
+ }
NodeType nodeType = nodeDef.getDeclaringNodeType();
String undefinedName = NodeTypeUtil.getUndefinedChildNodeName(nodeType);
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/NodeTypeCreationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/NodeTypeCreationTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/NodeTypeCreationTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/NodeTypeCreationTest.java Tue Sep 8 16:09:28 2009
@@ -17,13 +17,22 @@
package org.apache.jackrabbit.test.api.nodetype;
import java.util.List;
+import java.util.Arrays;
import javax.jcr.PropertyType;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
+import javax.jcr.Value;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NodeTypeDefinition;
+import javax.jcr.nodetype.PropertyDefinition;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.NodeTypeExistsException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.query.qom.QueryObjectModelConstants;
import javax.jcr.version.OnParentVersionAction;
@@ -39,9 +48,9 @@
*/
public class NodeTypeCreationTest extends AbstractJCRTest {
- private static String ns = "http://example.org/jcr-tck/";
- private static String propname = "{" + ns + "}" + "boolean";
-
+ private String expandedPropName;
+ private String jcrPropName;
+
private NodeTypeManager ntm;
/**
@@ -51,6 +60,9 @@
super.setUp();
ntm = superuser.getWorkspace().getNodeTypeManager();
super.checkSupportedOption(Repository.OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED);
+
+ expandedPropName = "{" + NS_JCR_URI + "}" + "boolean";
+ jcrPropName = superuser.getNamespacePrefix(NS_JCR_URI) + ":boolean";
}
/**
@@ -60,28 +72,176 @@
super.tearDown();
}
+ public void testEmptyNodeTypeTemplate() throws Exception {
+
+ NodeTypeTemplate ntt = ntm.createNodeTypeTemplate();
+ assertNull(ntt.getName());
+
+ assertFalse(ntt.isMixin());
+ assertFalse(ntt.isAbstract());
+ assertFalse(ntt.hasOrderableChildNodes());
+
+ // note: isQueryable cannot be tested as defautl value is defined
+ // by the implementation
+
+ assertNotNull(ntt.getDeclaredSupertypeNames());
+ assertEquals(0, ntt.getDeclaredSupertypeNames().length);
+
+ assertNull(ntt.getPrimaryItemName());
+
+ assertNull(ntt.getDeclaredChildNodeDefinitions());
+ assertNull(ntt.getDeclaredPropertyDefinitions());
+
+ assertNotNull(ntt.getNodeDefinitionTemplates());
+ assertTrue(ntt.getNodeDefinitionTemplates().isEmpty());
+
+ assertNotNull(ntt.getPropertyDefinitionTemplates());
+ assertTrue(ntt.getPropertyDefinitionTemplates().isEmpty());
+ }
+
+ public void testNonEmptyNodeTypeTemplate() throws Exception {
+
+ NodeTypeDefinition ntd = ntm.getNodeType("nt:address");
+ NodeTypeTemplate ntt = ntm.createNodeTypeTemplate(ntm.getNodeType("nt:address"));
+
+ assertEquals(ntt.getName(), ntd.getName());
+ assertEquals(ntt.isMixin(), ntd.isMixin());
+ assertEquals(ntt.isAbstract(), ntd.isAbstract());
+ assertEquals(ntt.hasOrderableChildNodes(), ntd.hasOrderableChildNodes());
+ assertEquals(ntt.isQueryable(), ntd.isQueryable());
+ assertEquals(ntt.getPrimaryItemName(), ntd.getPrimaryItemName());
+ assertTrue(Arrays.equals(ntt.getDeclaredSupertypeNames(), ntd.getDeclaredSupertypeNames()));
+ NodeDefinition[] nda = ntt.getDeclaredChildNodeDefinitions();
+ NodeDefinition[] nda1 = ntd.getDeclaredChildNodeDefinitions();
+ assertEquals(nda.length, nda1.length);
+ for (int i = 0; i < nda.length; i++) {
+ assertEquals(nda[i].getName(), nda1[i].getName());
+ assertEquals(nda[i].allowsSameNameSiblings(), nda1[i].allowsSameNameSiblings());
+ assertTrue(Arrays.equals(nda[i].getRequiredPrimaryTypeNames(), nda1[i].getRequiredPrimaryTypeNames()));
+ assertEquals(nda[i].getDefaultPrimaryTypeName(), nda1[i].getDefaultPrimaryTypeName());
+ assertEquals(nda[i].getRequiredPrimaryTypeNames(), nda1[i].getRequiredPrimaryTypeNames());
+ }
+
+ PropertyDefinition[] pda = ntt.getDeclaredPropertyDefinitions();
+ PropertyDefinition[] pda1 = ntd.getDeclaredPropertyDefinitions();
+ assertEquals(pda.length, pda1.length);
+ for (int i = 0; i < pda.length; i++) {
+ assertEquals(pda[i].getName(), pda1[i].getName());
+ assertEquals(pda[i].getRequiredType(), pda1[i].getRequiredType());
+ assertTrue(Arrays.equals(pda[i].getAvailableQueryOperators(), pda1[i].getAvailableQueryOperators()));
+ assertTrue(Arrays.equals(pda[i].getValueConstraints(), pda1[i].getValueConstraints()));
+ assertEquals(pda[i].isFullTextSearchable(), pda1[i].isFullTextSearchable());
+ assertEquals(pda[i].isMultiple(), pda1[i].isMultiple());
+ assertEquals(pda[i].isQueryOrderable(), pda1[i].isQueryOrderable());
+ }
+ }
+
public void testNewNodeTypeTemplate() throws Exception {
- String ntname = "{" + ns + "}" + "littlemixin";
+ String expandedName = "{" + NS_MIX_URI + "}" + "littlemixin";
+ String jcrName = superuser.getNamespacePrefix(NS_MIX_URI) + ":littlemixin";
NodeTypeTemplate ntt = ntm.createNodeTypeTemplate();
-
- ntt.setName(ntname);
+
+ ntt.setName(expandedName);
+ assertEquals(jcrName, ntt.getName());
+ ntt.setName(jcrName);
+ assertEquals(jcrName, ntt.getName());
+
ntt.setAbstract(false);
- ntt.setDeclaredSuperTypeNames(null);
+ assertFalse(ntt.isAbstract());
+
+ try {
+ ntt.setDeclaredSuperTypeNames(null);
+ fail("null isn't a valid array of jcr name");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ assertNotNull(ntt.getDeclaredSupertypeNames());
+ assertEquals(0, ntt.getDeclaredSupertypeNames().length);
+
+ ntt.setDeclaredSuperTypeNames(new String[] {mixReferenceable});
+ assertNotNull(ntt.getDeclaredSupertypeNames());
+ assertEquals(1, ntt.getDeclaredSupertypeNames().length);
+ assertEquals(mixReferenceable, ntt.getDeclaredSupertypeNames()[0]);
+
ntt.setMixin(true);
- ntt.setOrderableChildNodes(false);
+ assertTrue(ntt.isMixin());
+
+ ntt.setOrderableChildNodes(true);
+ assertTrue(ntt.hasOrderableChildNodes());
+
ntt.setQueryable(false);
+ assertFalse(ntt.isQueryable());
+
ntt.setPrimaryItemName(null);
-
+ assertNull(ntt.getPrimaryItemName());
+
+ ntt.setPrimaryItemName(jcrPrimaryType);
+ assertEquals(jcrPrimaryType, ntt.getPrimaryItemName());
+
+ PropertyDefinitionTemplate pdTemplate = createBooleanPropTemplate();
+
List pdefs = ntt.getPropertyDefinitionTemplates();
- pdefs.add(createBooleanPropTemplate());
+ pdefs.add(pdTemplate);
+
+ assertNotNull(ntt.getDeclaredPropertyDefinitions());
+ assertEquals(1, ntt.getDeclaredPropertyDefinitions().length);
+ assertEquals(pdTemplate, ntt.getDeclaredPropertyDefinitions()[0]);
+
+ pdefs = ntt.getPropertyDefinitionTemplates();
+ assertEquals(1, pdefs.size());
+ assertEquals(pdTemplate, pdefs.get(0));
+
+ NodeDefinitionTemplate ndTemplate = ntm.createNodeDefinitionTemplate();
+
+ List ndefs = ntt.getNodeDefinitionTemplates();
+ ndefs.add(ndTemplate);
+
+ assertNotNull(ntt.getDeclaredChildNodeDefinitions());
+ assertEquals(1, ntt.getDeclaredChildNodeDefinitions().length);
+ assertEquals(ndTemplate, ntt.getDeclaredChildNodeDefinitions()[0]);
+
+ ndefs = ntt.getNodeDefinitionTemplates();
+ assertEquals(1, ndefs.size());
+ assertEquals(ndTemplate, ndefs.get(0));
+ }
+
+ public void testEmptyPropertyDefinitionTemplate() throws Exception {
+ PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
+
+ assertNull(pdt.getName());
+ assertFalse(pdt.isAutoCreated());
+ assertFalse(pdt.isMandatory());
+ assertFalse(pdt.isProtected());
+ assertEquals(OnParentVersionAction.COPY, pdt.getOnParentVersion());
+ assertNull(pdt.getDeclaringNodeType());
+
+ assertEquals(PropertyType.STRING, pdt.getRequiredType());
+ assertFalse(pdt.isMultiple());
+ assertNull(pdt.getValueConstraints());
+ assertNull(pdt.getDefaultValues());
+
+ // the following methods cannot be tested as default value is
+ // implementation specific:
+ // - getAvailableQueryOperators
+ // - isFullTextSearchable
+ // - isQueryOrderable
+
}
public void testPropertyDefinitionTemplate() throws Exception {
PropertyDefinitionTemplate pdt = createBooleanPropTemplate();
-
- assertEquals(propname, pdt.getName());
+
+ assertEquals(jcrPropName, pdt.getName());
+ try {
+ pdt.setName(null);
+ fail("null isn't a valid JCR name");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+
+
assertEquals(false, pdt.isAutoCreated());
assertEquals(false, pdt.isMandatory());
assertEquals(OnParentVersionAction.IGNORE, pdt.getOnParentVersion());
@@ -96,11 +256,255 @@
assertEquals(false, pdt.isFullTextSearchable());
assertEquals(false, pdt.isQueryOrderable());
}
-
-
+
+ public void testSetDefaultValues() throws Exception {
+
+ PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
+ pdt.setRequiredType(PropertyType.LONG);
+
+ pdt.setDefaultValues(null);
+ assertNull(pdt.getDefaultValues());
+
+ pdt.setDefaultValues(new Value[0]);
+ assertNotNull(pdt.getDefaultValues());
+ assertEquals(0, pdt.getDefaultValues().length);
+
+ pdt.setDefaultValues(new Value[] { superuser.getValueFactory().createValue(24)});
+ assertNotNull(pdt.getDefaultValues());
+ assertEquals(1, pdt.getDefaultValues().length);
+ assertEquals(24, pdt.getDefaultValues()[0].getLong());
+ assertEquals(PropertyType.LONG, pdt.getDefaultValues()[0].getType());
+ }
+
+ public void testEmptyNodeDefinitionTemplate() throws Exception {
+ NodeDefinitionTemplate ndt = ntm.createNodeDefinitionTemplate();
+
+ assertNull(ndt.getName());
+ assertFalse(ndt.isAutoCreated());
+ assertFalse(ndt.isMandatory());
+ assertFalse(ndt.isProtected());
+ assertEquals(OnParentVersionAction.COPY, ndt.getOnParentVersion());
+ assertNull(ndt.getDeclaringNodeType());
+
+ assertNull(ndt.getRequiredPrimaryTypes());
+ assertNull(ndt.getRequiredPrimaryTypeNames());
+ assertNull(ndt.getDefaultPrimaryType());
+ assertNull(ndt.getDefaultPrimaryTypeName());
+ assertFalse(ndt.allowsSameNameSiblings());
+ }
+
+ public void testNodeDefinitionTemplate() throws Exception {
+ NodeDefinitionTemplate ndt = ntm.createNodeDefinitionTemplate();
+
+ try {
+ ndt.setName(null);
+ fail("null isn't a valid JCR name");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+
+ String expandedName = "{" + NS_JCR_URI + "}" + "content";
+ String jcrName = superuser.getNamespacePrefix(NS_JCR_URI) + ":content";
+ ndt.setName(expandedName);
+ assertEquals(jcrName, ndt.getName());
+ ndt.setName(jcrName);
+ assertEquals(jcrName, ndt.getName());
+
+ ndt.setSameNameSiblings(true);
+ assertTrue(ndt.allowsSameNameSiblings());
+
+ ndt.setAutoCreated(true);
+ assertTrue(ndt.isAutoCreated());
+
+ ndt.setMandatory(true);
+ assertTrue(ndt.isMandatory());
+
+ ndt.setProtected(true);
+ assertTrue(ndt.isProtected());
+
+ ndt.setOnParentVersion(OnParentVersionAction.VERSION);
+ assertEquals(OnParentVersionAction.VERSION, ndt.getOnParentVersion());
+
+ expandedName = "{" + NS_NT_URI + "}" + "folder";
+ jcrName = superuser.getNamespacePrefix(NS_NT_URI) + ":folder";
+ ndt.setDefaultPrimaryTypeName(expandedName);
+ assertEquals(jcrName, ndt.getDefaultPrimaryTypeName());
+
+ ndt.setDefaultPrimaryTypeName(null);
+ assertEquals("setting null must clear the name.", null, ndt.getDefaultPrimaryTypeName());
+
+ ndt.setRequiredPrimaryTypeNames(new String[] {expandedName});
+ assertNotNull(ndt.getRequiredPrimaryTypeNames());
+ assertEquals(1, ndt.getRequiredPrimaryTypeNames().length);
+ assertEquals(jcrName, ndt.getRequiredPrimaryTypeNames()[0]);
+
+ try {
+ ndt.setRequiredPrimaryTypeNames(null);
+ fail("null isn't a valid array of jcr name");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ }
+
+ public void testResidualNames() throws Exception {
+ String residualName = "*";
+
+ NodeDefinitionTemplate ndt = ntm.createNodeDefinitionTemplate();
+ ndt.setName(residualName);
+ assertEquals(residualName, ndt.getName());
+
+ PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
+ pdt.setName(residualName);
+ assertEquals(residualName, pdt.getName());
+ }
+
+ public void testInvalidJCRNames() throws Exception {
+ String invalidName = ":ab[2]";
+
+ // invalid name(s) passed to NT-template methods
+ NodeTypeTemplate ntt = ntm.createNodeTypeTemplate();
+ try {
+ ntt.setName(invalidName);
+ fail("ConstraintViolationException expected. Nt-name is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ try {
+ ntt.setDeclaredSuperTypeNames(new String[] {"{" + NS_MIX_URI + "}" + "littlemixin", invalidName});
+ fail("ConstraintViolationException expected. One of the super type names is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ try {
+ ntt.setPrimaryItemName(invalidName);
+ fail("ConstraintViolationException expected. Primary item name is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+
+ // invalid name(s) passed to NodeDefinitionTemplate
+ NodeDefinitionTemplate ndt = ntm.createNodeDefinitionTemplate();
+ try {
+ ndt.setName(invalidName);
+ fail("ConstraintViolationException expected. Name is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ try {
+ ndt.setRequiredPrimaryTypeNames(new String[] {"{" + NS_MIX_URI + "}" + "littlemixin", invalidName});
+ fail("ConstraintViolationException expected. One of the required primary type names is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ try {
+ ndt.setDefaultPrimaryTypeName(invalidName);
+ fail("ConstraintViolationException expected. Default primary type name is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+
+ // invalid name(s) passed to PropertyDefinitionTemplate
+ PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
+ try {
+ pdt.setName(invalidName);
+ fail("ConstraintViolationException expected. Name is invalid");
+ } catch (ConstraintViolationException e) {
+ // success
+ }
+ }
+
+ public void testRegisterNodeType() throws Exception {
+ NodeTypeTemplate ntt = ntm.createNodeTypeTemplate();
+
+ ntt.setName("mix:foo");
+ ntt.setAbstract(false);
+ ntt.setMixin(true);
+ ntt.setOrderableChildNodes(false);
+ ntt.setQueryable(false);
+
+ PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
+ pdt.setAutoCreated(false);
+ pdt.setName("foo");
+ pdt.setMultiple(false);
+ pdt.setRequiredType(PropertyType.STRING);
+ List pdefs = ntt.getPropertyDefinitionTemplates();
+ pdefs.add(pdt);
+
+ ntm.registerNodeType(ntt, true);
+
+ try {
+ ntm.registerNodeType(ntt, false);
+ fail("NodeTypeExistsException expected.");
+ } catch (NodeTypeExistsException e) {
+ // success
+ }
+ }
+
+ public void testUnregisterNodeType() throws Exception {
+ try {
+ ntm.unregisterNodeType("unknownnodetype");
+ fail("NoSuchNodeTypeException expected.");
+ } catch (NoSuchNodeTypeException e) {
+ // success
+ }
+
+ try {
+ ntm.unregisterNodeType("nt:base");
+ fail("RepositoryException expected.");
+ } catch (RepositoryException e) {
+ // success
+ }
+ }
+
+ public void testUnregisterNodeTypes() throws Exception {
+ try {
+ ntm.unregisterNodeTypes(new String[] {"unknownnodetype1","unknownnodetype2"});
+ fail("NoSuchNodeTypeException expected.");
+ } catch (NoSuchNodeTypeException e) {
+ // success
+ }
+
+ try {
+ ntm.unregisterNodeTypes(new String[] {"nt:base", "nt:address"});
+ fail("RepositoryException expected.");
+ } catch (RepositoryException e) {
+ // success
+ }
+ }
+
+ public void testRegisterNodeTypes() throws Exception {
+ NodeTypeDefinition[] defs = new NodeTypeDefinition[5];
+ for (int i = 0; i < defs.length; i++) {
+ NodeTypeTemplate ntt = ntm.createNodeTypeTemplate();
+ ntt.setName("mix:foo" + i);
+ ntt.setAbstract(false);
+ ntt.setMixin(true);
+ ntt.setOrderableChildNodes(false);
+ ntt.setQueryable(false);
+
+ PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
+ pdt.setAutoCreated(false);
+ pdt.setName("foo" + i);
+ pdt.setMultiple(false);
+ pdt.setRequiredType(PropertyType.STRING);
+ List pdefs = ntt.getPropertyDefinitionTemplates();
+ pdefs.add(pdt);
+
+ defs[i] = ntt;
+ }
+ ntm.registerNodeTypes(defs, true);
+
+ try {
+ ntm.registerNodeTypes(defs, false);
+ fail("NodeTypeExistsException expected.");
+ } catch (NodeTypeExistsException e) {
+ // success
+ }
+ }
+
private PropertyDefinitionTemplate createBooleanPropTemplate() throws RepositoryException {
PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
- pdt.setName(propname);
+ pdt.setName(expandedPropName);
pdt.setAutoCreated(false);
pdt.setMandatory(false);
pdt.setOnParentVersion(OnParentVersionAction.IGNORE);
@@ -114,6 +518,5 @@
pdt.setQueryOrderable(false);
return pdt;
- }
-
+ }
}
\ No newline at end of file
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/PredefinedNodeTypeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/PredefinedNodeTypeTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/PredefinedNodeTypeTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/nodetype/PredefinedNodeTypeTest.java Tue Sep 8 16:09:28 2009
@@ -97,6 +97,11 @@
}
}
+ /** Test for the predefined mix:lifecycle node type. */
+ public void testLifecycle() throws NotExecutableException {
+ testPredefinedNodeType("mix:lifecycle");
+ }
+
/** Test for the predefined mix:lockable node type. */
public void testLockable() throws NotExecutableException {
testPredefinedNodeType("mix:lockable");
@@ -122,6 +127,41 @@
testPredefinedNodeType("mix:simpleVersionable");
}
+ /** Test for the predefined mix:created node type. */
+ public void testMixCreated() throws NotExecutableException {
+ testPredefinedNodeType("mix:created");
+ }
+
+ /** Test for the predefined mix:lastModified node type. */
+ public void testMixLastModified() throws NotExecutableException {
+ testPredefinedNodeType("mix:lastModified");
+ }
+
+ /** Test for the predefined mix:etag node type. */
+ public void testMixETag() throws NotExecutableException {
+ testPredefinedNodeType("mix:etag");
+ }
+
+ /** Test for the predefined mix:title node type. */
+ public void testMixTitle() throws NotExecutableException {
+ testPredefinedNodeType("mix:title");
+ }
+
+ /** Test for the predefined mix:language node type. */
+ public void testMixLanguage() throws NotExecutableException {
+ testPredefinedNodeType("mix:language");
+ }
+
+ /** Test for the predefined mix:language node type. */
+ public void testMixMimeType() throws NotExecutableException {
+ testPredefinedNodeType("mix:mimeType");
+ }
+
+ /** Test for the predefined nt:address node type. */
+ public void testNtAddress() throws NotExecutableException {
+ testPredefinedNodeType("nt:address");
+ }
+
/** Test for the predefined nt:base node type. */
public void testBase() throws NotExecutableException {
testPredefinedNodeType("nt:base");
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/AddEventListenerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/AddEventListenerTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/AddEventListenerTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/observation/AddEventListenerTest.java Tue Sep 8 16:09:28 2009
@@ -161,7 +161,7 @@
Session s = getHelper().getSuperuserSession();
try {
Node n = (Node) s.getItem(n1.getPath());
- n.addNode(nodeName3, ntBase);
+ n.addNode(nodeName3, testNodeType);
n = (Node) s.getItem(n2.getPath());
n.addNode(nodeName3, nodetype2);
n = (Node) s.getItem(testRoot);
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/AbstractQueryTest.java Tue Sep 8 16:09:28 2009
@@ -20,6 +20,7 @@
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.test.api.util.ISO9075;
+import javax.jcr.query.InvalidQueryException;
import javax.jcr.query.QueryResult;
import javax.jcr.query.RowIterator;
import javax.jcr.query.Query;
@@ -126,24 +127,35 @@
* @throws RepositoryException
* @see #createQuery(String, String)
*/
- protected Query createQuery(Statement statement) throws RepositoryException {
+ protected Query createQuery(Statement statement)
+ throws RepositoryException, NotExecutableException {
return createQuery(statement.getStatement(), statement.getLanguage());
}
/**
* Creates a {@link Query} for the given statement in the requested
- * language
- *
- * @param statement the query should be created for
- * @param language query language to be used for Query creation
- * @return
- *
+ * language, treating optional languages gracefully
+ * @throws RepositoryException
+ */
+ protected Query createQuery(String statement, String language) throws RepositoryException, NotExecutableException {
+ return createQuery(superuser, statement, language);
+ }
+
+ /**
+ * Creates a {@link Query} for the given statement in the requested
+ * language, treating optional languages gracefully
* @throws RepositoryException
*/
- protected Query createQuery(String statement, String language) throws RepositoryException {
+ protected Query createQuery(Session session, String statement, String language) throws RepositoryException, NotExecutableException {
log.println("Creating query: " + statement);
- return superuser.getWorkspace().getQueryManager().createQuery(statement,
- language);
+
+ // check for unsupported query languages early
+ if (! isSupportedLanguage(language) && !Query.JCR_SQL2.equals(language)) {
+ throw new NotExecutableException("Repository does not support " + language + " query syntax");
+ }
+ else {
+ return session.getWorkspace().getQueryManager().createQuery(statement, language);
+ }
}
/**
@@ -155,7 +167,8 @@
* @throws RepositoryException
* @see #execute(String, String)
*/
- protected QueryResult execute(Statement statement) throws RepositoryException {
+ protected QueryResult execute(Statement statement)
+ throws RepositoryException, NotExecutableException {
return execute(statement.getStatement(), statement.getLanguage());
}
@@ -170,7 +183,7 @@
* @throws RepositoryException
*/
protected QueryResult execute(String statement, String language)
- throws RepositoryException {
+ throws RepositoryException, NotExecutableException {
Query query = createQuery(statement, language);
return query.execute();
}
@@ -285,10 +298,11 @@
* @param session the session to use for the query.
* @param xpath the xpath query.
* @param nodes the expected result nodes.
+ * @throws NotExecutableException
*/
protected void executeXPathQuery(Session session, String xpath, Node[] nodes)
- throws RepositoryException {
- QueryResult res = session.getWorkspace().getQueryManager().createQuery(xpath, Query.XPATH).execute();
+ throws RepositoryException, NotExecutableException {
+ QueryResult res = createQuery(session, xpath, Query.XPATH).execute();
checkResult(res, nodes);
}
@@ -298,10 +312,11 @@
* @param session the session to use for the query.
* @param sql the sql query.
* @param nodes the expected result nodes.
+ * @throws NotExecutableException
*/
protected void executeSqlQuery(Session session, String sql, Node[] nodes)
- throws RepositoryException {
- QueryResult res = session.getWorkspace().getQueryManager().createQuery(sql, Query.SQL).execute();
+ throws RepositoryException, NotExecutableException {
+ QueryResult res = createQuery(session, sql, Query.SQL).execute();
checkResult(res, nodes);
}
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/ElementTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/ElementTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/ElementTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/ElementTest.java Tue Sep 8 16:09:28 2009
@@ -41,12 +41,21 @@
*/
public class ElementTest extends AbstractQueryTest {
+ private String simpleNodeType;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ simpleNodeType = testNodeTypeNoChildren == null ? ntBase : testNodeTypeNoChildren;
+ }
+
/**
* Tests the element test without arguments.
+ * @throws NotExecutableException
*/
- public void testElementTest() throws RepositoryException {
+ public void testElementTest() throws RepositoryException, NotExecutableException {
+
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- Node n2 = testRootNode.addNode(nodeName2, ntBase);
+ Node n2 = testRootNode.addNode(nodeName2, simpleNodeType);
Node n3 = testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -56,10 +65,11 @@
/**
* Tests the element test with one any node argument.
+ * @throws NotExecutableException
*/
- public void testElementTestAnyNode() throws RepositoryException {
+ public void testElementTestAnyNode() throws RepositoryException, NotExecutableException {
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- Node n2 = testRootNode.addNode(nodeName2, ntBase);
+ Node n2 = testRootNode.addNode(nodeName2, simpleNodeType);
Node n3 = testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -70,10 +80,11 @@
/**
* Tests the element test with an any node argument and a type argument
* that matches all nodes (nt:base).
+ * @throws NotExecutableException
*/
- public void testElementTestAnyNodeNtBase() throws RepositoryException {
+ public void testElementTestAnyNodeNtBase() throws RepositoryException, NotExecutableException {
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- Node n2 = testRootNode.addNode(nodeName2, ntBase);
+ Node n2 = testRootNode.addNode(nodeName2, simpleNodeType);
Node n3 = testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -84,10 +95,11 @@
/**
* Tests the element test with an any node argument and a type argument
* that matches only certain child nodes.
+ * @throws NotExecutableException
*/
- public void testElementTestAnyNodeSomeNT() throws RepositoryException {
+ public void testElementTestAnyNodeSomeNT() throws RepositoryException, NotExecutableException {
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- testRootNode.addNode(nodeName2, ntBase);
+ testRootNode.addNode(nodeName2, simpleNodeType);
Node n3 = testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -97,10 +109,11 @@
/**
* Tests the element test with one single name test argument.
+ * @throws NotExecutableException
*/
- public void testElementTestNameTest() throws RepositoryException {
+ public void testElementTestNameTest() throws RepositoryException, NotExecutableException {
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- testRootNode.addNode(nodeName2, ntBase);
+ testRootNode.addNode(nodeName2, simpleNodeType);
testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -111,10 +124,11 @@
/**
* Tests the element test with a name test argument and a type argument that
* matches all nodes (nt:base).
+ * @throws NotExecutableException
*/
- public void testElementTestNameTestNtBase() throws RepositoryException {
+ public void testElementTestNameTestNtBase() throws RepositoryException, NotExecutableException {
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- testRootNode.addNode(nodeName2, ntBase);
+ testRootNode.addNode(nodeName2, simpleNodeType);
testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -125,10 +139,11 @@
/**
* Tests the element test with a name test argument and a type argument that
* matches only certain child nodes.
+ * @throws NotExecutableException
*/
- public void testElementTestNameTestSomeNT() throws RepositoryException {
+ public void testElementTestNameTestSomeNT() throws RepositoryException, NotExecutableException {
Node n1 = testRootNode.addNode(nodeName1, testNodeType);
- testRootNode.addNode(nodeName2, ntBase);
+ testRootNode.addNode(nodeName2, simpleNodeType);
testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
@@ -146,9 +161,9 @@
if (!n1.getDefinition().allowsSameNameSiblings()) {
throw new NotExecutableException("Node at " + testRoot + " does not allow same name siblings with name " + nodeName1);
}
- testRootNode.addNode(nodeName1, ntBase);
+ testRootNode.addNode(nodeName1, simpleNodeType);
Node n2 = testRootNode.addNode(nodeName1, testNodeType);
- testRootNode.addNode(nodeName2, ntBase);
+ testRootNode.addNode(nodeName2, simpleNodeType);
testRootNode.addNode(nodeName3, testNodeType);
testRootNode.save();
Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/GetSupportedQueryLanguagesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/GetSupportedQueryLanguagesTest.java?rev=812570&r1=812569&r2=812570&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/GetSupportedQueryLanguagesTest.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/query/GetSupportedQueryLanguagesTest.java Tue Sep 8 16:09:28 2009
@@ -59,15 +59,15 @@
}
/**
- * Tests if all implementations return {@link Query#XPATH} with
+ * Tests if all implementations return {@link Query#JCR_SQL2} with
* {@link QueryManager#getSupportedQueryLanguages()}. Tests if repositores
* that have the SQL descriptor set in the repository return {@link Query#SQL}.
*/
public void testGetSupportedQueryLanguages() throws RepositoryException {
List langs = Arrays.asList(session.getWorkspace().getQueryManager().getSupportedQueryLanguages());
// all repositories must support XPath
- assertTrue("XPath not retured with QueryManager.getSupportedQueryLanguages()",
- langs.contains(Query.XPATH));
+ assertTrue("JCR_SQL2 not retured with QueryManager.getSupportedQueryLanguages()",
+ langs.contains(Query.JCR_SQL2));
// if repository descriptor for sql is present also sql must be returned
if (isSupported(Repository.OPTION_QUERY_SQL_SUPPORTED)) {