View Javadoc

1   /*
2    * ModeShape (http://www.modeshape.org)
3    * See the COPYRIGHT.txt file distributed with this work for information
4    * regarding copyright ownership.  Some portions may be licensed
5    * to Red Hat, Inc. under one or more contributor license agreements.
6    * See the AUTHORS.txt file in the distribution for a full listing of 
7    * individual contributors.
8    *
9    * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
10   * is licensed to you under the terms of the GNU Lesser General Public License as
11   * published by the Free Software Foundation; either version 2.1 of
12   * the License, or (at your option) any later version.
13   *
14   * ModeShape is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17   * Lesser General Public License for more details.
18   *
19   * You should have received a copy of the GNU Lesser General Public
20   * License along with this software; if not, write to the Free
21   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
22   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
23   */
24  package org.modeshape.web.jcr.webdav;
25  
26  import javax.servlet.ServletContext;
27  import javax.servlet.http.HttpServletRequest;
28  import net.sf.webdav.exceptions.WebdavException;
29  
30  /**
31   * Interface for a method of resolving a request into a repository name, workspace name, and node path. Implementations can use
32   * additional information in the request (such as the {@link HttpServletRequest#getUserPrincipal() principal} to resolve the URI.
33   * <p>
34   * Implementations of this class must be thread-safe and must provide a public, nilary (no-argument) constructor.
35   * </p>
36   * 
37   * @see SingleRepositoryRequestResolver
38   * @see MultiRepositoryRequestResolver
39   */
40  public interface RequestResolver {
41  
42      /**
43       * Initialize the resolver based on the provided context
44       * 
45       * @param context the servlet context for this servlet
46       */
47      void initialize( ServletContext context );
48  
49      /**
50       * Resolve the given request to the repository, workspace, and path of the node
51       * 
52       * @param request the request to be resolved
53       * @param path the requested relative path; never null or empty
54       * @return the repository, workspace, and path to a node
55       * @throws WebdavException if the URI cannot be resolved to a repository, workspace, and path
56       */
57      ResolvedRequest resolve( HttpServletRequest request,
58                               String path ) throws WebdavException;
59  
60  }