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