package com.sun.jersey.osgi.tests;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import java.net.URI;
import static org.junit.Assert.assertEquals;
import java.util.logging.Logger;
import javax.ws.rs.core.UriBuilder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Inject;
import org.ops4j.pax.exam.junit.MavenConfiguredJUnit4TestRunner;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@RunWith(MavenConfiguredJUnit4TestRunner.class)
public class BasicOsgiIntegrationTest {
private static final Logger LOGGER = Logger.getLogger(BasicOsgiIntegrationTest.class.getName());
private static final int port = getEnvVariable("JERSEY_HTTP_PORT", 8765);
private static final String CONTEXT = "/jersey";
private static final URI baseUri = UriBuilder.fromUri("http://localhost").port(port).path(CONTEXT).build();
@Inject private BundleContext bundleContext;
@Test
public void testSimpleResource() throws Exception {
for (Bundle b : bundleContext.getBundles()) {
System.out.println(String.format("bid:%s, bname:%s, bstate:%s",
b.getBundleId(),
b.getSymbolicName(),
bundleStateName(b.getState())));
}
WebResource r = resource().path("/simple");
String result = r.get(String.class);
System.out.println("RESULT = " + result);
assertEquals("OK", result);
}
private static String bundleStateName(int state) {
switch(state) {
case Bundle.ACTIVE : return "ACTIVE";
case Bundle.INSTALLED : return "INSTALLED";
case Bundle.RESOLVED : return "RESOLVED";
case Bundle.STARTING : return "STARTING";
case Bundle.STOPPING : return "STOPPING";
case Bundle.UNINSTALLED : return "UNINSTALLED";
default : return "NOT_DEFINED";
}
}
public WebResource resource() {
final Client c = Client.create();
final WebResource rootResource = c.resource(baseUri);
return rootResource;
}
public static int getEnvVariable(final String varName, int defaultValue) {
if (null == varName) {
return defaultValue;
}
String varValue = System.getenv(varName);
if (null != varValue) {
try {
return Integer.parseInt(varValue);
}catch (NumberFormatException e) {
// will return default value bellow
}
}
return defaultValue;
}
}