Skip to content

Commit

Permalink
Handle project updated and rework project sync accordingly
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Mäder <tmader@redhat.com>
  • Loading branch information
tsmaeder committed Nov 23, 2018
1 parent a40138c commit 0b384f4
Show file tree
Hide file tree
Showing 26 changed files with 492 additions and 427 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,8 @@ public boolean supportGoInto() {
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ResourceNode)) return false;
if (o == null) return false;
if (o.getClass() != getClass()) return false;
ResourceNode<?> that = (ResourceNode<?>) o;
return Objects.equal(resource, that.resource);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,20 @@
*/
package org.eclipse.che.ide.ext.java.client;

import static org.eclipse.che.api.core.model.workspace.WorkspaceStatus.RUNNING;
import static org.eclipse.che.ide.api.action.IdeActions.GROUP_ASSISTANT;
import static org.eclipse.che.ide.api.action.IdeActions.GROUP_FILE_NEW;
import static org.eclipse.che.ide.api.action.IdeActions.GROUP_PROJECT;
import static org.eclipse.che.ide.api.action.IdeActions.GROUP_RIGHT_STATUS_PANEL;

import com.google.inject.Inject;
import com.google.inject.name.Named;
import com.google.web.bindery.event.shared.EventBus;
import org.eclipse.che.ide.api.action.ActionManager;
import org.eclipse.che.ide.api.action.DefaultActionGroup;
import org.eclipse.che.ide.api.action.IdeActions;
import org.eclipse.che.ide.api.action.Separator;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.constraints.Anchor;
import org.eclipse.che.ide.api.constraints.Constraints;
import org.eclipse.che.ide.api.extension.Extension;
Expand All @@ -31,6 +34,7 @@
import org.eclipse.che.ide.api.icon.IconRegistry;
import org.eclipse.che.ide.api.keybinding.KeyBindingAgent;
import org.eclipse.che.ide.api.keybinding.KeyBuilder;
import org.eclipse.che.ide.api.workspace.event.WsAgentServerRunningEvent;
import org.eclipse.che.ide.ext.java.client.action.FileStructureAction;
import org.eclipse.che.ide.ext.java.client.action.FindUsagesAction;
import org.eclipse.che.ide.ext.java.client.action.MarkDirAsSourceAction;
Expand All @@ -48,6 +52,7 @@
import org.eclipse.che.ide.ext.java.client.refactoring.move.CutJavaSourceAction;
import org.eclipse.che.ide.ext.java.client.refactoring.move.MoveAction;
import org.eclipse.che.ide.ext.java.client.refactoring.rename.RenameRefactoringAction;
import org.eclipse.che.ide.ext.java.client.service.CustomNotificationReceiver;
import org.eclipse.che.ide.ext.java.shared.Constants;
import org.eclipse.che.ide.util.browser.UserAgent;
import org.eclipse.che.ide.util.input.KeyCodeMap;
Expand All @@ -70,6 +75,9 @@ public class JavaExtension {
@Inject
public JavaExtension(
FileTypeRegistry fileTypeRegistry,
AppContext appContext,
EventBus eventBus,
CustomNotificationReceiver customNotificationReceiver,
@Named("JavaFileType") FileType javaFile,
@Named("JavaClassFileType") FileType classFile,
@Named("JspFileType") FileType jspFile) {
Expand All @@ -78,6 +86,16 @@ public JavaExtension(
fileTypeRegistry.registerFileType(javaFile);
fileTypeRegistry.registerFileType(jspFile);
fileTypeRegistry.registerFileType(classFile);

eventBus.addHandler(
WsAgentServerRunningEvent.TYPE,
e -> {
customNotificationReceiver.subscribe();
});

if (appContext.getWorkspace().getStatus() == RUNNING) {
customNotificationReceiver.subscribe();
}
}

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import java.util.Map;
import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.api.promises.client.PromiseProvider;
import org.eclipse.che.ide.ext.java.client.project.classpath.ClasspathChangedEvent;
import org.eclipse.che.ide.ext.java.client.project.classpath.ProjectClasspathChangedEvent;
import org.eclipse.che.ide.ext.java.client.service.JavaLanguageExtensionServiceClient;
import org.eclipse.che.jdt.ls.extension.api.dto.ClasspathEntry;

Expand All @@ -29,7 +29,8 @@
* @author Valeriy Svydenko
*/
@Singleton
public class ClasspathContainer implements ClasspathChangedEvent.ClasspathChangedHandler {
public class ClasspathContainer
implements ProjectClasspathChangedEvent.ProjectClasspathChangedHandler {
public static String JRE_CONTAINER = "org.eclipse.jdt.launching.JRE_CONTAINER";

private final JavaLanguageExtensionServiceClient extensionService;
Expand All @@ -45,7 +46,7 @@ public ClasspathContainer(
this.promiseProvider = promiseProvider;
classpath = new HashMap<>();

eventBus.addHandler(ClasspathChangedEvent.TYPE, this);
eventBus.addHandler(ProjectClasspathChangedEvent.TYPE, this);
}

/**
Expand Down Expand Up @@ -73,7 +74,7 @@ public Promise<List<ClasspathEntry>> getClasspathEntries(String projectPath) {
}

@Override
public void onClasspathChanged(ClasspathChangedEvent event) {
classpath.put(event.getPath(), promiseProvider.resolve(event.getEntries()));
public void onProjectClasspathChanged(ProjectClasspathChangedEvent event) {
classpath.remove(event.getProject());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
import org.eclipse.che.ide.ext.java.client.resource.SourceFolderInterceptor;
import org.eclipse.che.ide.ext.java.client.search.FindUsagesView;
import org.eclipse.che.ide.ext.java.client.search.FindUsagesViewImpl;
import org.eclipse.che.ide.ext.java.client.service.CustomNotificationReceiver;
import org.eclipse.che.ide.ext.java.client.settings.compiler.ErrorsWarningsPreferenceManager;
import org.eclipse.che.ide.ext.java.client.settings.compiler.JavaCompilerPreferenceManager;
import org.eclipse.che.ide.ext.java.client.settings.compiler.JavaCompilerPreferencePresenter;
Expand Down Expand Up @@ -167,6 +168,8 @@ protected void configure() {
GinMultibinder.newSetBinder(binder(), RenamingSupport.class)
.addBinding()
.to(JavaSourceRenameValidator.class);

bind(CustomNotificationReceiver.class).asEagerSingleton();
}

@Provides
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,17 @@

import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.google.web.bindery.event.shared.EventBus;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.api.promises.client.PromiseProvider;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.notification.NotificationManager;
import org.eclipse.che.ide.api.resources.Project;
import org.eclipse.che.ide.api.resources.Resource;
import org.eclipse.che.ide.dto.DtoFactory;
import org.eclipse.che.ide.ext.java.client.service.JavaLanguageExtensionServiceClient;
import org.eclipse.che.ide.ext.java.shared.ClasspathEntryKind;
import org.eclipse.che.ide.project.node.ProjectClasspathChangedEvent;
import org.eclipse.che.jdt.ls.extension.api.dto.ClasspathEntry;
import org.eclipse.che.plugin.java.plain.client.service.ClasspathUpdaterServiceClient;

Expand All @@ -44,15 +40,11 @@
* @author Valeriy Svydenko
*/
@Singleton
public class ClasspathResolver
implements ProjectClasspathChangedEvent.ProjectClasspathChangedHandler {
public class ClasspathResolver {
private static final String WORKSPACE_PATH = "/projects";

private final ClasspathUpdaterServiceClient classpathUpdater;
private final JavaLanguageExtensionServiceClient extensionService;
private final PromiseProvider promiseProvider;
private final NotificationManager notificationManager;
private final EventBus eventBus;
private final AppContext appContext;
private final DtoFactory dtoFactory;

Expand All @@ -64,21 +56,13 @@ public class ClasspathResolver
@Inject
public ClasspathResolver(
ClasspathUpdaterServiceClient classpathUpdater,
JavaLanguageExtensionServiceClient extensionService,
PromiseProvider promiseProvider,
NotificationManager notificationManager,
EventBus eventBus,
AppContext appContext,
DtoFactory dtoFactory) {
this.classpathUpdater = classpathUpdater;
this.extensionService = extensionService;
this.promiseProvider = promiseProvider;
this.notificationManager = notificationManager;
this.eventBus = eventBus;
this.appContext = appContext;
this.dtoFactory = dtoFactory;

this.eventBus.addHandler(ProjectClasspathChangedEvent.getType(), this);
}

/** Reads and parses classpath entries. */
Expand Down Expand Up @@ -160,22 +144,4 @@ public Set<String> getSources() {
public Set<String> getProjects() {
return projects;
}

@Override
public void onProjectClasspathChanged(ProjectClasspathChangedEvent event) {
getEntriesFromServer(event.getProject())
.then(
entries -> {
eventBus.fireEvent(new ClasspathChangedEvent(event.getProject(), entries));
});
}

private Promise<List<ClasspathEntry>> getEntriesFromServer(String projectPath) {
return extensionService
.classpathTree(projectPath)
.catchErrorPromise(
error -> {
return promiseProvider.reject(error);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
package org.eclipse.che.ide.project.node;
package org.eclipse.che.ide.ext.java.client.project.classpath;

import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
Expand All @@ -24,14 +24,7 @@ public interface ProjectClasspathChangedHandler extends EventHandler {
void onProjectClasspathChanged(ProjectClasspathChangedEvent event);
}

private static Type<ProjectClasspathChangedHandler> TYPE;

public static Type<ProjectClasspathChangedHandler> getType() {
if (TYPE == null) {
TYPE = new Type<>();
}
return TYPE;
}
public static final Type<ProjectClasspathChangedHandler> TYPE = new Type<>();

public ProjectClasspathChangedEvent(String projectPath) {
this.projectPath = projectPath;
Expand Down
Loading

0 comments on commit 0b384f4

Please sign in to comment.