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 lu...@apache.org on 2005/02/02 18:19:35 UTC

cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange ChildcountProperty.java Constants.java HasChildrenProperty.java HassubsProperty.java HrefProperty.java IsCollectionProperty.java IsFolderProperty.java IsRootProperty.java package.html resource_kinds.xml

luetzkendorf    2005/02/02 09:19:35

  Added:       src/webdav/server/org/apache/slide/webdav/util/properties/exchange
                        ChildcountProperty.java Constants.java
                        HasChildrenProperty.java HassubsProperty.java
                        HrefProperty.java IsCollectionProperty.java
                        IsFolderProperty.java IsRootProperty.java
                        package.html resource_kinds.xml
  Log:
  first version of properties supported by ms exchange and requested by webfolders
  
  Revision  Changes    Path
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/ChildcountProperty.java
  
  Index: ChildcountProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import java.util.Enumeration;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.common.SlideToken;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.structure.ObjectNode;
  import org.apache.slide.structure.Structure;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   * MS Exchange extension property <code>DAV:childcount</code>.
   * 
   * <p>"A folder's total number of items, including subfolders."
   */
  public class ChildcountProperty extends AbstractComputedProperty {
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#getPropertyName()
       */
      public PropertyName getPropertyName() {
          return Constants.PN_CHILDCOUNT;
      }
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
       */
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException {
          
          Structure structure = nsaToken.getStructureHelper();
          SlideToken slideToken = context.getSlideToken();
          
          ObjectNode node = structure.retrieve(slideToken, revisionDescriptors.getUri());
          
          int count = 0;
          for(Enumeration e = structure.getChildren(slideToken, node);e.hasMoreElements(); e.nextElement()) {
              count++;
          }
          
          return new Integer(count);
      }
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/Constants.java
  
  Index: Constants.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import org.apache.slide.common.PropertyName;
  
  /**
   * @author stefan
   */
  public class Constants {
  
      private Constants() { }
      
      static final Object TRUE_VALUE = "true";
      static final Object FALSE_VALUE = "false";
  
      public static final PropertyName PN_IS_COLLECTION = 
          PropertyName.getPropertyName("iscollection"); 
      public static final PropertyName PN_IS_ROOT = 
          PropertyName.getPropertyName("isroot");
      public static final PropertyName PN_HAS_CHILDREN = 
          PropertyName.getPropertyName("haschildren");
      public static final PropertyName PN_CHILDCOUNT = 
          PropertyName.getPropertyName("childcount");
      public static final PropertyName PN_HASSUBS = 
          PropertyName.getPropertyName("hassubs");
      
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/HasChildrenProperty.java
  
  Index: HasChildrenProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import java.util.Enumeration;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.common.SlideToken;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.structure.ObjectNode;
  import org.apache.slide.structure.Structure;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   * MS Exchange extension property <code>DAV:haschildren</code>.
   * 
   * <p>"Indicates whether the folder or structured document item has child objects."
   */
  public class HasChildrenProperty extends AbstractComputedProperty {
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#getPropertyName()
       */
      public PropertyName getPropertyName() {
          return Constants.PN_HAS_CHILDREN;
      }
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
       */
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException {
          Structure structure = nsaToken.getStructureHelper();
          SlideToken slideToken = context.getSlideToken();
          
          ObjectNode node = structure.retrieve(slideToken, revisionDescriptors.getUri());
          
          Enumeration e = structure.getChildren(slideToken, node);
          if (e.hasMoreElements()) {
              return Constants.TRUE_VALUE;
          } else {
              return Constants.FALSE_VALUE;
          }
      }
  
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/HassubsProperty.java
  
  Index: HassubsProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import java.util.Enumeration;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.common.SlideToken;
  import org.apache.slide.content.Content;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.structure.ObjectNode;
  import org.apache.slide.structure.Structure;
  import org.apache.slide.webdav.util.WebdavConstants;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   * MS Exchange extension property <code>DAV:haschildren</code>.
   * 
   * <p>"Indicates whether the folder item has subfolders."
   */
  public class HassubsProperty extends AbstractComputedProperty {
  
      public PropertyName getPropertyName() {
          return Constants.PN_HASSUBS;
      }
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
       */
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException {
          Structure structure = nsaToken.getStructureHelper();
          Content content = nsaToken.getContentHelper();
          SlideToken slideToken = context.getSlideToken();
          
          ObjectNode node = structure.retrieve(slideToken, revisionDescriptors.getUri());
          
          for(Enumeration e = structure.getChildren(slideToken, node);e.hasMoreElements(); ) {
              ObjectNode child = (ObjectNode)e.nextElement();
              NodeRevisionDescriptors childDescriptors = content.retrieve(slideToken, child.getUri());
              NodeRevisionDescriptor childDescriptor = content.retrieve(slideToken, childDescriptors);
              
              if (childDescriptor.propertyValueContains(
                      WebdavConstants.PN_RESOURCETYPE, 
                      WebdavConstants.E_COLLECTION))
              {
                  return Constants.TRUE_VALUE;
              }
          }
  
          return Constants.FALSE_VALUE;
      }
  
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/HrefProperty.java
  
  Index: HrefProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.WebdavUtils;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   *  MS Exchange extension property <code>DAV:href</code>.
   * 
   *  <p>The absolute URL of an item.
   */
  public class HrefProperty extends AbstractComputedProperty {
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#getPropertyName()
       */
      public PropertyName getPropertyName() {
          // TODO Auto-generated method stub
          return null;
      }
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
       */
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException {
          
          // TODO we need to get more context infos
          return WebdavUtils.getAbsolutePath(revisionDescriptors.getUri(), context);
      }
  
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/IsCollectionProperty.java
  
  Index: IsCollectionProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.webdav.util.WebdavConstants;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   * MS Exchange extension property <code>DAV:iscollection</code>.
   * 
   * <p>"Both structured documents and folders are collection items."
   */
  public class IsCollectionProperty extends AbstractComputedProperty {
  
      public PropertyName getPropertyName() {
          return Constants.PN_IS_COLLECTION;
      }
  
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException 
      {
          boolean result = revisionDescriptor.propertyValueContains(
                  WebdavConstants.PN_RESOURCETYPE, 
                  WebdavConstants.E_COLLECTION);
          
          return result ? Constants.TRUE_VALUE : Constants.FALSE_VALUE;
      }
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/IsFolderProperty.java
  
  Index: IsFolderProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.webdav.util.WebdavConstants;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   * MS Exchange extension property <code>DAV:isfolder</code>.
   * 
   * <p>"The isfolder field specifies whether an item is a folder."
   */
  public class IsFolderProperty extends AbstractComputedProperty {
  
      public PropertyName getPropertyName() {
          return Constants.PN_IS_COLLECTION;
      }
  
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException 
      {
          boolean result = revisionDescriptor.propertyValueContains(
                  WebdavConstants.PN_RESOURCETYPE, 
                  WebdavConstants.E_COLLECTION);
          
          return result ? Constants.TRUE_VALUE : Constants.FALSE_VALUE;
      }
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/IsRootProperty.java
  
  Index: IsRootProperty.java
  ===================================================================
  package org.apache.slide.webdav.util.properties.exchange;
  
  import org.apache.slide.common.NamespaceAccessToken;
  import org.apache.slide.common.PropertyName;
  import org.apache.slide.common.SlideException;
  import org.apache.slide.content.NodeRevisionDescriptor;
  import org.apache.slide.content.NodeRevisionDescriptors;
  import org.apache.slide.webdav.util.WebdavContext;
  import org.apache.slide.webdav.util.properties.AbstractComputedProperty;
  import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  
  /**
   * MS Exchange extension property <code>DAV:isroot</code>.
   * 
   * <p>"The isroot field specifies whether an item is a root folder."
   */
  public class IsRootProperty extends AbstractComputedProperty {
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#getPropertyName()
       */
      public PropertyName getPropertyName() {
          return Constants.PN_IS_ROOT;
      }
  
      /* (non-Javadoc)
       * @see org.apache.slide.webdav.util.properties.PropertyComputer#computeValue(org.apache.slide.common.NamespaceAccessToken, org.apache.slide.content.NodeRevisionDescriptors, org.apache.slide.content.NodeRevisionDescriptor, org.apache.slide.webdav.util.resourcekind.ResourceKind, org.apache.slide.webdav.util.WebdavContext)
       */
      public Object computeValue(NamespaceAccessToken nsaToken,
              NodeRevisionDescriptors revisionDescriptors,
              NodeRevisionDescriptor revisionDescriptor,
              ResourceKind resourceKind, WebdavContext context)
              throws SlideException {
          return revisionDescriptors.getUri().equals("/") ? 
                  Constants.TRUE_VALUE : Constants.FALSE_VALUE;
      }
  
  }
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/package.html
  
  Index: package.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  <html>
    
    <head>
      <!-- 
        
        $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/package.html,v 1.1 2005/02/02 17:19:35 luetzkendorf Exp $
        $Revision: 1.1 $
        $Date: 2005/02/02 17:19:35 $
   
        ====================================================================
  
        Copyright 1999-2002 The Apache Software Foundation 
  
        Licensed under the Apache License, Version 2.0 (the "License");
        you may not use this file except in compliance with the License.
        You may obtain a copy of the License at
   
            http://www.apache.org/licenses/LICENSE-2.0
   
        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License.
  
      -->
    </head>
    
    <body>
      <p>Package containing property implementations that are supported by WebDAV
      components of Microsofts Exchange Server 2003 and requested by WebFolder client.</p>
  
      <p>To use this add something like the following to the events section of 
      your Domain.xml:
      <pre>
    &lt;event classname="org.apache.slide.event.DomainEvent" enable="true"/>
    &lt;listener classname="org.apache.slide.webdav.util.resourcekind.ResourceKindConfigurator">
      &lt;configuration>
        &lt;definition resource="/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml"/>
      &lt;/configuration>
    &lt;/listener> 
      </pre>
      
    </body>
  </html>
  
  
  
  1.1                  jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml
  
  Index: resource_kinds.xml
  ===================================================================
  <?xml version="1.0" encoding="iso-8859-1"?>
  <!--
     $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/properties/exchange/resource_kinds.xml,v 1.1 2005/02/02 17:19:35 luetzkendorf Exp $
     $Revision: 1.1 $
     $Date: 2005/02/02 17:19:35 $
    
     ====================================================================
    
     Copyright 1999-2002 The Apache Software Foundation 
    
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
    
         http://www.apache.org/licenses/LICENSE-2.0
    
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  -->
  <resource-kinds>
    <resource-kind name="DeltavCompliant">
      
      <live-properties>
        <live-property name="iscollection" protected="true"
          computer="org.apache.slide.webdav.util.properties.exchange.IsCollectionProperty">
        </live-property>
        <live-property name="isfolder" protected="true"
          computer="org.apache.slide.webdav.util.properties.exchange.IsFolderProperty">
        </live-property>
        <live-property name="isroot" protected="true"
          computer="org.apache.slide.webdav.util.properties.exchange.IsRootProperty">
        </live-property>
  
        <live-property name="haschildren" protected="true"
          computer="org.apache.slide.webdav.util.properties.exchange.HasChildrenProperty">
        </live-property>
        <live-property name="childcount" protected="true"
          computer="org.apache.slide.webdav.util.properties.exchange.ChildcountProperty">
        </live-property>
        <live-property name="hassubs" protected="true"
          computer="org.apache.slide.webdav.util.properties.exchange.HassubsProperty">
        </live-property>
  
      
        <live-property name="isstructureddocument" protected="true"
          computer="org.apache.slide.webdav.util.properties.ConstantProperty">
          <computer-configuration>
            <constant-value>false</constant-value>
          </computer-configuration>
        </live-property>
  
  
        <live-property name="ishidden" protected="false"
          computer="org.apache.slide.webdav.util.properties.DefaultedProperty">
          <computer-configuration>
            <default-value>false</default-value>
          </computer-configuration>
        </live-property>
        <live-property name="isreadonly" protected="false"
          computer="org.apache.slide.webdav.util.properties.DefaultedProperty">
          <computer-configuration>
            <default-value>false</default-value>
          </computer-configuration>
        </live-property>
  
      </live-properties>
  
    </resource-kind>
  </resource-kinds>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org