Class CarddavBWIntf

java.lang.Object
org.bedework.webdav.servlet.shared.WebdavNsIntf
org.bedework.carddav.server.CarddavBWIntf
All Implemented Interfaces:
Serializable, org.bedework.util.logging.Logged

public class CarddavBWIntf extends org.bedework.webdav.servlet.shared.WebdavNsIntf
This class implements a namespace interface for the webdav abstract servlet. One of these interfaces is associated with each current session.

As a first pass we'll define webdav urls as starting with
/user/user-name/calendar-name/

uri resolution should be made part of the core calendar allowing all such distinctions to be removed from this code.

The part following the above prefix probably determines exactly what is delivered. We may want the entire calendar (or what we show by default) or a single event from the calendar

Author:
Mike Douglass douglm rpi.edu
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Result from query

    Nested classes/interfaces inherited from class org.bedework.webdav.servlet.shared.WebdavNsIntf

    org.bedework.webdav.servlet.shared.WebdavNsIntf.AclInfo, org.bedework.webdav.servlet.shared.WebdavNsIntf.Content, org.bedework.webdav.servlet.shared.WebdavNsIntf.PutContentResult, org.bedework.webdav.servlet.shared.WebdavNsIntf.SessCt
  • Field Summary

    Fields inherited from class org.bedework.webdav.servlet.shared.WebdavNsIntf

    account, anonymous, dumpContent, existanceDoesExist, existanceMay, existanceMust, existanceNot, methods, nodeTypeCollection, nodeTypeEntity, nodeTypePrincipal, nodeTypeUnknown, servlet, session, sessNum, xml
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    acceptMkcolContent(jakarta.servlet.http.HttpServletRequest req)
     
    void
    addNamespace(org.bedework.util.xml.XmlEmit xml)
     
    boolean
    canPut(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    void
     
    void
    copyMove(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, org.bedework.webdav.servlet.shared.WebdavNsNode from, org.bedework.webdav.servlet.shared.WebdavNsNode to, boolean copy, boolean overwrite, int depth)
     
    void
    create(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    void
    createAlias(org.bedework.webdav.servlet.shared.WebdavNsNode alias)
     
    void
    delete(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    void
    emitAcl(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    boolean
    generatePropValue(org.bedework.webdav.servlet.shared.WebdavNsNode node, org.bedework.webdav.servlet.shared.WebdavProperty pr, boolean allProp)
     
    getAcceptContentType(jakarta.servlet.http.HttpServletRequest req)
     
    boolean
     
    org.bedework.webdav.servlet.common.AccessUtil
     
    getAclPrincipalInfo(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
     
    org.bedework.webdav.servlet.shared.WebdavNsIntf.Content
    getBinaryContent(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    getBwnode(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    getCalnode(org.bedework.webdav.servlet.shared.WebdavNsNode node, int errstatus)
     
    Collection<org.bedework.webdav.servlet.shared.WebdavNsNode>
    getChildren(org.bedework.webdav.servlet.shared.WebdavNsNode node, Supplier<Object> filterGetter)
     
     
    org.bedework.webdav.servlet.shared.WebdavNsIntf.Content
    getContent(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, String contentType, org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    getDavHeader(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    boolean
     
    Collection<org.bedework.webdav.servlet.shared.WebdavNsNode>
    getGroups(String resourceUri, String principalUrl)
     
    org.bedework.webdav.servlet.shared.WebdavNsNode
    getNode(String uri, int existance, int nodeType, boolean addMember)
     
    org.bedework.webdav.servlet.shared.WebdavNsNode
    getParent(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
     
    Collection<org.bedework.webdav.servlet.shared.WebdavNsNode>
    getPrincipals(String resourceUri, org.bedework.webdav.servlet.shared.PrincipalPropertySearch pps)
     
     
    org.bedework.webdav.servlet.shared.WdSynchReport
    getSynchReport(String path, String token, int limit, boolean recurse)
     
     
     
    org.bedework.webdav.servlet.shared.WdSysIntf
     
     
    void
    init(org.bedework.webdav.servlet.common.WebdavServlet servlet, jakarta.servlet.http.HttpServletRequest req, HashMap<String,org.bedework.webdav.servlet.common.MethodBase.MethodInfo> methods, boolean dumpContent)
    Called before any other method is called to allow initialisation to take place at the first or subsequent requests
    boolean
    knownProperty(org.bedework.webdav.servlet.shared.WebdavNsNode node, org.bedework.webdav.servlet.shared.WebdavProperty pr)
     
    void
    makeCollection(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, org.bedework.webdav.servlet.shared.WebdavNsNode node)
    Create an empty collection at the given location.
    org.bedework.webdav.servlet.shared.WebdavProperty
    makeProp(Element propnode)
     
     
    org.bedework.webdav.servlet.shared.WebdavNsIntf.PutContentResult
    putBinaryContent(jakarta.servlet.http.HttpServletRequest req, org.bedework.webdav.servlet.shared.WebdavNsNode node, String[] contentTypePars, InputStream contentStream, org.bedework.webdav.servlet.common.Headers.IfHeaders ifHeaders)
     
    org.bedework.webdav.servlet.shared.WebdavNsIntf.PutContentResult
    putContent(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, org.bedework.webdav.servlet.shared.WebdavNsNode node, String[] contentTypePars, Reader contentRdr, org.bedework.webdav.servlet.common.Headers.IfHeaders ifHeaders)
     
    void
    putNode(org.bedework.webdav.servlet.shared.WebdavNsNode node)
     
    query(org.bedework.webdav.servlet.shared.WebdavNsNode wdnode, Filter fltr, GetLimits limits, String vcardVersion)
    Use the given query to return a collection of nodes.
    void
    reAuth(jakarta.servlet.http.HttpServletRequest req, String account)
    See if we can reauthenticate.
    void
     
    boolean
    specialUri(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, String resourceUri)
     
    void
    updateAccess(org.bedework.webdav.servlet.shared.WebdavNsIntf.AclInfo info)
     

    Methods inherited from class org.bedework.webdav.servlet.shared.WebdavNsIntf

    addStatus, closePropstat, closePropstat, emitError, emitSupportedReportSet, fixPath, generateHtml, getAccount, getAnonymous, getChildren, getElementContent, getLocation, getLogger, getMethod, getMethodNames, getOnlyChild, getReader, getRequest, getResourceUri, getReturnMultistatusOk, getServerInfo, getServlet, getUri, getXmlEmit, makeName, makeServerInfoUrl, normalizeUri, openPropstat, parseProp, prefetch, putContent, streamContent, syncTokenMatch, writeContent

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.bedework.util.logging.Logged

    audit, debug, debug, debug, enableAuditLogger, enableErrorLogger, enableMetricsLogger, error, error, error, getLogLevel, info, info, isAuditLoggerEnabled, isErrorLoggerEnabled, isMetricsDebugEnabled, isMetricsLoggerEnabled, metrics, setLoggerClass, setLoggerClass, trace, trace, trace, warn, warn
  • Constructor Details

    • CarddavBWIntf

      public CarddavBWIntf()
  • Method Details

    • init

      public void init(org.bedework.webdav.servlet.common.WebdavServlet servlet, jakarta.servlet.http.HttpServletRequest req, HashMap<String,org.bedework.webdav.servlet.common.MethodBase.MethodInfo> methods, boolean dumpContent)
      Called before any other method is called to allow initialisation to take place at the first or subsequent requests
      Overrides:
      init in class org.bedework.webdav.servlet.shared.WebdavNsIntf
      Parameters:
      servlet - our servlet
      req - http request
      methods - HashMap table of method info
      dumpContent - if we want content trace
    • reAuth

      public void reAuth(jakarta.servlet.http.HttpServletRequest req, String account)
      See if we can reauthenticate. Use for real-time service which needs to authenticate as a particular principal.
      Parameters:
      req - http request
      account - id
    • getAddMemberSuffix

      public String getAddMemberSuffix()
      Specified by:
      getAddMemberSuffix in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getDavHeader

      public String getDavHeader(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Overrides:
      getDavHeader in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getConfig

      protected CardDAVContextConfig getConfig()
    • getAccessUtil

      public org.bedework.webdav.servlet.common.AccessUtil getAccessUtil()
      Specified by:
      getAccessUtil in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • canPut

      public boolean canPut(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      canPut in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getDirectoryBrowsingDisallowed

      public boolean getDirectoryBrowsingDisallowed()
      Specified by:
      getDirectoryBrowsingDisallowed in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • rollback

      public void rollback()
      Specified by:
      rollback in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • close

      public void close()
      Specified by:
      close in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getSysIntf

      public org.bedework.webdav.servlet.shared.WdSysIntf getSysIntf()
      Specified by:
      getSysIntf in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getSysi

      public SysIntf getSysi()
      Returns:
      SysIntf
    • getSupportedLocks

      public String getSupportedLocks()
      Specified by:
      getSupportedLocks in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getAccessControl

      public boolean getAccessControl()
      Specified by:
      getAccessControl in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • addNamespace

      public void addNamespace(org.bedework.util.xml.XmlEmit xml)
      Overrides:
      addNamespace in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getNode

      public org.bedework.webdav.servlet.shared.WebdavNsNode getNode(String uri, int existance, int nodeType, boolean addMember)
      Specified by:
      getNode in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • putNode

      public void putNode(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      putNode in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • delete

      public void delete(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      delete in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getChildren

      public Collection<org.bedework.webdav.servlet.shared.WebdavNsNode> getChildren(org.bedework.webdav.servlet.shared.WebdavNsNode node, Supplier<Object> filterGetter)
      Specified by:
      getChildren in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getParent

      public org.bedework.webdav.servlet.shared.WebdavNsNode getParent(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      getParent in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getContent

      public org.bedework.webdav.servlet.shared.WebdavNsIntf.Content getContent(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, String contentType, org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      getContent in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getBinaryContent

      public org.bedework.webdav.servlet.shared.WebdavNsIntf.Content getBinaryContent(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      getBinaryContent in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getAcceptContentType

      public String getAcceptContentType(jakarta.servlet.http.HttpServletRequest req)
      Specified by:
      getAcceptContentType in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • putContent

      public org.bedework.webdav.servlet.shared.WebdavNsIntf.PutContentResult putContent(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, org.bedework.webdav.servlet.shared.WebdavNsNode node, String[] contentTypePars, Reader contentRdr, org.bedework.webdav.servlet.common.Headers.IfHeaders ifHeaders)
      Specified by:
      putContent in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • putBinaryContent

      public org.bedework.webdav.servlet.shared.WebdavNsIntf.PutContentResult putBinaryContent(jakarta.servlet.http.HttpServletRequest req, org.bedework.webdav.servlet.shared.WebdavNsNode node, String[] contentTypePars, InputStream contentStream, org.bedework.webdav.servlet.common.Headers.IfHeaders ifHeaders)
      Specified by:
      putBinaryContent in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • create

      public void create(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      create in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • createAlias

      public void createAlias(org.bedework.webdav.servlet.shared.WebdavNsNode alias)
      Specified by:
      createAlias in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • acceptMkcolContent

      public void acceptMkcolContent(jakarta.servlet.http.HttpServletRequest req)
      Specified by:
      acceptMkcolContent in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • makeCollection

      public void makeCollection(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Create an empty collection at the given location.
        201 (Created) - The calendar collection resource was created in its entirety.
        403 (Forbidden) - This indicates at least one of two conditions: 1) the
                server does not allow the creation of calendar collections at the
                given location in its namespace, or 2) the parent collection of the
                Request-URI exists but cannot accept members.
        405 (Method Not Allowed) - MKCALENDAR can only be executed on a null resource.
        409 (Conflict) - A collection cannot be made at the Request-URI until one
                or more intermediate collections have been created.
        415 (Unsupported Media Type)- The server does not support the request type
                of the body.
        507 (Insufficient Storage) - The resource does not have sufficient space
                to record the state of the resource after the execution of this method.
      Specified by:
      makeCollection in class org.bedework.webdav.servlet.shared.WebdavNsIntf
      Parameters:
      req - HttpServletRequest
      node - node to create
    • copyMove

      public void copyMove(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, org.bedework.webdav.servlet.shared.WebdavNsNode from, org.bedework.webdav.servlet.shared.WebdavNsNode to, boolean copy, boolean overwrite, int depth)
      Specified by:
      copyMove in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • specialUri

      public boolean specialUri(jakarta.servlet.http.HttpServletRequest req, jakarta.servlet.http.HttpServletResponse resp, String resourceUri)
      Specified by:
      specialUri in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getSynchReport

      public org.bedework.webdav.servlet.shared.WdSynchReport getSynchReport(String path, String token, int limit, boolean recurse)
      Specified by:
      getSynchReport in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getSyncToken

      public String getSyncToken(String path)
      Specified by:
      getSyncToken in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getGroups

      public Collection<org.bedework.webdav.servlet.shared.WebdavNsNode> getGroups(String resourceUri, String principalUrl)
      Specified by:
      getGroups in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getPrincipalCollectionSet

      public Collection<String> getPrincipalCollectionSet(String resourceUri)
      Specified by:
      getPrincipalCollectionSet in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getPrincipals

      public Collection<org.bedework.webdav.servlet.shared.WebdavNsNode> getPrincipals(String resourceUri, org.bedework.webdav.servlet.shared.PrincipalPropertySearch pps)
      Specified by:
      getPrincipals in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • makeUserHref

      public String makeUserHref(String id)
      Specified by:
      makeUserHref in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • updateAccess

      public void updateAccess(org.bedework.webdav.servlet.shared.WebdavNsIntf.AclInfo info)
      Specified by:
      updateAccess in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • emitAcl

      public void emitAcl(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      emitAcl in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • getAclPrincipalInfo

      public Collection<String> getAclPrincipalInfo(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Specified by:
      getAclPrincipalInfo in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • makeProp

      public org.bedework.webdav.servlet.shared.WebdavProperty makeProp(Element propnode)
      Overrides:
      makeProp in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • knownProperty

      public boolean knownProperty(org.bedework.webdav.servlet.shared.WebdavNsNode node, org.bedework.webdav.servlet.shared.WebdavProperty pr)
      Overrides:
      knownProperty in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • generatePropValue

      public boolean generatePropValue(org.bedework.webdav.servlet.shared.WebdavNsNode node, org.bedework.webdav.servlet.shared.WebdavProperty pr, boolean allProp)
      Overrides:
      generatePropValue in class org.bedework.webdav.servlet.shared.WebdavNsIntf
    • query

      public CarddavBWIntf.QueryResult query(org.bedework.webdav.servlet.shared.WebdavNsNode wdnode, Filter fltr, GetLimits limits, String vcardVersion)
      Use the given query to return a collection of nodes. An exception will be raised if the entire query fails for some reason (access, etc). An empty collection will be returned if no objects match.
      Parameters:
      wdnode - WebdavNsNode defining root of search
      fltr - Filter object defining search
      limits - to limit result size
      vcardVersion - rfc version number as String
      Returns:
      Collection of result nodes (empty for no result)
    • getBwnode

      public CarddavNode getBwnode(org.bedework.webdav.servlet.shared.WebdavNsNode node)
      Parameters:
      node - to check and return
      Returns:
      CaldavBwNode
    • getCalnode

      public CarddavColNode getCalnode(org.bedework.webdav.servlet.shared.WebdavNsNode node, int errstatus)
      Parameters:
      node - for type check
      errstatus - for exception if required
      Returns:
      CaldavCalNode
    • getVcardVersion

      public String getVcardVersion(String requested)
      Parameters:
      requested - version - may be null
      Returns:
      a valid version
      Throws:
      org.bedework.webdav.servlet.shared.WebdavException - if version invalid