]> source.dussan.org Git - archiva.git/commitdiff
add mergedIndexPath in repo group view
authorOlivier Lamy <olamy@apache.org>
Sun, 21 Apr 2013 23:36:06 +0000 (23:36 +0000)
committerOlivier Lamy <olamy@apache.org>
Sun, 21 Apr 2013 23:36:06 +0000 (23:36 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1470364 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/archiva/webdav/ArchivaDavResourceFactory.java

index 3d99333d0b331cdc24e794d459e6242ae69c6a23..79e2d4195251184d87e29a6bc2906a37f6cf9f7f 100644 (file)
@@ -73,6 +73,7 @@ import org.apache.archiva.xml.XMLException;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.SystemUtils;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
 import org.apache.jackrabbit.webdav.DavResourceFactory;
@@ -445,7 +446,7 @@ public class ArchivaDavResourceFactory
 
         String rootPath = StringUtils.substringBeforeLast( pathInfo, "/" );
 
-        if ( StringUtils.endsWith( rootPath, "/.indexer" ) )
+        if ( StringUtils.endsWith( rootPath, "/" + repoGroupConfig.getMergedIndexPath() ) )
         {
             // we are in the case of index file request
             String requestedFileName = StringUtils.substringAfterLast( pathInfo, "/" );
@@ -926,11 +927,12 @@ public class ArchivaDavResourceFactory
 
         boolean allow = isAllowedToContinue( request, repositories, activePrincipal );
 
+        // remove last /
+        String pathInfo = StringUtils.removeEnd( request.getPathInfo(), "/" );
+
         if ( allow )
         {
 
-            // remove last /
-            String pathInfo = StringUtils.removeEnd( request.getPathInfo(), "/" );
             if ( StringUtils.endsWith( pathInfo, repositoryGroupConfiguration.getMergedIndexPath() ) )
             {
                 File mergedRepoDir =
@@ -939,6 +941,23 @@ public class ArchivaDavResourceFactory
             }
             else
             {
+                if ( StringUtils.equalsIgnoreCase( pathInfo, "/" + repositoryGroupConfiguration.getId() ) )
+                {
+                    File tmpDirectory = new File( SystemUtils.getJavaIoTmpDir(),
+                                                  repositoryGroupConfiguration.getId() + "/"
+                                                      + repositoryGroupConfiguration.getMergedIndexPath() );
+                    if ( !tmpDirectory.exists() )
+                    {
+                        synchronized ( tmpDirectory.getAbsolutePath() )
+                        {
+                            if ( !tmpDirectory.exists() )
+                            {
+                                tmpDirectory.mkdirs();
+                            }
+                        }
+                    }
+                    mergedRepositoryContents.add( tmpDirectory.getParentFile() );
+                }
                 for ( String repository : repositories )
                 {
                     ManagedRepositoryContent managedRepository = null;