[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openejb-cvs
Subject:    [2/3] tomee git commit: feat(Examples): added explanation about qualifier
From:       jgallimore () apache ! org
Date:       2018-12-31 17:02:36
Message-ID: 9eca3acfa5cf46a883b4f2260189ef63 () git ! apache ! org
[Download RAW message or body]

feat(Examples): added explanation about qualifier

Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/a7c27083
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/a7c27083
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/a7c27083

Branch: refs/heads/master
Commit: a7c270833cdacb6addb964e60687a96c76f3b978
Parents: dd25de0
Author: Mattheus Cassundé <mattheus.089@gmail.com>
Authored: Mon Dec 31 12:52:30 2018 -0300
Committer: GitHub <noreply@github.com>
Committed: Mon Dec 31 12:52:30 2018 -0300

----------------------------------------------------------------------
 examples/cdi-qualifier/README.adoc | 83 ++++++++++++++++++++++++++++++++-
 1 file changed, 82 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/a7c27083/examples/cdi-qualifier/README.adoc
                
----------------------------------------------------------------------
diff --git a/examples/cdi-qualifier/README.adoc b/examples/cdi-qualifier/README.adoc
index ee14b1b..fe9b8a5 100644
--- a/examples/cdi-qualifier/README.adoc
+++ b/examples/cdi-qualifier/README.adoc
@@ -16,4 +16,85 @@ In this example, we have an interface `Payment` and theirs \
implementations:  
 In our test (Payment Test) we inject only the interface Payment, without the \
Qualifier feature the CDI would not known which implementation to inject in test.  
-We created a **Qualifier** called `PaymentQualifier` a single qualifier with only \
one difference, the annotation `@Qualifier`: \ No newline at end of file
+We created a **Qualifier** called `PaymentQualifier` a single qualifier with only \
one difference, the annotation `@Qualifier`. +
+....
+@Retention(RUNTIME)
+@Target({ TYPE, FIELD, METHOD })
+@Qualifier
+public @interface PaymentQualifier {
+
+	PaymentType type();	
+}
+....
+
+This qualifier has a method named `type()`, this method will help the CDI to inject \
correctly implementation. see this enum: +
+....
+public enum PaymentType {
+
+	CASH,
+	CREDITCARD
+}
+....
+
+now see an implementation
+
+....
+@PaymentQualifier(type=PaymentType.CASH)
+public class Cash implements Payment {
+
+	@Override
+	public String pay() {
+		
+		return "cash";
+	}
+}
+....
+
+Each implementation should marked with this qualifier.
+
+How to inject? see simplicity
+
+....
+public class PaymentTest {
+
+    private static EJBContainer container;
+
+    @Inject
+    @PaymentQualifier(type=PaymentType.CREDITCARD) //qualifier informing the CDI \
about the correctly implementation +    private Payment paymentCreditCard;
+    
+    @Inject
+    @PaymentQualifier(type=PaymentType.CASH) //qualifier informing the CDI about the \
correctly implementation +    private Payment paymentCash;
+
+    @BeforeClass
+    public static void start() {
+        container = EJBContainer.createEJBContainer();
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        container.getContext().bind("inject", this);
+    }
+
+    @Test
+    public void mustReturnCreditCard() {
+    	
+        assertEquals(paymentCreditCard.pay(), "creditCard");
+    }
+    
+    @Test
+    public void mustReturnCash() {
+    	
+        assertEquals(paymentCash.pay(), "cash");
+    }
+
+    @AfterClass
+    public static void stop() {
+        container.close();
+    }
+}
+
+....


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic