Skip to content

Commit

Permalink
CHE-4013. Remove deprecation related to org.eclipse.che.api.promises.…
Browse files Browse the repository at this point in the history
…client.callback.PromiseHelper

Signed-off-by: Roman Nikitenko <rnikitenko@codenvy.com>
  • Loading branch information
RomanNikitenko committed Mar 3, 2017
1 parent 6a644e7 commit 1ba2d12
Show file tree
Hide file tree
Showing 13 changed files with 258 additions and 554 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,19 @@
package org.eclipse.che.ide.api.project;

import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;

import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.api.project.shared.dto.CopyOptions;
import org.eclipse.che.api.project.shared.dto.ItemReference;
import org.eclipse.che.api.project.shared.dto.MoveOptions;
import org.eclipse.che.api.project.shared.dto.SourceEstimation;
import org.eclipse.che.api.project.shared.dto.TreeElement;
import org.eclipse.che.api.promises.client.Operation;
import org.eclipse.che.api.promises.client.OperationException;
import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.api.promises.client.PromiseError;
import org.eclipse.che.api.promises.client.callback.AsyncPromiseHelper;
import org.eclipse.che.api.promises.client.callback.PromiseHelper;
import org.eclipse.che.api.workspace.shared.dto.NewProjectConfigDto;
import org.eclipse.che.api.workspace.shared.dto.ProjectConfigDto;
import org.eclipse.che.api.workspace.shared.dto.SourceStorageDto;
import org.eclipse.che.ide.MimeType;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.machine.WsAgentStateController;
import org.eclipse.che.ide.dto.DtoFactory;
import org.eclipse.che.ide.resource.Path;
Expand All @@ -40,7 +34,6 @@
import org.eclipse.che.ide.ui.loaders.request.LoaderFactory;
import org.eclipse.che.ide.websocket.Message;
import org.eclipse.che.ide.websocket.MessageBuilder;
import org.eclipse.che.ide.websocket.MessageBus;
import org.eclipse.che.ide.websocket.WebSocketException;
import org.eclipse.che.ide.websocket.rest.RequestCallback;

Expand All @@ -51,6 +44,7 @@
import static com.google.gwt.http.client.RequestBuilder.DELETE;
import static com.google.gwt.http.client.RequestBuilder.POST;
import static com.google.gwt.http.client.RequestBuilder.PUT;
import static org.eclipse.che.api.promises.client.callback.AsyncPromiseHelper.createFromAsyncRequest;
import static org.eclipse.che.ide.MimeType.APPLICATION_JSON;
import static org.eclipse.che.ide.rest.HTTPHeader.ACCEPT;
import static org.eclipse.che.ide.rest.HTTPHeader.CONTENTTYPE;
Expand Down Expand Up @@ -141,41 +135,31 @@ public Promise<List<SourceEstimation>> resolveSources(Path path) {
@Override
public Promise<Void> importProject(final Path path,
final SourceStorageDto source) {
return PromiseHelper.newPromise(new AsyncPromiseHelper.RequestCall<Void>() {
@Override
public void makeCall(final AsyncCallback<Void> callback) {
final String url = PROJECT + IMPORT + path(path.toString());

final Message message = new MessageBuilder(POST, url).data(dtoFactory.toJson(source))
.header(CONTENTTYPE, APPLICATION_JSON)
.build();

wsAgentStateController.getMessageBus().then(new Operation<MessageBus>() {
@Override
public void apply(MessageBus messageBus) throws OperationException {
try {
messageBus.send(message, new RequestCallback<Void>() {
@Override
protected void onSuccess(Void result) {
callback.onSuccess(result);
}

@Override
protected void onFailure(Throwable exception) {
callback.onFailure(exception);
}
});
} catch (WebSocketException e) {
callback.onFailure(e);
return createFromAsyncRequest(callback -> {
final String url = PROJECT + IMPORT + path(path.toString());
final Message message = new MessageBuilder(POST, url).data(dtoFactory.toJson(source))
.header(CONTENTTYPE, APPLICATION_JSON)
.build();

wsAgentStateController.getMessageBus().then(messageBus -> {
try {
messageBus.send(message, new RequestCallback<Void>() {
@Override
protected void onSuccess(Void result) {
callback.onSuccess(result);
}

@Override
protected void onFailure(Throwable exception) {
callback.onFailure(exception);
}
}
}).catchError(new Operation<PromiseError>() {
@Override
public void apply(PromiseError arg) throws OperationException {
callback.onFailure(arg.getCause());
}
});
}
});
} catch (WebSocketException e) {
callback.onFailure(e);
}
}).catchError(error -> {
callback.onFailure(error.getCause());
});
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,21 @@
*******************************************************************************/
package org.eclipse.che.ide.api.project;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;

import org.eclipse.che.ide.api.machine.DevMachine;
import org.eclipse.che.api.project.shared.dto.ProjectTypeDto;
import org.eclipse.che.api.promises.client.Function;
import org.eclipse.che.api.promises.client.FunctionException;
import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.api.promises.client.callback.AsyncPromiseHelper.RequestCall;
import org.eclipse.che.ide.api.project.ProjectTypeServiceClient;
import org.eclipse.che.ide.api.machine.DevMachine;
import org.eclipse.che.ide.rest.AsyncRequestFactory;
import org.eclipse.che.ide.rest.DtoUnmarshallerFactory;
import org.eclipse.che.ide.ui.loaders.request.LoaderFactory;

import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import static org.eclipse.che.api.promises.client.callback.PromiseHelper.newCallback;
import static org.eclipse.che.api.promises.client.callback.PromiseHelper.newPromise;
import static org.eclipse.che.ide.MimeType.APPLICATION_JSON;
import static org.eclipse.che.ide.rest.HTTPHeader.ACCEPT;

Expand All @@ -54,46 +49,28 @@ protected ProjectTypeServiceClientImpl(LoaderFactory loaderFactory,

@Override
public Promise<List<ProjectTypeDto>> getProjectTypes(@NotNull final DevMachine devMachine) {
return newPromise(new RequestCall<List<ProjectTypeDto>>() {
@Override
public void makeCall(AsyncCallback<List<ProjectTypeDto>> callback) {
getProjectTypes(devMachine, callback);
}
}).then(new Function<List<ProjectTypeDto>, List<ProjectTypeDto>>() {
return fetchProjectTypes(devMachine).then(new Function<List<ProjectTypeDto>, List<ProjectTypeDto>>() {
@Override
public List<ProjectTypeDto> apply(List<ProjectTypeDto> arg) throws FunctionException {
final List<ProjectTypeDto> descriptors = new ArrayList<>();
for (ProjectTypeDto descriptor : arg) {
descriptors.add(descriptor);
}
return descriptors;
return arg.stream().collect(Collectors.toList());
}
});
}

private void getProjectTypes(DevMachine devMachine, @NotNull AsyncCallback<List<ProjectTypeDto>> callback) {
private Promise<List<ProjectTypeDto>> fetchProjectTypes(@NotNull final DevMachine devMachine) {
final String url = devMachine.getWsAgentBaseUrl() + "/project-type";
asyncRequestFactory.createGetRequest(url)
.header(ACCEPT, APPLICATION_JSON)
.loader(loaderFactory.newLoader("Getting info about registered project types..."))
.send(newCallback(callback, dtoUnmarshallerFactory.newListUnmarshaller(ProjectTypeDto.class)));
return asyncRequestFactory.createGetRequest(url)
.header(ACCEPT, APPLICATION_JSON)
.loader(loaderFactory.newLoader("Getting info about registered project types..."))
.send(dtoUnmarshallerFactory.newListUnmarshaller(ProjectTypeDto.class));
}

@Override
public Promise<ProjectTypeDto> getProjectType(final DevMachine devMachine, final String id) {
return newPromise(new RequestCall<ProjectTypeDto>() {
@Override
public void makeCall(AsyncCallback<ProjectTypeDto> callback) {
getProjectType(devMachine, id, callback);
}
});
}

private void getProjectType(@NotNull DevMachine devMachine, @NotNull String id, @NotNull AsyncCallback<ProjectTypeDto> callback) {
public Promise<ProjectTypeDto> getProjectType(@NotNull DevMachine devMachine, @NotNull String id) {
final String url = devMachine.getWsAgentBaseUrl() + "/project-type/" + id;
asyncRequestFactory.createGetRequest(url)
.header(ACCEPT, APPLICATION_JSON)
.loader(loaderFactory.newLoader("Getting info about project type..."))
.send(newCallback(callback, dtoUnmarshallerFactory.newUnmarshaller(ProjectTypeDto.class)));
return asyncRequestFactory.createGetRequest(url)
.header(ACCEPT, APPLICATION_JSON)
.loader(loaderFactory.newLoader("Getting info about project type..."))
.send(dtoUnmarshallerFactory.newUnmarshaller(ProjectTypeDto.class));
}
}
Loading

0 comments on commit 1ba2d12

Please sign in to comment.