/******************************************************************************* * 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.worker; 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.messages.ComputeJavadocHandle; import org.eclipse.che.ide.ext.java.messages.JavadocHandleComputed; import com.google.gwt.webworker.client.messages.MessageFilter; /** * @author Evgen Vidolob */ public class WorkerJavadocHandleComputer implements MessageFilter.MessageRecipient<ComputeJavadocHandle> { private JavaParserWorker worker; private WorkerCuCache cuCache; public WorkerJavadocHandleComputer(JavaParserWorker worker, WorkerCuCache cuCache) { this.worker = worker; this.cuCache = cuCache; } @Override public void onMessageReceived(ComputeJavadocHandle message) { String filePath = message.getFilePath(); CompilationUnit cu = cuCache.getCompilationUnit(filePath); String source = cuCache.getSource(filePath); SelectionResult result; if (cu == null || source == null) { result = null; } else { SelectionRequestor requestor = new SelectionRequestor(cu, source); SelectionEngine selectionEngine = new SelectionEngine(WorkerMessageHandler.get().getNameEnvironment(), requestor, WorkerMessageHandler.get().getOptions()); String fileName = filePath.substring( filePath.lastIndexOf("/"), filePath.lastIndexOf('.')); selectionEngine.select(new org.eclipse.che.ide.ext.java.jdt.compiler.batch.CompilationUnit(source.toCharArray(), fileName, "UTF-8"), message.getOffset(), 0); result = requestor.getSelectionResult(); } JavadocHandleComputed respMessage = JavadocHandleComputed.make(); if(result != null){ respMessage.setId(message.id()).setKey(result.getKey()).setFqn(result.getFqn()).setOffset(result.getOffset()).setSource(result.isSource()).setDeclaration(result.isDeclaration()); } worker.sendMessage(respMessage.serialize()); } }