1package org.apache.archiva.webdav;
23/*4 * Licensed to the Apache Software Foundation (ASF) under one5 * or more contributor license agreements. See the NOTICE file6 * distributed with this work for additional information7 * regarding copyright ownership. The ASF licenses this file8 * to you under the Apache License, Version 2.0 (the9 * "License"); you may not use this file except in compliance10 * with the License. You may obtain a copy of the License at11 *12 * http://www.apache.org/licenses/LICENSE-2.013 *14 * Unless required by applicable law or agreed to in writing,15 * software distributed under the License is distributed on an16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY17 * KIND, either express or implied. See the License for the18 * specific language governing permissions and limitations19 * under the License.20 */2122import org.apache.jackrabbit.util.Text;
23import org.apache.jackrabbit.webdav.DavLocatorFactory;
24import org.apache.jackrabbit.webdav.DavResourceLocator;
25import org.apache.archiva.webdav.util.RepositoryPathUtil;
2627/**28 */29publicclassArchivaDavLocatorFactory30implements DavLocatorFactory
31 {
32 @Override
33public DavResourceLocator createResourceLocator( String prefix, String href )
34 {
35// build prefix string and remove all prefixes from the given href.36 StringBuilder b = new StringBuilder();
37if ( prefix != null && prefix.length() > 0 )
38 {
39 b.append( prefix );
40if ( !prefix.endsWith( "/" ) )
41 {
42 b.append( '/' );
43 }
44if ( href.startsWith( prefix ) )
45 {
46 href = href.substring( prefix.length() );
47 }
48 }
4950// special treatment for root item, that has no name but '/' path.51if ( href == null || "".equals( href ) )
52 {
53 href = "/";
54 }
5556final String repository = RepositoryPathUtil.getRepositoryName( href );
57returnnewArchivaDavResourceLocator( b.toString(), Text.unescape( href ), repository, this );
58 }
5960 @Override
61public DavResourceLocator createResourceLocator( String prefix, String workspacePath, String resourcePath )
62 {
63return createResourceLocator( prefix, workspacePath, resourcePath, true );
64 }
6566 @Override
67public DavResourceLocator createResourceLocator( String prefix, String workspacePath, String path,
68boolean isResourcePath )
69 {
70final String repository = RepositoryPathUtil.getRepositoryName( path );
71returnnewArchivaDavResourceLocator( prefix, path, repository, this );
72 }
73 }