use of org.eclipse.ecf.remoteservice.IRemoteCall in project ecf by eclipse.
the class RestPutServiceTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
// Create container for service URI
container = createRestContainer(uri);
// Get adapter and set authentication info
IRemoteServiceClientContainerAdapter adapter = (IRemoteServiceClientContainerAdapter) getRemoteServiceClientContainerAdapter(container);
// Setup authentication
adapter.setConnectContextForAuthentication(ConnectContextFactory.createUsernamePasswordConnectContext(username, password));
// Setup response deserializer to do absolutely nothing (return null). Note this is specific to this service.
adapter.setResponseDeserializer(new IRemoteResponseDeserializer() {
public Object deserializeResponse(String endpoint, IRemoteCall call, IRemoteCallable callable, Map responseHeaders, byte[] responseBody) throws NotSerializableException {
return null;
}
});
// Create callable and register
IRemoteCallable callable = RestCallableFactory.createCallable(method, resourcePath, new IRemoteCallParameter[] { new RemoteCallParameter("body") }, new HttpPutRequestType(HttpPutRequestType.STRING_REQUEST_ENTITY, "application/xml", -1, "UTF-8"));
// register callable
registration = adapter.registerCallables(new IRemoteCallable[] { callable }, null);
}
use of org.eclipse.ecf.remoteservice.IRemoteCall in project ecf by eclipse.
the class TwitterRemoteServiceTest method createRestResource.
private IRemoteResponseDeserializer createRestResource() {
return new IRemoteResponseDeserializer() {
public Object deserializeResponse(String uri, IRemoteCall call, IRemoteCallable callable, Map responseHeaders, byte[] responseBody) throws NotSerializableException {
try {
JSONArray timeline = new JSONArray(new String(responseBody));
List statuses = new ArrayList();
for (int i = 0; i < timeline.length(); i++) {
try {
JSONObject jsonObject = timeline.getJSONObject(i);
String source = jsonObject.getString("source");
String text = jsonObject.getString("text");
String createdString = jsonObject.getString("created_at");
IUserStatus status = new UserStatus(createdString, source, text);
statuses.add(status);
} catch (JSONException e) {
throw new NotSerializableException("Cannot process response json representation:" + e.getMessage());
}
}
return (IUserStatus[]) statuses.toArray(new IUserStatus[statuses.size()]);
} catch (JSONException e) {
throw new NotSerializableException("JSON array parse exception: " + e.getMessage());
}
}
};
}
use of org.eclipse.ecf.remoteservice.IRemoteCall in project ecf by eclipse.
the class ReflectiveRemoteServiceHandler method executeMethodInvocationDialog.
protected void executeMethodInvocationDialog(final Class cls, final IRemoteService remoteService) {
final MethodInvocationDialog mid = new MethodInvocationDialog((Shell) null, cls);
if (mid.open() == Window.OK) {
final int timeout = (mid.getTimeout() > 0) ? mid.getTimeout() : 30000;
final String methodName = mid.getMethod().getName();
final Object[] methodArgs = mid.getMethodArguments();
final IRemoteCall remoteCall = new IRemoteCall() {
public String getMethod() {
return methodName;
}
public Object[] getParameters() {
return methodArgs;
}
public long getTimeout() {
return timeout;
}
};
final int invokeType = mid.getInvocationType();
try {
switch(invokeType) {
case MethodInvocationDialog.ASYNC_FIRE_AND_GO:
remoteService.callAsync(remoteCall);
break;
case MethodInvocationDialog.ASYNC_FUTURE_RESULT:
invokeFuture(cls, remoteService, remoteCall);
break;
case MethodInvocationDialog.ASYNC_LISTENER:
invokeAsyncListener(cls, remoteService, remoteCall);
break;
case MethodInvocationDialog.OSGI_SERVICE_PROXY:
throw new UnsupportedOperationException();
// break;
case MethodInvocationDialog.REMOTE_SERVICE_PROXY:
throw new UnsupportedOperationException();
// break;
case MethodInvocationDialog.SYNCHRONOUS:
invokeSync(cls, remoteService, remoteCall);
break;
default:
break;
}
} catch (final Exception e) {
showException(e);
}
}
}
Aggregations