Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 47905 invoked from network); 27 Mar 2007 13:06:25 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 27 Mar 2007 13:06:25 -0000 Received: (qmail 83291 invoked by uid 500); 27 Mar 2007 13:06:32 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 83247 invoked by uid 500); 27 Mar 2007 13:06:32 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 83238 invoked by uid 99); 27 Mar 2007 13:06:32 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Mar 2007 06:06:32 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Mar 2007 06:06:24 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 20DC91A9838; Tue, 27 Mar 2007 06:06:04 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r522894 - in /jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test: AbstractJCRTest.java api/SetPropertyNodeTest.java Date: Tue, 27 Mar 2007 13:06:03 -0000 To: commits@jackrabbit.apache.org From: reschke@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070327130604.20DC91A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: reschke Date: Tue Mar 27 06:06:02 2007 New Revision: 522894 URL: http://svn.apache.org/viewvc?view=rev&rev=522894 Log: JCR-817: add convenience method for checking ability to set a property; use if in SetPropertyNodeTest.java Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyNodeTest.java Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java?view=diff&rev=522894&r1=522893&r2=522894 ============================================================================== --- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java (original) +++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/AbstractJCRTest.java Tue Mar 27 06:06:02 2007 @@ -26,8 +26,11 @@ import javax.jcr.Repository; import javax.jcr.NamespaceException; import javax.jcr.RangeIterator; +import javax.jcr.Value; import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.ConstraintViolationException; +import javax.jcr.nodetype.NodeType; + import java.util.StringTokenizer; import java.util.Random; import java.util.List; @@ -529,6 +532,28 @@ String workspacenames[] = superuser.getWorkspace().getAccessibleWorkspaceNames(); if (workspacenames == null || workspacenames.length < 2) { throw new NotExecutableException("This repository does not seem to support multiple workspaces."); + } + } + + /** + * Checks that the repository can set the property to the required type, otherwise aborts with + * {@link NotExecutableException}. + * @throws NotExecutableException when setting the property to the required + * type is not supported + */ + protected void ensureCanSetProperty(Node node, String propertyName, Value val) throws NotExecutableException, RepositoryException { + + boolean canSetIt = node.getPrimaryNodeType().canSetProperty(propertyName, val); + if (! canSetIt) { + // check mixins + NodeType mixins[] = node.getMixinNodeTypes(); + for (int i = 0; i < mixins.length && !canSetIt; i++) { + canSetIt |= mixins[i].canSetProperty(propertyName, val); + } + } + + if (! canSetIt) { + throw new NotExecutableException("configured property name " + propertyName + " can not be set on node " + node.getPath()); } } Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyNodeTest.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyNodeTest.java?view=diff&rev=522894&r1=522893&r2=522894 ============================================================================== --- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyNodeTest.java (original) +++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetPropertyNodeTest.java Tue Mar 27 06:06:02 2007 @@ -52,6 +52,10 @@ */ testRootNode.save(); + // abort test if the repository does not allow setting + // reference properties on this node + ensureCanSetProperty(testNode, propertyName1, testNode.getSession().getValueFactory().createValue(n1)); + if (!n1.isNodeType(mixReferenceable)) { throw new NotExecutableException("Node " + nodeName2 + " with nodetype " + testNodeType + " is not mix:referenceable."); }