All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.source.formatter.check.BaseAddComponentAnnotationCheck Maven / Gradle / Ivy

There is a newer version: 1.0.1457
Show newest version
/**
 * SPDX-FileCopyrightText: (c) 2024 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.source.formatter.check;

import com.liferay.source.formatter.parser.JavaClass;
import com.liferay.source.formatter.parser.JavaClassParser;

/**
 * @author Drew Brokke
 * @author Kyle Miho
 */
public abstract class BaseAddComponentAnnotationCheck extends BaseUpgradeCheck {

	@Override
	protected String format(
			String fileName, String absolutePath, String content)
		throws Exception {

		JavaClass javaClass = JavaClassParser.parseJavaClass(fileName, content);

		if (javaClass.hasAnnotation("Component")) {
			return content;
		}

		for (String extendedClassName : javaClass.getExtendedClassNames()) {
			if (isValidClassName(extendedClassName)) {
				return content.replaceFirst(
					"public class",
					joinLines(
						getAnnotationContent(
							absolutePath, extendedClassName, content,
							javaClass),
						"public class"));
			}
		}

		return content;
	}

	protected abstract String getAnnotationContent(
		String absolutePath, String className, String content,
		JavaClass javaClass);

	protected abstract boolean isValidClassName(String className);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy