You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by re...@locus.apache.org on 2000/12/01 08:17:42 UTC
cvs commit: jakarta-slide/src/share/org/apache/slide/util/resources messages.properties
remm 00/11/30 23:17:41
Modified: src/share/org/apache/slide/content NodeProperty.java
NodeRevisionContent.java
NodeRevisionDescriptor.java
NodeRevisionDescriptors.java
NodeRevisionNumber.java
src/share/org/apache/slide/lock NodeLock.java
src/share/org/apache/slide/security NodePermission.java
src/share/org/apache/slide/store StandardStore.java
src/share/org/apache/slide/structure LinkNode.java
ObjectNode.java
src/share/org/apache/slide/util/resources
messages.properties
Added: src/share/org/apache/slide/common
ObjectValidationFailedException.java
Log:
- Adds basic validation to the objects returned from a store. It will hopefully
make them easier to develop. Eventually, more advanced validation will be
introduced.
Revision Changes Path
1.1 jakarta-slide/src/share/org/apache/slide/common/ObjectValidationFailedException.java
Index: ObjectValidationFailedException.java
===================================================================
/*
* $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/common/ObjectValidationFailedException.java,v 1.1 2000/12/01 07:17:26 remm Exp $
* $Revision: 1.1 $
* $Date: 2000/12/01 07:17:26 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.slide.common;
import org.apache.slide.util.Messages;
/**
* Thrown when an object validation fails.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
* @version $Revision: 1.1 $
*/
public class ObjectValidationFailedException extends SlideRuntimeException {
// ------------------------------------------------------------ Constructor
/**
* Constructor.
*
* @param uri Uri
*/
public ObjectValidationFailedException(String uri, String cause) {
super(Messages.format(ObjectValidationFailedException.class.getName(),
uri, cause));
}
/**
* Constructor.
*
* @param uri Uri
*/
public ObjectValidationFailedException(String cause) {
super(Messages.format(ObjectValidationFailedException.class.getName(),
"", cause));
}
}
1.4 +29 -4 jakarta-slide/src/share/org/apache/slide/content/NodeProperty.java
Index: NodeProperty.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeProperty.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- NodeProperty.java 2000/09/26 02:44:13 1.3
+++ NodeProperty.java 2000/12/01 07:17:27 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeProperty.java,v 1.3 2000/09/26 02:44:13 remm Exp $
- * $Revision: 1.3 $
- * $Date: 2000/09/26 02:44:13 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeProperty.java,v 1.4 2000/12/01 07:17:27 remm Exp $
+ * $Revision: 1.4 $
+ * $Date: 2000/12/01 07:17:27 $
*
* ====================================================================
*
@@ -67,12 +67,14 @@
import java.util.Vector;
import java.util.Enumeration;
import org.apache.slide.security.NodePermission;
+import org.apache.slide.util.Messages;
+import org.apache.slide.common.ObjectValidationFailedException;
/**
* Node property class
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public final class NodeProperty implements Serializable, Cloneable {
@@ -381,5 +383,28 @@
}
return result;
}
+
+
+ /**
+ * Validate.
+ */
+ public void validate() {
+
+ if (name == null)
+ throw new ObjectValidationFailedException
+ (Messages.message(NodeProperty.class.getName() + ".nullName"));
+
+ if (namespace == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeProperty.class.getName() + ".nullNamespace"));
+
+ if (value == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeProperty.class.getName() + ".nullValue"));
+
+ }
+
}
1.4 +20 -4 jakarta-slide/src/share/org/apache/slide/content/NodeRevisionContent.java
Index: NodeRevisionContent.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionContent.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- NodeRevisionContent.java 2000/09/26 02:44:13 1.3
+++ NodeRevisionContent.java 2000/12/01 07:17:28 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionContent.java,v 1.3 2000/09/26 02:44:13 remm Exp $
- * $Revision: 1.3 $
- * $Date: 2000/09/26 02:44:13 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionContent.java,v 1.4 2000/12/01 07:17:28 remm Exp $
+ * $Revision: 1.4 $
+ * $Date: 2000/12/01 07:17:28 $
*
* ====================================================================
*
@@ -66,12 +66,13 @@
import java.io.*;
import java.util.Date;
import org.apache.slide.common.*;
+import org.apache.slide.util.Messages;
/**
* Encapsultes the contents of a revision.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public final class NodeRevisionContent implements Serializable {
@@ -211,5 +212,20 @@
// TODO : Add real serialization support
+
+
+ /**
+ * Validate.
+ */
+ public void validate() {
+
+ if ((content == null) && (binaryContent == null) && (reader == null)
+ && (inputStream == null))
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionContent.class.getName() + ".noContent"));
+
+ }
+
}
1.8 +44 -4 jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptor.java
Index: NodeRevisionDescriptor.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptor.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- NodeRevisionDescriptor.java 2000/09/26 02:44:13 1.7
+++ NodeRevisionDescriptor.java 2000/12/01 07:17:28 1.8
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptor.java,v 1.7 2000/09/26 02:44:13 remm Exp $
- * $Revision: 1.7 $
- * $Date: 2000/09/26 02:44:13 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptor.java,v 1.8 2000/12/01 07:17:28 remm Exp $
+ * $Revision: 1.8 $
+ * $Date: 2000/12/01 07:17:28 $
*
* ====================================================================
*
@@ -72,12 +72,13 @@
import java.util.Locale;
import java.text.SimpleDateFormat;
import org.apache.slide.common.*;
+import org.apache.slide.util.Messages;
/**
* Node Revision Descriptor class.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.7 $
+ * @version $Revision: 1.8 $
*/
public final class NodeRevisionDescriptor implements Serializable, Cloneable {
@@ -791,6 +792,45 @@
.equals(revisionDescriptor.getRevisionNumber());
}
return result;
+ }
+
+
+ /**
+ * Validate.
+ */
+ public void validate() {
+
+ if (branchName == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionDescriptor.class.getName() + ".nullBranchName"));
+
+ if (number == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionDescriptor.class.getName() + ".nullNumber"));
+ number.validate();
+
+ if (labels == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionDescriptor.class.getName() + ".nullLabels"));
+
+ if (properties == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionDescriptor.class.getName() + ".nullProperties"));
+ Enumeration propertyList = properties.elements();
+ while (propertyList.hasMoreElements()) {
+ Object obj = propertyList.nextElement();
+ if (!(obj instanceof NodeProperty))
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionDescriptor.class.getName()
+ + ".invalidPropertyType"));
+ ((NodeProperty) obj).validate();
+ }
+
}
1.3 +44 -4 jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptors.java
Index: NodeRevisionDescriptors.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptors.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NodeRevisionDescriptors.java 2000/09/26 02:44:13 1.2
+++ NodeRevisionDescriptors.java 2000/12/01 07:17:29 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptors.java,v 1.2 2000/09/26 02:44:13 remm Exp $
- * $Revision: 1.2 $
- * $Date: 2000/09/26 02:44:13 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptors.java,v 1.3 2000/12/01 07:17:29 remm Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/12/01 07:17:29 $
*
* ====================================================================
*
@@ -69,12 +69,13 @@
import java.util.Vector;
import java.util.StringTokenizer;
import org.apache.slide.common.*;
+import org.apache.slide.util.Messages;
/**
* Node Revision Descriptors class.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public final class NodeRevisionDescriptors implements Serializable, Cloneable {
@@ -371,5 +372,44 @@
}
return result;
}
+
+
+ /**
+ * Validate.
+ */
+ public void validate(String expectedUri) {
+
+ if (uri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeRevisionDescriptors.class.getName() + ".nullUri"));
+
+ if (!uri.equals(expectedUri))
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeRevisionDescriptors.class.getName() + ".incorrectUri"));
+
+ if (workingRevisions == null)
+ throw new ObjectValidationFailedException
+ (uri, Messages.message
+ (NodeRevisionDescriptors.class.getName()
+ + ".nullWorkingRevisions"));
+
+ if (latestRevisionNumbers == null)
+ throw new ObjectValidationFailedException
+ (uri, Messages.message
+ (NodeRevisionDescriptors.class.getName()
+ + ".nullLatestRevisionNumbers"));
+
+ if (branches == null)
+ throw new ObjectValidationFailedException
+ (uri, Messages.message
+ (NodeRevisionDescriptors.class.getName()
+ + ".nullBranches"));
+
+ // FIXME : Check branches integrity. Problem : It's quite expensive.
+
+ }
+
}
1.3 +25 -5 jakarta-slide/src/share/org/apache/slide/content/NodeRevisionNumber.java
Index: NodeRevisionNumber.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionNumber.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NodeRevisionNumber.java 2000/09/26 02:44:14 1.2
+++ NodeRevisionNumber.java 2000/12/01 07:17:30 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionNumber.java,v 1.2 2000/09/26 02:44:14 remm Exp $
- * $Revision: 1.2 $
- * $Date: 2000/09/26 02:44:14 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionNumber.java,v 1.3 2000/12/01 07:17:30 remm Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/12/01 07:17:30 $
*
* ====================================================================
*
@@ -65,13 +65,14 @@
import java.io.Serializable;
import java.util.StringTokenizer;
-import org.apache.slide.common.*;
+import org.apache.slide.common.ObjectValidationFailedException;
+import org.apache.slide.util.Messages;
/**
* Node Revision Number class.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public final class NodeRevisionNumber implements Serializable, Cloneable {
@@ -299,5 +300,24 @@
}
return result;
}
+
+
+ /**
+ * Validate.
+ */
+ public void validate() {
+
+ if (number == null)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionNumber.class.getName() + ".nullNumber"));
+
+ if (number.length < 2)
+ throw new ObjectValidationFailedException
+ (Messages.message
+ (NodeRevisionNumber.class.getName() + ".invalidNumber"));
+
+ }
+
}
1.6 +46 -4 jakarta-slide/src/share/org/apache/slide/lock/NodeLock.java
Index: NodeLock.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/NodeLock.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- NodeLock.java 2000/09/26 02:44:16 1.5
+++ NodeLock.java 2000/12/01 07:17:33 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/NodeLock.java,v 1.5 2000/09/26 02:44:16 remm Exp $
- * $Revision: 1.5 $
- * $Date: 2000/09/26 02:44:16 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/NodeLock.java,v 1.6 2000/12/01 07:17:33 remm Exp $
+ * $Revision: 1.6 $
+ * $Date: 2000/12/01 07:17:33 $
*
* ====================================================================
*
@@ -69,12 +69,13 @@
import org.apache.slide.common.*;
import org.apache.slide.structure.*;
import org.apache.slide.util.MD5Encoder;
+import org.apache.slide.util.Messages;
/**
* NodeLock class.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public final class NodeLock implements Cloneable {
@@ -461,5 +462,46 @@
}
return result;
}
+
+
+ /**
+ * Validate.
+ *
+ * @param expectedUri Uri
+ */
+ public void validate(String expectedUri) {
+
+ if (objectUri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeLock.class.getName() + ".nullObjectUri"));
+
+ if (!objectUri.equals(expectedUri))
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeLock.class.getName() + ".incorrectObjectUri"));
+
+ if (subjectUri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeLock.class.getName() + ".nullSubjectUri"));
+
+ if (typeUri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeLock.class.getName() + ".nullTypeUri"));
+
+ if (expirationDate == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeLock.class.getName() + ".nullExpirationDate"));
+
+ if (lockId == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodeLock.class.getName() + ".nullLockId"));
+
+ }
+
}
1.5 +36 -4 jakarta-slide/src/share/org/apache/slide/security/NodePermission.java
Index: NodePermission.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/security/NodePermission.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- NodePermission.java 2000/09/26 02:44:20 1.4
+++ NodePermission.java 2000/12/01 07:17:35 1.5
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/security/NodePermission.java,v 1.4 2000/09/26 02:44:20 remm Exp $
- * $Revision: 1.4 $
- * $Date: 2000/09/26 02:44:20 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/security/NodePermission.java,v 1.5 2000/12/01 07:17:35 remm Exp $
+ * $Revision: 1.5 $
+ * $Date: 2000/12/01 07:17:35 $
*
* ====================================================================
*
@@ -67,12 +67,13 @@
import java.io.Serializable;
import org.apache.slide.common.*;
import org.apache.slide.structure.*;
+import org.apache.slide.util.Messages;
/**
* Permission object.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public final class NodePermission implements Serializable, Cloneable {
@@ -413,5 +414,36 @@
}
return result;
}
+
+
+ /**
+ * Validate.
+ *
+ * @param expectedUri Uri
+ */
+ public void validate(String expectedUri) {
+
+ if (objectUri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodePermission.class.getName() + ".nullObjectUri"));
+
+ if (!objectUri.equals(expectedUri))
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodePermission.class.getName() + ".incorrectObjectUri"));
+
+ if (subjectUri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodePermission.class.getName() + ".nullSubjectUri"));
+
+ if (actionUri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (NodePermission.class.getName() + ".nullActionUri"));
+
+ }
+
}
1.3 +48 -11 jakarta-slide/src/share/org/apache/slide/store/StandardStore.java
Index: StandardStore.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/StandardStore.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- StandardStore.java 2000/11/25 01:34:54 1.2
+++ StandardStore.java 2000/12/01 07:17:36 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/StandardStore.java,v 1.2 2000/11/25 01:34:54 remm Exp $
- * $Revision: 1.2 $
- * $Date: 2000/11/25 01:34:54 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/StandardStore.java,v 1.3 2000/12/01 07:17:36 remm Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/12/01 07:17:36 $
*
* ====================================================================
*
@@ -80,7 +80,7 @@
* Abstract implementation of a store. Handles all caching operations.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class StandardStore extends ServiceImpl
implements Store {
@@ -433,11 +433,14 @@
return ((ObjectNode) tempObject).cloneObject();
} else {
ObjectNode objectNode = nodeStore.retrieveObject(uri);
+ objectNode.validate(uri.toString());
objectsCache.put(uri.toString(), objectNode.cloneObject());
return objectNode;
}
} else {
- return nodeStore.retrieveObject(uri);
+ ObjectNode objectNode = nodeStore.retrieveObject(uri);
+ objectNode.validate(uri.toString());
+ return objectNode;
}
}
@@ -452,6 +455,7 @@
public void storeObject(Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectNotFoundException {
ObjectNode tempObject = object.cloneObject();
+ tempObject.validate(uri.toString());
nodeStore.storeObject(uri, tempObject);
if (nodeStore.cacheResults()) {
objectsCache.put(uri.toString(), tempObject);
@@ -471,6 +475,7 @@
public void createObject(Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectAlreadyExistsException {
ObjectNode tempObject = object.cloneObject();
+ tempObject.validate(uri.toString());
nodeStore.createObject(uri, tempObject);
if (nodeStore.cacheResults()) {
objectsCache.put(uri.toString(), tempObject);
@@ -487,6 +492,7 @@
*/
public void removeObject(Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectNotFoundException {
+ object.validate(uri.toString());
nodeStore.removeObject(uri, object);
if (nodeStore.cacheResults()) {
objectsCache.remove(uri.toString());
@@ -503,6 +509,7 @@
public void grantPermission(Uri uri, NodePermission permission)
throws ServiceAccessException {
NodePermission tempPermission = permission.cloneObject();
+ tempPermission.validate(uri.toString());
securityStore.grantPermission(uri, tempPermission);
if (securityStore.cacheResults()) {
Object value = permissionsCache.get(uri.toString());
@@ -526,6 +533,7 @@
*/
public void revokePermission(Uri uri, NodePermission permission)
throws ServiceAccessException {
+ permission.validate(uri.toString());
securityStore.revokePermission(uri, permission);
if (securityStore.cacheResults()) {
Object value = permissionsCache.get(uri.toString());
@@ -577,7 +585,10 @@
permissionsVector = new Vector();
Enumeration tempEnum = securityStore.enumeratePermissions(uri);
while (tempEnum.hasMoreElements()) {
- permissionsVector.addElement(tempEnum.nextElement());
+ NodePermission tempPermission =
+ (NodePermission) tempEnum.nextElement();
+ tempPermission.validate(uri.toString());
+ permissionsVector.addElement(tempPermission);
}
permissionsCache.put(uri.toString(), permissionsVector);
return permissionsVector.elements();
@@ -596,6 +607,7 @@
*/
public void putLock(Uri uri, NodeLock lock)
throws ServiceAccessException {
+ lock.validate(uri.toString());
lockStore.putLock(uri, lock);
if (lockStore.cacheResults()) {
Object value = locksCache.get(uri.toString());
@@ -620,6 +632,7 @@
*/
public void renewLock(Uri uri, NodeLock lock)
throws ServiceAccessException, LockTokenNotFoundException {
+ lock.validate(uri.toString());
lockStore.renewLock(uri, lock);
if (lockStore.cacheResults()) {
Object value = locksCache.get(uri.toString());
@@ -645,6 +658,7 @@
*/
public void removeLock(Uri uri, NodeLock lock)
throws ServiceAccessException, LockTokenNotFoundException {
+ lock.validate(uri.toString());
lockStore.removeLock(uri, lock);
if (lockStore.cacheResults()) {
Object value = locksCache.get(uri.toString());
@@ -669,6 +683,7 @@
*/
public void killLock(Uri uri, NodeLock lock)
throws ServiceAccessException, LockTokenNotFoundException {
+ lock.validate(uri.toString());
lockStore.killLock(uri, lock);
if (lockStore.cacheResults()) {
Object value = locksCache.get(uri.toString());
@@ -700,7 +715,9 @@
locksVector = new Vector();
Enumeration lockList = lockStore.enumerateLocks(uri);
while (lockList.hasMoreElements()) {
- locksVector.addElement(lockList.nextElement());
+ NodeLock tempLock = (NodeLock) lockList.nextElement();
+ tempLock.validate(uri.toString());
+ locksVector.addElement(tempLock);
}
locksCache.put(uri.toString(), locksVector);
} else {
@@ -733,11 +750,14 @@
revisionDescriptors = revisionDescriptors.cloneObject();
descriptorsCache.put(uri.toString(),
revisionDescriptors);
+ revisionDescriptors.validate(uri.toString());
return revisionDescriptors;
}
} else {
- return
+ NodeRevisionDescriptors tempDescriptors =
revisionDescriptorsStore.retrieveRevisionDescriptors(uri);
+ tempDescriptors.validate(uri.toString());
+ return tempDescriptors;
}
}
@@ -752,6 +772,7 @@
public void createRevisionDescriptors
(Uri uri, NodeRevisionDescriptors revisionDescriptors)
throws ServiceAccessException {
+ revisionDescriptors.validate(uri.toString());
if (revisionDescriptorsStore.cacheResults()) {
descriptorsCache.put(uri.toString(),
revisionDescriptors.cloneObject());
@@ -773,6 +794,7 @@
public void storeRevisionDescriptors
(Uri uri, NodeRevisionDescriptors revisionDescriptors)
throws ServiceAccessException, RevisionDescriptorNotFoundException {
+ revisionDescriptors.validate(uri.toString());
if (revisionDescriptorsStore.cacheResults()) {
descriptorsCache.put(uri.toString(),
revisionDescriptors.cloneObject());
@@ -815,13 +837,17 @@
revisionDescriptorStore
.retrieveRevisionDescriptor(uri, revisionNumber)
.cloneObject();
+ revisionDescriptor.validate();
descriptorCache.put(uri + "-" + revisionNumber,
revisionDescriptor);
return revisionDescriptor;
}
} else {
- return revisionDescriptorStore
- .retrieveRevisionDescriptor(uri, revisionNumber);
+ NodeRevisionDescriptor revisionDescriptor =
+ revisionDescriptorStore.retrieveRevisionDescriptor
+ (uri, revisionNumber);
+ revisionDescriptor.validate();
+ return revisionDescriptor;
}
}
@@ -836,6 +862,7 @@
public void createRevisionDescriptor
(Uri uri, NodeRevisionDescriptor revisionDescriptor)
throws ServiceAccessException {
+ revisionDescriptor.validate();
revisionDescriptorStore.createRevisionDescriptor
(uri, revisionDescriptor);
if (revisionDescriptorStore.cacheResults()) {
@@ -858,6 +885,7 @@
public void storeRevisionDescriptor
(Uri uri, NodeRevisionDescriptor revisionDescriptor)
throws ServiceAccessException, RevisionDescriptorNotFoundException {
+ revisionDescriptor.validate();
revisionDescriptorStore.storeRevisionDescriptor
(uri, revisionDescriptor);
if (revisionDescriptorStore.cacheResults()) {
@@ -876,6 +904,7 @@
*/
public void removeRevisionDescriptor(Uri uri, NodeRevisionNumber number)
throws ServiceAccessException {
+ number.validate();
revisionDescriptorStore.removeRevisionDescriptor(uri, number);
if (revisionDescriptorStore.cacheResults()) {
descriptorCache.remove(uri + "-" + number);
@@ -892,7 +921,10 @@
public NodeRevisionContent retrieveRevisionContent
(Uri uri, NodeRevisionNumber revisionNumber)
throws ServiceAccessException, RevisionNotFoundException {
- return contentStore.retrieveRevisionContent(uri, revisionNumber);
+ NodeRevisionContent revisionContent =
+ contentStore.retrieveRevisionContent(uri, revisionNumber);
+ revisionContent.validate();
+ return revisionContent;
}
@@ -907,6 +939,8 @@
(Uri uri, NodeRevisionDescriptor revisionDescriptor,
NodeRevisionContent revisionContent)
throws ServiceAccessException, RevisionAlreadyExistException {
+ revisionDescriptor.validate();
+ revisionContent.validate();
contentStore.createRevisionContent(uri, revisionDescriptor,
revisionContent);
}
@@ -923,6 +957,8 @@
(Uri uri, NodeRevisionDescriptor revisionDescriptor,
NodeRevisionContent revisionContent)
throws ServiceAccessException, RevisionNotFoundException {
+ revisionDescriptor.validate();
+ revisionContent.validate();
contentStore.storeRevisionContent(uri, revisionDescriptor,
revisionContent);
}
@@ -937,6 +973,7 @@
public void removeRevisionContent(Uri uri,
NodeRevisionNumber revisionNumber)
throws ServiceAccessException {
+ revisionNumber.validate();
contentStore.removeRevisionContent(uri, revisionNumber);
}
1.3 +22 -4 jakarta-slide/src/share/org/apache/slide/structure/LinkNode.java
Index: LinkNode.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/LinkNode.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LinkNode.java 2000/09/26 02:44:25 1.2
+++ LinkNode.java 2000/12/01 07:17:38 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/LinkNode.java,v 1.2 2000/09/26 02:44:25 remm Exp $
- * $Revision: 1.2 $
- * $Date: 2000/09/26 02:44:25 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/LinkNode.java,v 1.3 2000/12/01 07:17:38 remm Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/12/01 07:17:38 $
*
* ====================================================================
*
@@ -66,12 +66,13 @@
import java.util.Enumeration;
import java.util.Vector;
import org.apache.slide.common.*;
+import org.apache.slide.util.Messages;
/**
* Link node class.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class LinkNode extends ObjectNode {
@@ -145,5 +146,22 @@
this.linkedUri = linkedUri;
}
}
+
+
+ /**
+ * Validate an ObjectNode.
+ *
+ * @param expectedUri Uri
+ */
+ public void validate(String expectedUri) {
+ super.validate(expectedUri);
+
+ if (linkedUri == null)
+ throw new ObjectValidationFailedException
+ (uri, Messages.message
+ (LinkNode.class.getName() + ".nullLink"));
+
+ }
+
}
1.4 +38 -5 jakarta-slide/src/share/org/apache/slide/structure/ObjectNode.java
Index: ObjectNode.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/ObjectNode.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ObjectNode.java 2000/09/26 02:44:25 1.3
+++ ObjectNode.java 2000/12/01 07:17:38 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/ObjectNode.java,v 1.3 2000/09/26 02:44:25 remm Exp $
- * $Revision: 1.3 $
- * $Date: 2000/09/26 02:44:25 $
+ * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/ObjectNode.java,v 1.4 2000/12/01 07:17:38 remm Exp $
+ * $Revision: 1.4 $
+ * $Date: 2000/12/01 07:17:38 $
*
* ====================================================================
*
@@ -68,6 +68,7 @@
import java.util.Hashtable;
import java.io.Serializable;
import org.apache.slide.common.*;
+import org.apache.slide.util.Messages;
/**
* Represents any kind of object node.
@@ -75,9 +76,10 @@
* This includes actors, activities and collections.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
-public abstract class ObjectNode implements Serializable, Cloneable {
+public abstract class ObjectNode
+ implements Serializable, Cloneable {
// ----------------------------------------------------------- Constructors
@@ -323,5 +325,36 @@
return result;
}
+
+
+ /**
+ * Validate an ObjectNode.
+ *
+ * @param expectedUri Uri
+ */
+ public void validate(String expectedUri) {
+
+ if (uri == null)
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (ObjectNode.class.getName() + ".nullUri"));
+
+ if (!uri.equals(expectedUri))
+ throw new ObjectValidationFailedException
+ (expectedUri, Messages.message
+ (ObjectNode.class.getName() + ".incorrectUri"));
+
+ if (children == null)
+ throw new ObjectValidationFailedException
+ (uri, Messages.message
+ (ObjectNode.class.getName() + ".nullChildrenVector"));
+
+ if (links == null)
+ throw new ObjectValidationFailedException
+ (uri, Messages.message
+ (ObjectNode.class.getName() + ".nullLinksVector"));
+
+ }
+
}
1.5 +68 -3 jakarta-slide/src/share/org/apache/slide/util/resources/messages.properties
Index: messages.properties
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/util/resources/messages.properties,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- messages.properties 2000/10/08 22:49:28 1.4
+++ messages.properties 2000/12/01 07:17:40 1.5
@@ -1,9 +1,9 @@
#
# Slide messages
#
-# $Id: messages.properties,v 1.4 2000/10/08 22:49:28 remm Exp $
+# $Id: messages.properties,v 1.5 2000/12/01 07:17:40 remm Exp $
#
-# @version $Revision: 1.4 $ $Date: 2000/10/08 22:49:28 $
+# @version $Revision: 1.5 $ $Date: 2000/12/01 07:17:40 $
#
#
@@ -50,6 +50,8 @@
Unable to load SlideObject class {0}
org.apache.slide.common.UnknownServiceDeclarationException=\
Unknown service name {0}
+org.apache.slide.common.ObjectValidationFailedException=\
+ Invalid object at {0} : {1}
#
# Messages produced by structure
@@ -68,6 +70,16 @@
Properties already exist at {0}
org.apache.slide.structure.PropertiesNotFoundException=\
Properties not found on object {0}
+org.apache.slide.structure.ObjectNode.nullUri=\
+ Object uri is null
+org.apache.slide.structure.ObjectNode.incorrectUri=\
+ Object uri is incorrect
+org.apache.slide.structure.ObjectNode.nullChildrenVector=\
+ Children vector is null
+org.apache.slide.structure.ObjectNode.nullLinksVector=\
+ Links vector is null
+org.apache.slide.structure.LinkNode.nullLink=\
+ Link is null
#
# Messages produced by lock
@@ -76,15 +88,35 @@
Token {0} not found
org.apache.slide.lock.ObjectIsAlreadyLockedException=\
Object {0} is already locked
+org.apache.slide.lock.NodeLock.nullObjectUri=\
+ Lock object uri is null
+org.apache.slide.lock.NodeLock.incorrectObjectUri=\
+ Lock object uri is incorrect
+org.apache.slide.lock.NodeLock.nullSubjectUri=\
+ Lock subject uri is null
+org.apache.slide.lock.NodeLock.nullTypeUri=\
+ Lock type uri is null
+org.apache.slide.lock.NodeLock.nullExpirationDate=\
+ Lock expiration date is null
+org.apache.slide.lock.NodeLock.nullLockId=\
+ Lock Id is null
#
# Messages produced by security
#
org.apache.slide.security.AccessDeniedException=\
Access denied on {0} by user {1} for action {2}
+org.apache.slide.security.NodePermission.nullObjectUri=\
+ Permission object uri is null
+org.apache.slide.security.NodePermission.incorrectObjectUri=\
+ Permission object uri is incorrect
+org.apache.slide.security.NodePermission.nullSubjectUri=\
+ Permission subject uri is null
+org.apache.slide.security.NodePermission.nullActionUri=\
+ Permission action uri is null
#
-# Messages produced by version
+# Messages produced by content
#
org.apache.slide.content.RevisionAlreadyExistException=\
Revision {0} already exists on object {1}
@@ -94,6 +126,39 @@
No revision descriptor found on object {0}
org.apache.slide.content.RevisionContentNotFoundException=\
Revision {0} of object {1} content not found
+org.apache.slide.content.NodeProperty.nullName=\
+ Property name is null
+org.apache.slide.content.NodeProperty.nullNamespace=\
+ Property namespace is null
+org.apache.slide.content.NodeProperty.nullValue=\
+ Property value is null
+org.apache.slide.content.NodeRevisionNumber.nullNumber=\
+ Revision number is null
+org.apache.slide.content.NodeRevisionNumber.invalidNumber=\
+ RevisionNumber is invalid
+org.apache.slide.content.NodeRevisionContent.noContent=\
+ No content
+org.apache.slide.content.NodeRevisionDescriptor.nullBranchName=\
+ Revision descriptor branch name is null
+org.apache.slide.content.NodeRevisionDescriptor.nullNumber=\
+ Revision descriptor revision number is null
+org.apache.slide.content.NodeRevisionDescriptor.nullLabels=\
+ Revision descriptor labels vector is null
+org.apache.slide.content.NodeRevisionDescriptor.nullProperties=\
+ Revision descriptor properties hashtable is null
+org.apache.slide.content.NodeRevisionDescriptor.invalidPropertyType=\
+ Revision descriptor property has an invalid type
+org.apache.slide.content.NodeRevisionDescriptors.nullUri=\
+ Revision descriptors uri is null
+org.apache.slide.content.NodeRevisionDescriptors.incorrectUri=\
+ Revision descriptors uri is incorrect
+org.apache.slide.content.NodeRevisionDescriptors.nullWorkingRevisions=\
+ Revision descriptors working revisions is null
+org.apache.slide.content.NodeRevisionDescriptors.nullLatestRevisionNumbers=\
+ Revision descriptors latest revision numbers is null
+org.apache.slide.content.NodeRevisionDescriptors.nullBranches=\
+ Revision descriptors branches hashtable is null
+
#
# Messages produced by webdav