    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}