package org.eclipse.ecf.tests.remoteservice.rest; import java.io.NotSerializableException; import java.util.Map; import org.eclipse.ecf.core.IContainer; import org.eclipse.ecf.core.security.ConnectContextFactory; import org.eclipse.ecf.remoteservice.IRemoteCall; import org.eclipse.ecf.remoteservice.IRemoteService; import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration; import org.eclipse.ecf.remoteservice.client.IRemoteCallParameter; import org.eclipse.ecf.remoteservice.client.IRemoteCallable; import org.eclipse.ecf.remoteservice.client.IRemoteResponseDeserializer; import org.eclipse.ecf.remoteservice.client.IRemoteServiceClientContainerAdapter; import org.eclipse.ecf.remoteservice.client.RemoteCallParameter; import org.eclipse.ecf.remoteservice.rest.RestCallFactory; import org.eclipse.ecf.remoteservice.rest.RestCallableFactory; import org.eclipse.ecf.remoteservice.rest.client.HttpPutRequestType; @SuppressWarnings("unused") public class RestPutServiceTest extends AbstractRestTestCase { private String username = System.getProperty("rest.test.username","p126371rw"); private String password = System.getProperty("rest.test.password","demo"); private String uri = System.getProperty("rest.test.uri","http://phprestsql.sourceforge.net"); private String resourcePath = System.getProperty("rest.test.resourcePath","/tutorial/user/7"); private String method = System.getProperty("rest.test.method","putUser"); private IContainer container; private IRemoteServiceRegistration registration; @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); } public void testPutCallSync() throws Exception { // IRemoteService restClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registration.getReference()); // System.out.println("put uri="+uri+resourcePath); // String body = createBody(); // System.out.println("body="+body); // System.out.print("making remote method call="+method+"..."); // Object result = restClientService.callSync(RestCallFactory.createRestCall(method, new String[] { body })); // System.out.println("received result="+result); } private String createBody() { return "firstname=Scott\nsurname=Example\nemail=slewis@example.org\ncompany_uid=1"; } @Override protected void tearDown() throws Exception { super.tearDown(); registration.unregister(); container.disconnect(); } }