List of usage examples for org.eclipse.jdt.core IJavaProject getOption
String getOption(String optionName, boolean inheritJavaCoreOptions);
From source file:org.seasar.s2junit4plugin.wizard.S2JUnit4StubUtility.java
License:Apache License
public static boolean is50OrHigher(IJavaProject project) { return !isVersionLessThan(project.getOption(JavaCore.COMPILER_COMPLIANCE, true), JavaCore.VERSION_1_5); }
From source file:org.sonar.ide.eclipse.internal.jdt.JavaProjectConfigurator.java
License:Open Source License
private void configureJavaProject(IJavaProject javaProject, ProjectDefinition sonarProject) { Properties properties = sonarProject.getProperties(); String javaSource = javaProject.getOption(JavaCore.COMPILER_SOURCE, true); String javaTarget = javaProject.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true); properties.setProperty(CoreProperties.PROJECT_LANGUAGE_PROPERTY, Java.KEY); properties.setProperty("sonar.java.source", javaSource); LOG.info("Source Java version: {}", javaSource); properties.setProperty("sonar.java.target", javaTarget); LOG.info("Target Java version: {}", javaTarget); try {//from ww w. jav a 2s . c o m IClasspathEntry[] classPath = javaProject.getResolvedClasspath(true); for (IClasspathEntry entry : classPath) { switch (entry.getEntryKind()) { case IClasspathEntry.CPE_SOURCE: if (isSourceExcluded(entry)) { break; } String srcDir = getAbsolutePath(javaProject, entry.getPath()); LOG.debug("Source directory: {}", srcDir); sonarProject.addSourceDir(srcDir); if (entry.getOutputLocation() != null) { String binDir = getAbsolutePath(javaProject, entry.getOutputLocation()); LOG.debug("Binary directory: {}", binDir); sonarProject.addBinaryDir(binDir); } break; case IClasspathEntry.CPE_LIBRARY: String libDir = entry.getPath().toOSString(); LOG.debug("Library: {}", libDir); sonarProject.addLibrary(libDir); break; default: LOG.warn("Unhandled ClassPathEntry : {}", entry); break; } } String binDir = getAbsolutePath(javaProject, javaProject.getOutputLocation()); LOG.debug("Default binary directory: {}", binDir); sonarProject.addBinaryDir(binDir); } catch (JavaModelException e) { LOG.error(e.getMessage(), e); } }
From source file:org.sonar.ide.eclipse.jdt.internal.JavaProjectConfigurator.java
License:Open Source License
public void configureJavaProject(IJavaProject javaProject, Properties sonarProjectProperties, boolean isGreaterThan4_2) { String javaSource = javaProject.getOption(JavaCore.COMPILER_SOURCE, true); String javaTarget = javaProject.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true); if (!isGreaterThan4_2) { sonarProjectProperties.setProperty(SonarConfiguratorProperties.PROJECT_LANGUAGE_PROPERTY, "java"); }// w ww . java 2 s .c o m sonarProjectProperties.setProperty("sonar.java.source", javaSource); LOG.info("Source Java version: {}", javaSource); sonarProjectProperties.setProperty("sonar.java.target", javaTarget); LOG.info("Target Java version: {}", javaTarget); try { JavaProjectConfiguration configuration = new JavaProjectConfiguration(); configuration.dependentProjects().add(javaProject); addClassPathToSonarProject(javaProject, configuration, true); configurationToProperties(sonarProjectProperties, configuration); } catch (JavaModelException e) { LOG.error(e.getMessage(), e); } }
From source file:org.sonar.ide.eclipse.jdt.internal.JavaProjectConfiguratorTest.java
License:Open Source License
@Test public void shouldConfigureJavaSourceAndTarget() throws JavaModelException, IOException { IJavaProject project = mock(IJavaProject.class); Properties sonarProperties = new Properties(); when(project.getOption(JavaCore.COMPILER_SOURCE, true)).thenReturn("1.6"); when(project.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true)).thenReturn("1.6"); when(project.getResolvedClasspath(true)).thenReturn(new IClasspathEntry[] {}); when(project.getOutputLocation()).thenReturn(new Path(temp.newFolder("output").getAbsolutePath())); configurator.configureJavaProject(project, sonarProperties, true); assertTrue(sonarProperties.containsKey("sonar.java.source")); assertThat(sonarProperties.getProperty("sonar.java.source"), is("1.6")); assertTrue(sonarProperties.containsKey("sonar.java.target")); assertThat(sonarProperties.getProperty("sonar.java.target"), is("1.6")); }
From source file:org.sonar.ide.eclipse.jdt.internal.JavaProjectConfiguratorTest.java
License:Open Source License
@Test public void shouldConfigureSimpleProject() throws JavaModelException, IOException { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); File workspaceRoot = root.getLocation().toFile(); File projectRoot = new File(workspaceRoot, "myProject"); projectRoot.mkdir();/*from w w w . jav a2 s .c o m*/ File sourceFolder = new File(projectRoot, "src"); sourceFolder.mkdir(); File testFolder = new File(projectRoot, "test"); testFolder.mkdir(); File outputFolder = new File(projectRoot, "bin"); outputFolder.mkdir(); IJavaProject project = mock(IJavaProject.class); Properties sonarProperties = new Properties(); when(project.getOption(JavaCore.COMPILER_SOURCE, true)).thenReturn("1.6"); when(project.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true)).thenReturn("1.6"); when(project.getPath()).thenReturn(new Path(projectRoot.getAbsolutePath())); IClasspathEntry[] cpes = new IClasspathEntry[] { createCPE(IClasspathEntry.CPE_SOURCE, sourceFolder), createCPE(IClasspathEntry.CPE_SOURCE, testFolder) }; when(project.getResolvedClasspath(true)).thenReturn(cpes); when(project.getOutputLocation()).thenReturn(new Path(outputFolder.getAbsolutePath())); configurator.configureJavaProject(project, sonarProperties, true); // TODO Find a way to mock a project inside Eclipse // assertTrue(sonarProperties.containsKey("sonar.sources")); // assertThat(sonarProperties.getProperty("sonar.sources"), is(sourceFolder.getPath())); // assertTrue(sonarProperties.containsKey("sonar.tests")); // assertThat(sonarProperties.getProperty("sonar.tests"), is(testFolder.getPath())); // assertTrue(sonarProperties.containsKey("sonar.binaries")); // assertThat(sonarProperties.getProperty("sonar.binaries"), is(outputFolder.getPath())); }
From source file:org.sonarlint.eclipse.jdt.internal.JavaProjectConfigurator.java
License:Open Source License
public void configureJavaProject(IJavaProject javaProject, Map<String, String> sonarProjectProperties) { String javaSource = javaProject.getOption(JavaCore.COMPILER_SOURCE, true); String javaTarget = javaProject.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true); sonarProjectProperties.put("sonar.java.source", javaSource); sonarProjectProperties.put("sonar.java.target", javaTarget); try {/*from ww w.j ava 2s.com*/ JavaProjectConfiguration configuration = new JavaProjectConfiguration(); configuration.dependentProjects().add(javaProject); addClassPathToSonarProject(javaProject, configuration, true); configurationToProperties(sonarProjectProperties, configuration); } catch (JavaModelException e) { SonarLintCorePlugin.getDefault().error(e.getMessage(), e); } }
From source file:org.sonarlint.eclipse.jdt.internal.JavaProjectConfiguratorTest.java
License:Open Source License
@Test public void shouldConfigureJavaSourceAndTarget() throws JavaModelException, IOException { IJavaProject project = mock(IJavaProject.class); Map<String, String> sonarProperties = new HashMap<>(); when(project.getOption(JavaCore.COMPILER_SOURCE, true)).thenReturn("1.6"); when(project.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true)).thenReturn("1.6"); when(project.getResolvedClasspath(true)).thenReturn(new IClasspathEntry[] {}); when(project.getOutputLocation()).thenReturn(new Path(temp.newFolder("output").getAbsolutePath())); configurator.configureJavaProject(project, sonarProperties); assertThat(sonarProperties).containsKey("sonar.java.source"); assertThat(sonarProperties.get("sonar.java.source")).isEqualTo("1.6"); assertThat(sonarProperties).containsKey("sonar.java.target"); assertThat(sonarProperties.get("sonar.java.target")).isEqualTo("1.6"); }
From source file:org.sonarlint.eclipse.jdt.internal.JavaProjectConfiguratorTest.java
License:Open Source License
@Test public void shouldConfigureSimpleProject() throws JavaModelException, IOException { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); File workspaceRoot = root.getLocation().toFile(); File projectRoot = new File(workspaceRoot, "myProject"); projectRoot.mkdir();//from ww w . ja v a 2s.c o m File sourceFolder = new File(projectRoot, "src"); sourceFolder.mkdir(); File testFolder = new File(projectRoot, "test"); testFolder.mkdir(); File outputFolder = new File(projectRoot, "bin"); outputFolder.mkdir(); IJavaProject project = mock(IJavaProject.class); Map<String, String> sonarProperties = new HashMap<>(); when(project.getOption(JavaCore.COMPILER_SOURCE, true)).thenReturn("1.6"); when(project.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true)).thenReturn("1.6"); when(project.getPath()).thenReturn(new Path(projectRoot.getAbsolutePath())); IClasspathEntry[] cpes = new IClasspathEntry[] { createCPE(IClasspathEntry.CPE_SOURCE, sourceFolder), createCPE(IClasspathEntry.CPE_SOURCE, testFolder) }; when(project.getResolvedClasspath(true)).thenReturn(cpes); when(project.getOutputLocation()).thenReturn(new Path(outputFolder.getAbsolutePath())); configurator.configureJavaProject(project, sonarProperties); // TODO Find a way to mock a project inside Eclipse // assertTrue(sonarProperties.containsKey("sonar.sources")); // assertThat(sonarProperties.getProperty("sonar.sources"), is(sourceFolder.getPath())); // assertTrue(sonarProperties.containsKey("sonar.tests")); // assertThat(sonarProperties.getProperty("sonar.tests"), is(testFolder.getPath())); // assertTrue(sonarProperties.containsKey("sonar.binaries")); // assertThat(sonarProperties.getProperty("sonar.binaries"), is(outputFolder.getPath())); }
From source file:org.sonarlint.eclipse.jdt.internal.JavaProjectConfiguratorTest.java
License:Open Source License
@Test public void shouldConfigureProjectsWithCircularDependencies() throws CoreException, IOException { // the bug appeared when at least 3 projects were involved: the first project depends on the second one which has a circular dependency // towards the second one Map<String, String> sonarProperties = new HashMap<>(); // mock three projects that depend on each other final String project1Name = "project1"; final String project2Name = "project2"; final String project3Name = "project3"; IJavaProject project1 = mock(IJavaProject.class, Mockito.RETURNS_DEEP_STUBS); IJavaProject project2 = mock(IJavaProject.class, Mockito.RETURNS_DEEP_STUBS); IJavaProject project3 = mock(IJavaProject.class, Mockito.RETURNS_DEEP_STUBS); // these are required during the call to configureJavaProject when(project1.getOption(JavaCore.COMPILER_SOURCE, true)).thenReturn("1.6"); when(project1.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true)).thenReturn("1.6"); when(project1.getProject().getName()).thenReturn(project1Name); when(project2.getProject().getName()).thenReturn(project2Name); when(project3.getProject().getName()).thenReturn(project3Name); // create three classpathEntries, one for each Project IClasspathEntry entryProject1 = mock(IClasspathEntry.class, Mockito.RETURNS_DEEP_STUBS); IClasspathEntry entryProject2 = mock(IClasspathEntry.class, Mockito.RETURNS_DEEP_STUBS); IClasspathEntry entryProject3 = mock(IClasspathEntry.class, Mockito.RETURNS_DEEP_STUBS); when(entryProject1.getEntryKind()).thenReturn(IClasspathEntry.CPE_PROJECT); when(entryProject1.getPath().segment(0)).thenReturn(project1Name); when(entryProject2.getEntryKind()).thenReturn(IClasspathEntry.CPE_PROJECT); when(entryProject2.getPath().segment(0)).thenReturn(project2Name); when(entryProject3.getEntryKind()).thenReturn(IClasspathEntry.CPE_PROJECT); when(entryProject3.getPath().segment(0)).thenReturn(project3Name); // project1 depends on project2, which depends on project3, which depends on project2 IClasspathEntry[] classpath1 = new IClasspathEntry[] { entryProject2 }; IClasspathEntry[] classpath2 = new IClasspathEntry[] { entryProject3 }; IClasspathEntry[] classpath3 = new IClasspathEntry[] { entryProject2 }; when(project1.getResolvedClasspath(true)).thenReturn(classpath1); when(project2.getResolvedClasspath(true)).thenReturn(classpath2); when(project3.getResolvedClasspath(true)).thenReturn(classpath3); // mock the JavaModel IJavaModel javaModel = mock(IJavaModel.class); when(javaModel.getJavaProject(project1Name)).thenReturn(project1); when(javaModel.getJavaProject(project2Name)).thenReturn(project2); when(javaModel.getJavaProject(project3Name)).thenReturn(project3); when(project1.getJavaModel()).thenReturn(javaModel); when(project2.getJavaModel()).thenReturn(javaModel); when(project3.getJavaModel()).thenReturn(javaModel); // this call should not fail (StackOverFlowError before patch) configurator.configureJavaProject(project1, sonarProperties); }
From source file:org.sonarlint.eclipse.jdt.internal.JdtUtils.java
License:Open Source License
public void configureJavaProject(IJavaProject javaProject, IPreAnalysisContext context) { String javaSource = javaProject.getOption(JavaCore.COMPILER_SOURCE, true); String javaTarget = javaProject.getOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, true); context.setAnalysisProperty("sonar.java.source", javaSource); context.setAnalysisProperty("sonar.java.target", javaTarget); try {// w w w . j a v a 2 s. co m JavaProjectConfiguration configuration = new JavaProjectConfiguration(); configuration.dependentProjects().add(javaProject); addClassPathToSonarProject(javaProject, configuration, true); configurationToProperties(context, configuration); } catch (JavaModelException e) { SonarLintLogger.get().error(e.getMessage(), e); } }