1 package org.apache.archiva.webdav;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.jackrabbit.util.Text;
23 import org.apache.jackrabbit.webdav.DavLocatorFactory;
24 import org.apache.jackrabbit.webdav.DavResourceLocator;
25 import org.apache.archiva.webdav.util.RepositoryPathUtil;
26
27
28
29 public class ArchivaDavLocatorFactory
30 implements DavLocatorFactory
31 {
32 @Override
33 public DavResourceLocator createResourceLocator( String prefix, String href )
34 {
35
36 StringBuilder b = new StringBuilder();
37 if ( prefix != null && prefix.length() > 0 )
38 {
39 b.append( prefix );
40 if ( !prefix.endsWith( "/" ) )
41 {
42 b.append( '/' );
43 }
44 if ( href.startsWith( prefix ) )
45 {
46 href = href.substring( prefix.length() );
47 }
48 }
49
50
51 if ( href == null || "".equals( href ) )
52 {
53 href = "/";
54 }
55
56 final String repository = RepositoryPathUtil.getRepositoryName( href );
57 return new ArchivaDavResourceLocator( b.toString(), Text.unescape( href ), repository, this );
58 }
59
60 @Override
61 public DavResourceLocator createResourceLocator( String prefix, String workspacePath, String resourcePath )
62 {
63 return createResourceLocator( prefix, workspacePath, resourcePath, true );
64 }
65
66 @Override
67 public DavResourceLocator createResourceLocator( String prefix, String workspacePath, String path,
68 boolean isResourcePath )
69 {
70 final String repository = RepositoryPathUtil.getRepositoryName( path );
71 return new ArchivaDavResourceLocator( prefix, path, repository, this );
72 }
73 }