/*
* ModeShape (http://www.modeshape.org)
*
* 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.
*/
package org.modeshape.web.jcr.webdav;
import javax.servlet.http.HttpServletRequest;
/**
* The resolved repository name, workspace name, and path of node for a given {@link HttpServletRequest request}.
*/
public final class ResolvedRequest {
private final String repositoryName;
private final String workspaceName;
private final String path;
private final HttpServletRequest request;
public ResolvedRequest( HttpServletRequest request,
String repositoryName,
String workspaceName,
String path ) {
super();
this.request = request;
assert this.request != null;
this.repositoryName = repositoryName;
this.workspaceName = workspaceName;
this.path = path;
}
/**
* Get the request.
*
* @return request the request; never null
*/
public HttpServletRequest getRequest() {
return request;
}
/**
* Get the name of the repository.
*
* @return the repository name; may be null if the request did not resolve to a repository
*/
public String getRepositoryName() {
return repositoryName;
}
/**
* Get the name of the workspace.
*
* @return the workspace name; may be null if the request did not resolve to a node
*/
public String getWorkspaceName() {
return workspaceName;
}
/**
* Get the path to the node.
*
* @return the path of the node; may be null if the request did not resolve to a node
*/
public String getPath() {
return path;
}
/**
* Create a new request that is similar to this request except with the supplied path. This can only be done if the repository
* name and workspace name are non-null
*
* @param path the new path
* @return the new request; never null
*/
public ResolvedRequest withPath( String path ) {
assert repositoryName != null;
assert workspaceName != null;
return new ResolvedRequest(request, repositoryName, workspaceName, path);
}
/**
* {@inheritDoc}
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "/" + repositoryName + "/" + workspaceName + path;
}
}