/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.source.formatter.checks; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.util.StringUtil; import com.liferay.portal.kernel.util.Validator; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author Hugo Huijser */ public class JavaSystemExceptionCheck extends BaseFileCheck { @Override protected String doProcess( String fileName, String absolutePath, String content) { if (content.contains("SystemException")) { content = _fixSystemExceptions(content); } return content; } private String _fixSystemExceptions(String content) { Matcher matcher = _throwsSystemExceptionPattern.matcher(content); if (!matcher.find()) { return content; } String match = matcher.group(); String replacement = null; String afterException = matcher.group(3); String beforeException = matcher.group(2); if (Validator.isNull(beforeException) && Validator.isNull(afterException)) { replacement = matcher.group(4); String beforeThrows = matcher.group(1); if (Validator.isNotNull(StringUtil.trim(beforeThrows))) { replacement = beforeThrows + replacement; } } else if (Validator.isNull(beforeException)) { replacement = StringUtil.replaceFirst( match, "SystemException, ", StringPool.BLANK); } else { replacement = StringUtil.replaceFirst( match, ", SystemException", StringPool.BLANK); } if (match.equals(replacement)) { return content; } return _fixSystemExceptions( StringUtil.replaceFirst(content, match, replacement)); } private final Pattern _throwsSystemExceptionPattern = Pattern.compile( "(\n\t+.*)throws(.*) SystemException(.*)( \\{|;\n)"); }