001// Licensed under the Apache License, Version 2.0 (the "License"); 002// you may not use this file except in compliance with the License. 003// You may obtain a copy of the License at 004// 005// http://www.apache.org/licenses/LICENSE-2.0 006// 007// Unless required by applicable law or agreed to in writing, software 008// distributed under the License is distributed on an "AS IS" BASIS, 009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 010// See the License for the specific language governing permissions and 011// limitations under the License. 012package org.apache.tapestry5.versionmigrator; 013 014import java.util.Optional; 015import java.util.function.Function; 016import java.util.regex.Pattern; 017 018/** 019 * Interface that defines a file refactor parser. 020 */ 021public interface FileRefactorCommitParser extends Function<String, Optional<ClassRefactor>> 022{ 023 /** 024 * Extracts a package or class name from a string which may contain <code>src/main/java/</code> 025 * or <code>src/test/java/</code> 026 */ 027 static String extractPackageOrClassName(String string) 028 { 029 return string 030 .replace("src/main/java/", "") 031 .replace("src/test/java/", "") 032 .replace("/", "."); 033 } 034 035 /** 036 * Builds a class name given some parts. 037 */ 038 static String buildClassName(final String rootPackageName, String packageNameSuffix, final String className) 039 { 040 return (rootPackageName + packageNameSuffix.replace("/", ".") + "." + className.replace("/", ".")) 041 .replaceAll(Pattern.quote(".."), "."); 042 } 043 044 045}