This project has retired. For details please refer to its
Attic page.
JUDDI_101_ClientSubscriptionCallbackAPIIntegrationTest xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.juddi.v3.tck;
17
18 import java.util.ArrayList;
19 import java.util.Iterator;
20 import java.util.List;
21 import java.util.Map;
22 import javax.xml.datatype.DatatypeFactory;
23 import org.apache.commons.configuration.ConfigurationException;
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.apache.juddi.api_v3.Node;
27 import org.apache.juddi.jaxb.PrintUDDI;
28 import org.apache.juddi.v3.client.UDDIConstants;
29 import org.apache.juddi.v3.client.config.UDDIClerk;
30 import org.apache.juddi.v3.client.config.UDDIClient;
31 import org.apache.juddi.v3.client.subscription.ISubscriptionCallback;
32 import org.apache.juddi.v3.client.subscription.SubscriptionCallbackListener;
33 import org.apache.juddi.v3_service.JUDDIApiPortType;
34 import org.junit.AfterClass;
35 import org.junit.Assert;
36 import org.junit.Assume;
37 import org.junit.BeforeClass;
38 import org.junit.Ignore;
39 import org.junit.Test;
40 import org.uddi.api_v3.BindingTemplate;
41 import org.uddi.api_v3.BusinessEntity;
42 import org.uddi.api_v3.BusinessService;
43 import org.uddi.api_v3.BusinessServices;
44 import org.uddi.api_v3.FindBusiness;
45 import org.uddi.api_v3.FindQualifiers;
46 import org.uddi.api_v3.Name;
47 import org.uddi.api_v3.TModel;
48 import org.uddi.sub_v3.Subscription;
49 import org.uddi.sub_v3.SubscriptionFilter;
50 import org.uddi.sub_v3.SubscriptionResultsList;
51 import org.uddi.v3_service.UDDISecurityPortType;
52
53
54
55
56
57 public class JUDDI_101_ClientSubscriptionCallbackAPIIntegrationTest implements ISubscriptionCallback {
58
59 private static final Log logger = LogFactory.getLog(JUDDI_101_ClientSubscriptionCallbackAPIIntegrationTest.class);
60 private static UDDIClient manager;
61 private static UDDIClerk clerk;
62 private static UDDISecurityPortType security = null;
63 private static JUDDIApiPortType publisher = null;
64
65 private static String authInfo = null;
66
67 @AfterClass
68 public static void stopManager() throws ConfigurationException {
69
70 }
71
72 @BeforeClass
73 public static void startManager() throws ConfigurationException {
74 if (!TckPublisher.isEnabled()) return;
75 manager = new UDDIClient();
76 manager.start();
77 Iterator<Node> iterator = manager.getClientConfig().getUDDINodeList().iterator();
78 while (iterator.hasNext()){
79 Node next = iterator.next();
80 logger.info("NODE " + next.getClientName() + " " + next.getName() + " " + next.getProxyTransport());
81 }
82 Iterator<Map.Entry<String, UDDIClerk>> iterator1 = manager.getClientConfig().getUDDIClerks().entrySet().iterator();
83 while (iterator1.hasNext()){
84 Map.Entry<String, UDDIClerk> next = iterator1.next();
85 logger.info("CLERK " + next.getKey() + " " + next.getValue().getName());
86 }
87 clerk = manager.getClerk("uddiv3");
88 clerk.setPassword(TckPublisher.getJoePassword());
89 clerk.setPublisher(TckPublisher.getJoePublisherId());
90 clerk.setIsPasswordEncrypted(false);
91 try {
92
93 } catch (Exception e) {
94 logger.error(e.getMessage(), e);
95 Assert.fail(e.getMessage());
96 }
97 JUDDI_300_MultiNodeIntegrationTest.testSetupReplicationConfig();
98 }
99
100 @Test
101 @Ignore
102 public void SubscriptionCallbackTest1() throws Exception {
103
104 if (!TckPublisher.isEnabled()) return;
105 reset();
106
107 TModel createKeyGenator = UDDIClerk.createKeyGenator("somebusiness", "A test key domain SubscriptionCallbackTest1", "SubscriptionCallbackTest1");
108 Assert.assertNotNull(createKeyGenator);
109 clerk.register(createKeyGenator);
110 logger.info("Registered tModel keygen: " + createKeyGenator.getTModelKey());
111
112
113 BusinessEntity be = new BusinessEntity();
114 be.setBusinessKey("uddi:somebusiness:somebusinesskey");
115 be.getName().add(new Name("somebusiness SubscriptionCallbackTest1", null));
116 be.setBusinessServices(new BusinessServices());
117 BusinessService bs = new BusinessService();
118 bs.setBusinessKey("uddi:somebusiness:somebusinesskey");
119 bs.setServiceKey("uddi:somebusiness:someservicekey");
120 bs.getName().add(new Name("service SubscriptionCallbackTest1", null));
121 be.getBusinessServices().getBusinessService().add(bs);
122 BusinessEntity register = clerk.register(be);
123 logger.info("Registered business keygen: " + register.getBusinessKey());
124
125
126 BindingTemplate start = SubscriptionCallbackListener.start(manager, "uddiv3");
127 Assert.assertNotNull(start);
128
129 if (TckCommon.isDebug()) {
130 PrintUDDI<BindingTemplate> p = new PrintUDDI<BindingTemplate>();
131 logger.info(p.print(start));
132 }
133
134
135 SubscriptionCallbackListener.registerCallback(this);
136
137 Subscription sub = new Subscription();
138
139 sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
140 sub.setBindingKey(start.getBindingKey());
141 sub.setSubscriptionFilter(new SubscriptionFilter());
142 sub.getSubscriptionFilter().setFindBusiness(new FindBusiness());
143 sub.getSubscriptionFilter().getFindBusiness().setFindQualifiers(new FindQualifiers());
144 sub.getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
145 sub.getSubscriptionFilter().getFindBusiness().getName().add(new Name(UDDIConstants.WILDCARD, null));
146
147 Subscription subscription = clerk.register(sub);
148 if (TckCommon.isDebug()) {
149 PrintUDDI<Subscription> p2 = new PrintUDDI<Subscription>();
150 logger.info(p2.print(subscription));
151 }
152 Assert.assertNotNull(subscription);
153 Assert.assertNotNull(subscription.getBindingKey());
154 Assert.assertNotNull(subscription.getSubscriptionKey());
155 logger.info("Registered subscription key: " + (subscription.getSubscriptionKey()) + " bindingkey: " + subscription.getBindingKey());
156
157
158 BusinessEntity businessDetail = clerk.getBusinessDetail("uddi:somebusiness:somebusinesskey");
159 Assert.assertNotNull(businessDetail);
160 Assert.assertNotNull(businessDetail.getBusinessKey());
161 Assert.assertNotNull(businessDetail.getBusinessServices());
162 Assert.assertNotNull(businessDetail.getBusinessServices().getBusinessService().get(0));
163 Assert.assertNotNull(businessDetail.getBusinessServices().getBusinessService().get(0).getBindingTemplates());
164 Assert.assertNotNull(businessDetail.getBusinessServices().getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0));
165 if (TckCommon.isDebug()) {
166 PrintUDDI<BusinessEntity> p2 = new PrintUDDI<BusinessEntity>();
167 logger.info(p2.print(businessDetail));
168 }
169
170
171 BusinessEntity trigger = new BusinessEntity();
172 trigger.getName().add(new Name("somebusiness trigger SubscriptionCallbackTest1", null));
173 BusinessEntity triggered = clerk.register(trigger);
174
175 long wait = TckPublisher.getSubscriptionTimeout();
176 while (wait > 0 && notifications == 0) {
177 Thread.sleep(1000);
178 System.out.print(".");
179 wait--;
180 }
181
182 logger.info("Callback check." + notifications);
183
184 SubscriptionCallbackListener.stop(manager, "uddiv3", start.getBindingKey());
185 clerk.unRegisterSubscription(subscription.getSubscriptionKey());
186 clerk.unRegisterTModel(createKeyGenator.getTModelKey());
187
188 clerk.unRegisterBusiness(triggered.getBusinessKey());
189 clerk.unRegisterBusiness(businessDetail.getBusinessKey());
190
191 logger.info("Callback check." + notifications);
192 Assert.assertTrue("No notifications received! " + notifications, notifications > 0);
193
194 }
195
196 private static void reset() {
197 notifications = 0;
198 notificationsMessages.clear();
199 logger.info("Callback check." + notifications);
200 }
201 private static int notifications = 0;
202 private static List<SubscriptionResultsList> notificationsMessages = new ArrayList<SubscriptionResultsList>();
203
204 @Override
205 public void handleCallback(SubscriptionResultsList body) {
206 if (TckCommon.isDebug()) {
207 PrintUDDI<SubscriptionResultsList> p2 = new PrintUDDI<SubscriptionResultsList>();
208 logger.info(p2.print(body));
209 }
210
211 notifications++;
212 notificationsMessages.add(body);
213
214 logger.info("Callback received." + notifications);
215 }
216
217 @Override
218 public void notifyEndpointStopped() {
219 logger.info("Notify endpoints stopped");
220 }
221
222 }