1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.onami.factoryannotation;
20
21 import static org.junit.Assert.assertEquals;
22
23 import org.apache.onami.factoryannotation.annotations.SecondLayer;
24 import org.apache.onami.factoryannotation.impl.SecondLayerEntity;
25 import org.apache.onami.factoryannotation.impl.SecondLayerIdentityProvider;
26 import org.junit.Test;
27
28 import com.google.inject.Guice;
29 import com.google.inject.Injector;
30 import com.google.inject.TypeLiteral;
31
32 public class TypeLiteralTestCase
33 {
34
35 @Test
36 public void testTypeLiteralValueProvider()
37 {
38 final Injector injector = Guice.createInjector( new FactoryAnnotationModule()
39 {
40 @Override
41 protected void configure()
42 {
43 bindIdentity( TypeLiteral.get( SecondLayerEntity.class ) ).annotatedWith( SecondLayer.class ).toAnnotationFactory( new SecondLayerIdentityProvider() );
44 }
45 } );
46
47 final SecondLayerInjectable injectable = new SecondLayerInjectable();
48 injector.injectMembers( injectable );
49
50 assertEquals( "SecondLayerEntity1", injectable.layerEntity1.getValue() );
51 assertEquals( 1, injectable.layerEntity1.getId() );
52 assertEquals( "SecondLayerEntity2", injectable.layerEntity2.getValue() );
53 assertEquals( 2, injectable.layerEntity2.getId() );
54 }
55
56 public class SecondLayerInjectable
57 {
58 @SecondLayer( byId = 1 )
59 private SecondLayerEntity layerEntity1;
60
61 @SecondLayer( byId = 2 )
62 private SecondLayerEntity layerEntity2;
63 }
64
65 }