001 /*
002 * SonarQube, open source software quality management tool.
003 * Copyright (C) 2008-2014 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * SonarQube is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * SonarQube is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
019 */
020 package org.sonar.java.api;
021
022 import org.apache.commons.lang.StringUtils;
023 import org.sonar.api.resources.Project;
024
025 /**
026 * @since 2.6
027 * @deprecated in 4.2. See API provided by Java plugins.
028 */
029 @Deprecated
030 public final class JavaUtils {
031
032 public static final String PACKAGE_SEPARATOR = ".";
033 public static final String DEFAULT_PACKAGE = "[default]";
034
035 /**
036 * All sensors executed after this barrier are sure that all Java resources are indexed.
037 */
038 public static final String BARRIER_BEFORE_SQUID = "BEFORE_SQUID";
039
040 /**
041 * Sensors executed before this barrier must not rely on index. No Java resources are indexed.
042 * Value is 'squid' in order to be backward-compatible with Sensor.FLAG_SQUID_ANALYSIS.
043 */
044 public static final String BARRIER_AFTER_SQUID = "squid";
045
046 /**
047 * To determine value of this property use {@link #getSourceVersion(Project)}.
048 */
049 public static final String JAVA_SOURCE_PROPERTY = "sonar.java.source";
050
051 /**
052 * Default value for property {@link #JAVA_SOURCE_PROPERTY}.
053 */
054 public static final String JAVA_SOURCE_DEFAULT_VALUE = "1.5";
055
056 /**
057 * To determine value of this property use {@link #getTargetVersion(Project)}.
058 */
059 public static final String JAVA_TARGET_PROPERTY = "sonar.java.target";
060
061 /**
062 * Default value for property {@link #JAVA_TARGET_PROPERTY}.
063 */
064 public static final String JAVA_TARGET_DEFAULT_VALUE = "1.5";
065
066 private JavaUtils() {
067 // only static methods
068 }
069
070 public static String abbreviatePackage(String packageName) {
071 String[] parts = StringUtils.split(packageName, PACKAGE_SEPARATOR);
072 StringBuilder sb = new StringBuilder();
073 if (parts.length >= 1) {
074 sb.append(parts[0]);
075 }
076 for (int index = 1; index < parts.length; index++) {
077 sb.append(PACKAGE_SEPARATOR).append(parts[index].charAt(0));
078 }
079 return sb.toString();
080 }
081
082 public static String getSourceVersion(Project project) {
083 String version = project.getConfiguration() != null ? project.getConfiguration().getString(JAVA_SOURCE_PROPERTY) : null;
084 return StringUtils.isNotBlank(version) ? version : JAVA_SOURCE_DEFAULT_VALUE;
085 }
086
087 public static String getTargetVersion(Project project) {
088 String version = project.getConfiguration() != null ? project.getConfiguration().getString(JAVA_TARGET_PROPERTY) : null;
089 return StringUtils.isNotBlank(version) ? version : JAVA_TARGET_DEFAULT_VALUE;
090 }
091 }