List of usage examples for org.eclipse.jdt.core ToolFactory createScanner
@SuppressWarnings("javadoc") public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel, String complianceLevel)
From source file:org.jboss.tools.arquillian.core.internal.util.ArquillianSearchEngine.java
License:Open Source License
private static void createProblem(String message, IType type, IMethodBinding deploymentMethod, Integer severity, int line) throws CoreException { if (severity == null || type == null || type.getJavaProject() == null) { return;/*from w ww. j a va 2s . co m*/ } boolean enable = ArquillianUtility.isValidatorEnabled(type.getJavaProject().getProject()); if (!enable) { return; } ICompilationUnit cu = type.getCompilationUnit(); if (cu == null) { return; } IResource resource = cu.getResource(); if (resource == null) { return; } IMarker marker = resource.createMarker(ArquillianConstants.MARKER_RESOURCE_ID); String[] allNames = { IMarker.MESSAGE, IMarker.SEVERITY, IJavaModelMarker.ID, IMarker.CHAR_START, IMarker.CHAR_END, IMarker.LINE_NUMBER, IMarker.SOURCE_ID, }; Object[] allValues = new Object[allNames.length]; int index = 0; allValues[index++] = message; allValues[index++] = severity; allValues[index++] = ArquillianConstants.ARQUILLIAN_PROBLEM_ID; int start = -1; int end = -1; if (line != -1) { IJavaProject project = cu.getJavaProject(); String sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true); String complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true); IScanner scanner = ToolFactory.createScanner(false, false, true, sourceLevel, complianceLevel); scanner.setSource(cu.getBuffer().getCharacters()); if (scan(scanner)) { start = scanner.getLineStart(line); end = scanner.getLineEnd(line); } } if (start == -1 || end == -1) { IJavaElement javaElement = deploymentMethod.getJavaElement(); ISourceRange range = null; if (javaElement instanceof IMember) { IMember member = (IMember) javaElement; if (javaElement != null) { try { range = member.getNameRange(); } catch (JavaModelException e) { if (e.getJavaModelStatus().getCode() != IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST) { throw e; } if (!CharOperation.equals(javaElement.getElementName().toCharArray(), TypeConstants.PACKAGE_INFO_NAME)) { throw e; } } } } start = range == null ? 0 : range.getOffset(); end = range == null ? 1 : start + range.getLength(); } allValues[index++] = new Integer(start); // start allValues[index++] = new Integer(end > 0 ? end + 1 : end); // end allValues[index++] = new Integer(line); // line number allValues[index++] = ArquillianConstants.SOURCE_ID; marker.setAttributes(allNames, allValues); }