ResourceReferenceMetaData homePageRef = resRefs.get(MyServlet.class.getName() + "/homePage");
assertNotNull(homePageRef);
assertEquals("java.net.URL", homePageRef.getType());
Set<ResourceInjectionTargetMetaData> homePageRefTargets = homePageRef.getInjectionTargets();
assertEquals(1, homePageRefTargets.size());
ResourceInjectionTargetMetaData homePageRefTarget = homePageRefTargets.iterator().next();
assertEquals(MyServlet.class.getName(), homePageRefTarget.getInjectionTargetClass());
assertEquals("setHomePage", homePageRefTarget.getInjectionTargetName());
ResourceReferenceMetaData googleHome = resRefs.get("googleHome");
assertNotNull(googleHome);
assertEquals("java.net.URL", googleHome.getType());
assertEquals("http://www.google.com", googleHome.getMappedName());
ResourceReferenceMetaData defaultDS = resRefs.get("jdbc/ds");
assertNotNull(defaultDS);
assertEquals("javax.sql.DataSource", defaultDS.getType());
assertEquals("java:/DefaultDS", defaultDS.getMappedName());
ResourceEnvironmentReferencesMetaData resEnvRefs = env.getResourceEnvironmentReferences();
assertEquals(1, resEnvRefs.size());
ResourceEnvironmentReferenceMetaData contextRef = resEnvRefs.get(MyServlet.class.getName() + "/utx");
assertNotNull(contextRef);
assertEquals(UserTransaction.class.getName(), contextRef.getType());
Set<ResourceInjectionTargetMetaData> contextRefTargets = contextRef.getInjectionTargets();
assertEquals(1, contextRefTargets.size());
ResourceInjectionTargetMetaData contextRefTarget = contextRefTargets.iterator().next();
assertEquals(MyServlet.class.getName(), contextRefTarget.getInjectionTargetClass());
assertEquals("utx", contextRefTarget.getInjectionTargetName());
EnvironmentEntriesMetaData envEntries = env.getEnvironmentEntries();
assertEquals(2, envEntries.size());
EnvironmentEntryMetaData pi = envEntries.get(MyServlet.class.getName()+ "/pi");
assertEquals("3.14159", pi.getValue());
// TODO: should this be java.lang.Double?
assertEquals("double", pi.getType());
MessageDestinationReferencesMetaData msgRefs = env.getMessageDestinationReferences();
assertEquals(1, msgRefs.size());
MessageDestinationReferenceMetaData mailQueue = msgRefs.get(MyServlet.class.getName() + "/mailQueue");
assertNotNull(mailQueue);
assertEquals("javax.jms.Queue", mailQueue.getType());
// WebServiceRef(s)
ServiceReferencesMetaData serviceRefs = env.getServiceReferences();
assertNotNull(serviceRefs);
assertEquals(6, serviceRefs.size());
ServiceReferenceMetaData serviceRef1 = serviceRefs.get("service2");
assertNotNull(serviceRef1);
assertEquals(TestEndpointService.class.getName(), serviceRef1.getServiceInterface());
assertEquals(MyServlet.class.getName(), serviceRef1.getServiceRefType());
assertNull(serviceRef1.getInjectionTargets());
ServiceReferenceMetaData serviceRef2 = serviceRefs.get("port1");
assertNotNull(serviceRef2);
assertEquals(TestEndpointService.class.getName(), serviceRef2.getServiceInterface());
assertEquals(TestEndpoint.class.getName(), serviceRef2.getServiceRefType());
assertNull(serviceRef2.getInjectionTargets());
ServiceReferenceMetaData serviceRef3 = serviceRefs
.get("org.jboss.test.metadata.annotation.web.MyServlet/service");
assertNotNull(serviceRef3);
assertEquals(MyServlet.class.getDeclaredField("service"), serviceRef3.getAnnotatedElement());
assertNull(serviceRef3.getServiceInterface());
assertEquals(TestEndpointService.class.getName(), serviceRef3.getServiceRefType());
//InjectionTarget on a FIELD
Set<ResourceInjectionTargetMetaData> injectionTargets3 = serviceRef3.getInjectionTargets();
assertNotNull(injectionTargets3);
assertEquals(1, injectionTargets3.size());
ResourceInjectionTargetMetaData injectionTarget = new ResourceInjectionTargetMetaData();
injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
injectionTarget.setInjectionTargetName("service");
assertTrue(injectionTargets3.contains(injectionTarget));
ServiceReferenceMetaData serviceRef4 = serviceRefs.get(MyServlet.class.getName() + "/endpoint");
assertNotNull(serviceRef4);
assertEquals(MyServlet.class.getDeclaredField("endpoint"), serviceRef4.getAnnotatedElement());
assertNull(serviceRef4.getServiceInterface());
assertEquals(TestEndpoint.class.getName(), serviceRef4.getServiceRefType());
//InjectionTarget on a FIELD
Set<ResourceInjectionTargetMetaData> injectionTargets4 = serviceRef4.getInjectionTargets();
assertNotNull(injectionTargets4);
assertEquals(1, injectionTargets4.size());
injectionTarget = new ResourceInjectionTargetMetaData();
injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
injectionTarget.setInjectionTargetName("endpoint");
assertTrue(injectionTargets4.contains(injectionTarget));
ServiceReferenceMetaData serviceRef5 = serviceRefs.get(MyServlet.class.getName() + "/anotherWebRef");
assertNotNull(serviceRef5);
assertNull(serviceRef5.getServiceInterface());
assertEquals(TestEndpoint.class.getName(), serviceRef5.getServiceRefType());
//InjectionTarget on a METHOD
Set<ResourceInjectionTargetMetaData> injectionTargets5 = serviceRef5.getInjectionTargets();
assertNotNull(injectionTargets5);
assertEquals(1, injectionTargets5.size());
injectionTarget = new ResourceInjectionTargetMetaData();
injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
injectionTarget.setInjectionTargetName("setAnotherWebRef");
assertTrue(injectionTargets5.contains(injectionTarget));
ServiceReferenceMetaData serviceRef6 = serviceRefs.get("method/service");
assertNotNull(serviceRef6);
assertNull(serviceRef6.getServiceInterface());
assertEquals(TestEndpoint.class.getName(), serviceRef6.getServiceRefType());
//InjectionTarget on a METHOD
Set<ResourceInjectionTargetMetaData> injectionTargets6 = serviceRef6.getInjectionTargets();
assertNotNull(injectionTargets6);
assertEquals(1, injectionTargets6.size());
injectionTarget = new ResourceInjectionTargetMetaData();
injectionTarget.setInjectionTargetClass(MyServlet.class.getName());
injectionTarget.setInjectionTargetName("setWebRef");
assertTrue(injectionTargets6.contains(injectionTarget));
}