package er.rest.example.client;
import java.io.IOException;
import org.apache.commons.httpclient.HttpException;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSMutableDictionary;
import er.extensions.eof.ERXKeyFilter;
import er.rest.ERXNoOpRestDelegate;
import er.rest.ERXRestContext;
import er.rest.ERXRestNameRegistry;
import er.rest.ERXRestRequestNode;
import er.rest.IERXRestDelegate;
import er.rest.format.ERXRestFormat;
public class Client {
public static void main(String[] args) throws HttpException, IOException {
String baseURL = "http://localhost:8642/cgi-bin/WebObjects/RESTExample.woa/ra";
ERXRestNameRegistry.registry().setExternalNameForInternalName("Company", "ClientCompany");
IERXRestDelegate.Factory.setDefaultDelegate(new ERXNoOpRestDelegate());
IERXRestDelegate.Factory.setDelegateForEntityNamed(new ClientCompanyRestDelegate(), "ClientCompany", ClientCompany.class);
ERXRestClient client = new ERXRestClient(baseURL, new ERXRestContext());
ClientCompany c = client.objectWithPath("Company/1.json");
System.out.println("Client.main: single company = " + c);
Object obj = new ERXRestClient(client.baseURL(), new ERXRestContext(), false).objectWithPath("Pet/1.json");
System.out.println("Client.main: unknown class = " + obj);
NSArray<ClientCompany> comps = client.objectWithPath("Company.json", "ClientCompany");
System.out.println("Client.main: array of companies = " + comps);
c.setName("New Name");
client.updateObjectWithPath(c, ERXKeyFilter.filterWithAllRecursive(), "Company/1.json", ERXRestFormat.json());
ClientCompany updatedCompany = client.objectWithPath("Company/1.json");
System.out.println("Client.main: updated company = " + updatedCompany);
NSMutableDictionary<String, Object> dict = new NSMutableDictionary<>();
dict.setObjectForKey("Schrag", "lastName");
dict.setObjectForKey("Mike", "firstName");
dict.setObjectForKey(new NSDictionary<String, Object>("true", "nested"), "child");
dict.setObjectForKey(new NSArray<String>("a", "b"), "array");
String dictJSON = ERXRestFormat.json().toString(dict);
System.out.println("Client.main: dictionary as JSON " + dictJSON);
NSArray<?> list = new NSArray<String>("a", "b");
String arrayJSON = ERXRestFormat.json().toString(list);
System.out.println("Client.main: array as JSON " + arrayJSON);
ClientCompany newCompany = new ClientCompany();
newCompany.setName("Peters Pickles");
ERXRestRequestNode node = client.createObjectWithPath(newCompany, ERXKeyFilter.filterWithAllRecursive(), "Company.json", ERXRestFormat.json());
System.out.println("Client.main: The newly created company is: " + node.toString(ERXRestFormat.json(), new ERXRestContext()));
}
}