Example usage for org.eclipse.jdt.core ToolFactory createScanner

List of usage examples for org.eclipse.jdt.core ToolFactory createScanner

Introduction

In this page you can find the example usage for org.eclipse.jdt.core ToolFactory createScanner.

Prototype

@SuppressWarnings("javadoc") 
public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace,
        boolean recordLineSeparator, String sourceLevel, String complianceLevel) 

Source Link

Document

Create a scanner, indicating the level of detail requested for tokenizing.

Usage

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);
}