/*******************************************************************************
* 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.model;
import org.eclipse.che.commons.lang.IoUtil;
import org.eclipse.che.ide.ext.java.client.core.quickfix.TestOptions;
import org.eclipse.che.ide.ext.java.emul.FileSystem;
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.jdt.internal.codeassist.SelectionEngine;
import org.eclipse.che.ide.ext.java.jdt.internal.core.SelectionRequestor;
import org.eclipse.che.ide.ext.java.jdt.internal.core.SelectionResult;
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 java.io.IOException;
import java.io.InputStream;
/**
* @author Evgen Vidolob
*/
@GwtModule("org.eclipse.che.ide.ext.java.Java")
public abstract class AbstractJavaModelTests extends GwtTestWithMockito{
protected static FileSystem nameEnvironment =
new FileSystem(new String[]{System.getProperty("java.home") + "/lib/rt.jar"}, null, "UTF-8");
@Before
public void createEnvironment() throws Exception {
new WorkerMessageHandler(null);
GwtReflectionUtils.setPrivateFieldValue(WorkerMessageHandler.get(), "nameEnvironment", nameEnvironment);
}
public static CompilationUnit parse(String content, String name){
ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setUnitName(name);
parser.setSource(content);
parser.setNameEnvironment(nameEnvironment);
parser.setResolveBindings(true);
ASTNode ast = parser.createAST();
return (CompilationUnit)ast;
}
public static SelectionResult codeSelect(String content, String className, String selectAt, String selection){
org.eclipse.che.ide.ext.java.jdt.core.dom.CompilationUnit compilationUnit = parse(content, className);
SelectionRequestor requestor = new SelectionRequestor(compilationUnit, content);
SelectionEngine selectionEngine = new SelectionEngine(nameEnvironment, requestor, TestOptions.getDefaultOptions());
int start = content.indexOf(selectAt);
int length = selection.length();
selectionEngine.select(new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(content.toCharArray(), className + ".java", "UTF-8"),start, start + length -1);
return requestor.getSelectionResult();
}
public static String getCompilationUnit(String path){
InputStream stream = null;
try {
stream = AbstractJavaModelTests.class.getResource(path).openStream();
return IoUtil.readStream(stream);
} catch (IOException e) {
e.printStackTrace();
if(stream != null){
try {
stream.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return "";
}
}