/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.ext.java.client.core;
import org.eclipse.che.ide.ext.java.emul.FileSystem;
import org.eclipse.che.ide.ext.java.jdt.core.compiler.IProblem;
import org.eclipse.che.ide.ext.java.jdt.core.dom.AST;
import org.eclipse.che.ide.ext.java.jdt.core.dom.ASTNode;
import org.eclipse.che.ide.ext.java.jdt.core.dom.ASTParser;
import org.eclipse.che.ide.ext.java.jdt.core.dom.CompilationUnit;
import org.eclipse.che.ide.ext.java.worker.WorkerMessageHandler;
import com.googlecode.gwt.test.GwtModule;
import com.googlecode.gwt.test.GwtTestWithMockito;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;
import org.junit.Before;
import org.junit.Test;
/**
* @author Evgen Vidolob
*/
@GwtModule("org.eclipse.che.ide.ext.java.Java")
public class ParserTest extends GwtTestWithMockito {
private static FileSystem nameEnvironment =
new FileSystem(new String[]{System.getProperty("java.home") + "/lib/rt.jar"}, null, "UTF-8");
@Before
public void setUp() throws Exception {
new WorkerMessageHandler(null);
GwtReflectionUtils.setPrivateFieldValue(WorkerMessageHandler.get(), "nameEnvironment", nameEnvironment);
}
@Test
public void testAnnotationWithConstant() throws Exception {
StringBuilder builder = new StringBuilder();
builder.append("public class Test{\n");
builder.append("@java.beans.ConstructorProperties(java.beans.DesignMode.PROPERTYNAME)");
builder.append("public Test(){\n");
builder.append("}\n}\n");
CompilationUnit unit = parse(builder.toString());
for (IProblem problem : unit.getProblems()) {
System.out.println(problem.getMessage());
}
IProblem[] tasks = (IProblem[])unit.getProperty("tasks");
if(tasks != null) {
for (IProblem task : tasks) {
System.out.println(task.getMessage());
}
}
}
protected static CompilationUnit parse(String content){
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setUnitName("/P/org/test/Test.java");
parser.setSource(content);
parser.setNameEnvironment(nameEnvironment);
parser.setResolveBindings(true);
ASTNode ast = parser.createAST();
return (CompilationUnit)ast;
}
}