package glaze.spi; import glaze.client.sync.SyncClient; import glaze.mime.ContentTypeEx; import glaze.spi.Named; import glaze.spi.Registry; import glaze.spi.ServiceProvider; import org.apache.http.entity.ContentType; import org.testng.Assert; import org.testng.annotations.Test; import com.fasterxml.jackson.databind.ObjectMapper; public class TestRegistry { @Named("myapi") private class MyProvider implements ServiceProvider<String> { @Override public Class<String> serviceClass() { return String.class; } @Override public String serviceImpl() { return "Hello"; } } @Test public void init() { Assert.assertNotNull(Registry.lookup(SyncClient.class)); Assert.assertNotNull(Registry.lookupMapper(ContentType.APPLICATION_JSON)); Assert.assertNotNull(Registry.lookupMapper(ContentType.APPLICATION_JSON.getMimeType())); } @Test public void namespace() { MyProvider stringProvider = new MyProvider(); Registry reg = Registry.getOrCreate(stringProvider); reg.register(String.class, stringProvider.serviceImpl()); reg.logState(); Assert.assertEquals(reg.namespace(), "myapi"); Assert.assertEquals(Registry.lookup("myapi", String.class).toString(), "Hello"); Registry.reset(); } @Test public void register() { Registry registry = Registry.instance(); registry.register(String.class, "Hello"); Assert.assertEquals(registry.unregister(String.class), "Hello"); Assert.assertFalse(registry.isMapperRegistered(ContentTypeEx.SMILE)); Assert.assertTrue(registry.isMapperRegistered(ContentType.APPLICATION_JSON)); ObjectMapper mapper = new ObjectMapper(); registry.registerMapper("any/one", mapper); Assert.assertEquals(registry.unregisterMapper("any/one"), mapper); registry.registerMapper(ContentType.APPLICATION_SVG_XML, mapper); Assert.assertEquals(registry.unregisterMapper(ContentType.APPLICATION_SVG_XML), mapper); Registry.reset(); } }