001package org.apache.archiva.webdav.util; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import org.apache.commons.lang.ArrayUtils; 023import org.apache.commons.lang.StringUtils; 024 025/** 026 */ 027public class RepositoryPathUtil 028{ 029 030 public static String getRepositoryName( final String href ) 031 { 032 String requestPathInfo = StringUtils.defaultString( href ); 033 034 //remove prefix ie /repository/blah becomes /blah 035 requestPathInfo = removePrefix( requestPathInfo ); 036 037 // Remove prefixing slash as the repository id doesn't contain it; 038 if ( requestPathInfo.startsWith( "/" ) ) 039 { 040 requestPathInfo = requestPathInfo.substring( 1 ); 041 } 042 043 // Find first element, if slash exists. 044 int slash = requestPathInfo.indexOf( '/' ); 045 if ( slash > 0 ) 046 { 047 // Filtered: "central/org/apache/maven/" -> "central" 048 return requestPathInfo.substring( 0, slash ); 049 } 050 return requestPathInfo; 051 } 052 053 private static String removePrefix( final String href ) 054 { 055 String[] parts = StringUtils.split( href, '/' ); 056 parts = (String[]) ArrayUtils.subarray( parts, 1, parts.length ); 057 if ( parts == null || parts.length == 0 ) 058 { 059 return "/"; 060 } 061 062 String joinedString = StringUtils.join( parts, '/' ); 063 if ( href.endsWith( "/" ) ) 064 { 065 joinedString = joinedString + "/"; 066 } 067 068 return joinedString; 069 } 070}