package org.odata4j.test.integration.producer.custom;
import javax.ws.rs.core.MediaType;
import org.core4j.Func1;
import org.junit.After;
import org.junit.Before;
import org.odata4j.consumer.ODataConsumer;
import org.odata4j.format.FormatType;
import org.odata4j.producer.ODataProducer;
import org.odata4j.producer.resources.DefaultODataProducerProvider;
import org.odata4j.producer.server.ODataServer;
import org.odata4j.test.integration.AbstractRuntimeTest;
/**
*
*/
public abstract class CustomBaseTest extends AbstractRuntimeTest {
public CustomBaseTest(RuntimeFacadeType type) {
super(type);
}
protected static final String endpointUri = "http://localhost:8810/CustomTest.svc/";
protected static ODataServer server;
protected static CustomProducer producer;
@Before
public void setUpClass() throws Exception {
this.setUpClass(50, null);
}
public void setUpClass(int maxResults, Func1<ODataProducer, ODataProducer> producerModification) throws Exception {
producer = new CustomProducer();
ODataProducer p = producer;
if (producerModification != null) {
p = producerModification.apply(producer);
}
DefaultODataProducerProvider.setInstance(p);
server = this.rtFacade.startODataServer(endpointUri);
}
protected ODataConsumer createConsumer(FormatType format) {
return this.rtFacade.createODataConsumer(endpointUri, format);
}
public void dumpResourceJSON(String path) {
dumpResource(path, FormatType.JSON);
}
public void dumpResource(String path, FormatType ft) {
String uri = endpointUri + path;
switch (ft) {
case JSON:
this.rtFacade.accept(uri, MediaType.APPLICATION_JSON_TYPE);
break;
case ATOM:
this.rtFacade.accept(uri, MediaType.APPLICATION_ATOM_XML_TYPE);
break;
default:
break;
}
System.out.println(this.rtFacade.getWebResource(uri));
}
@After
public void tearDownClass() throws Exception {
if (server != null) {
server.stop();
server = null;
}
producer = null;
}
}