This project has retired. For details please refer to its Attic page.
TckTModel xref
View Javadoc
1   /*
2    * Copyright 2001-2009 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *      http://www.apache.org/licenses/LICENSE-2.0
8    * 
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.apache.juddi.v3.tck;
16  
17  import java.util.HashSet;
18  import java.util.Iterator;
19  import static junit.framework.Assert.assertEquals;
20  
21  import java.util.List;
22  import java.util.Set;
23  import javax.xml.bind.JAXB;
24  
25  import org.apache.commons.logging.Log;
26  import org.apache.commons.logging.LogFactory;
27  import org.apache.juddi.jaxb.EntityCreator;
28  import org.junit.Assert;
29  import org.uddi.api_v3.DeleteTModel;
30  import org.uddi.api_v3.FindTModel;
31  import org.uddi.api_v3.GetTModelDetail;
32  import org.uddi.api_v3.OverviewDoc;
33  import org.uddi.api_v3.SaveTModel;
34  import org.uddi.api_v3.TModel;
35  import org.uddi.api_v3.TModelDetail;
36  import org.uddi.api_v3.TModelList;
37  import org.uddi.v3_service.UDDIInquiryPortType;
38  import org.uddi.v3_service.UDDIPublicationPortType;
39  
40  /**
41   * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
42   * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
43   */
44  public class TckTModel {
45  
46          public static final String JOE_PUBLISHER_TMODEL_XML = "uddi_data/joepublisher/tModelKeyGen.xml";
47          public static final String JOE_PUBLISHER_TMODEL_XML_SUBSCRIPTION3 = "uddi_data/joepublisher/FindTmodelTest.xml";
48          public static final String JOE_PUBLISHER_TMODEL_SUBSCRIPTION3_TMODEL_KEY = "uddi:uddi.joepublisher.com:tmodelone";
49          /**
50           * "uddi:uddi.joepublisher.com:"
51           */
52          public final static String JOE_PUBLISHER_KEY_PREFIX = "uddi:uddi.joepublisher.com:";
53          final static String JOE_PUBLISHER_TMODEL_KEY = "uddi:uddi.joepublisher.com:keygenerator";
54          final static String MARY_PUBLISHER_TMODEL_XML = "uddi_data/marypublisher/tModelKeyGen.xml";
55          final static String MARY_PUBLISHER_TMODEL_KEY = "uddi:uddi.marypublisher.com:keygenerator";
56          public final static String MARY_KEY_PREFIX="uddi:uddi.marypublisher.com:";
57          final static String SAM_SYNDICATOR_TMODEL_XML = "uddi_data/samsyndicator/tModelKeyGen.xml";
58          final static String SAM_SYNDICATOR_TMODEL_KEY = "uddi:www.samco.com:keygenerator";
59          final static String TMODEL_PUBLISHER_TMODEL_XML = "uddi_data/tmodels/tModelKeyGen.xml";
60  
61          final static String TMODEL_PUBLISHER_TMODEL_KEY_ROOT = "uddi:tmodelkey:keygenerator";
62          final static String TMODEL_PUBLISHER_TMODEL_XML_PARENT = "uddi_data/tmodels/tmodelsKeyGenParent.xml";
63          
64          final static String TMODEL_PUBLISHER_TMODEL_KEY = "uddi:tmodelkey:categories:keygenerator";
65          
66  
67          final static String FIND_TMODEL_XML = "uddi_data/find/findTModel1.xml";
68          final static String FIND_TMODEL_XML_BY_CAT = "uddi_data/find/findTModelByCategoryBag.xml";
69          public final static String TMODELS_XML = "uddi_data/tmodels/tmodels.xml";
70          public final static String RIFTSAW_PUBLISHER_TMODEL_XML = "uddi_data/bpel/riftsaw/tModelKeyGen.xml";
71          public final static String RIFTSAW_PUBLISHER_TMODEL_KEY = "uddi:riftsaw.jboss.org:keygenerator";
72          public final static String RIFTSAW_CUST_PORTTYPE_TMODEL_XML = "uddi_data/bpel/riftsaw/tModelCustomerPortType.xml";
73          public final static String RIFTSAW_CUST_PORTTYPE_TMODEL_KEY = "uddi:riftsaw.jboss.org:CustomerInterface_portType";
74          public final static String RIFTSAW_AGENT_PORTTYPE_TMODEL_XML = "uddi_data/bpel/riftsaw/tModelAgentPortType.xml";
75          public final static String RIFTSAW_AGENT_PORTTYPE_TMODEL_KEY = "uddi:riftsaw.jboss.org:TravelAgentInterface_portType";
76          public final static String RIFTSAW_PROCESS_TMODEL_XML = "uddi_data/bpel/riftsaw/tModelProcess.xml";
77          public final static String RIFTSAW_PROCESS_TMODEL_KEY = "uddi:riftsaw.jboss.org:ReservationAndBookingTicketsProcess";
78          private Log logger = LogFactory.getLog(this.getClass());
79          private UDDIPublicationPortType publication = null;
80          private UDDIInquiryPortType inquiry = null;
81          private Set<String> keyscreated = new HashSet<String>();
82  
83          public TckTModel(UDDIPublicationPortType publication,
84               UDDIInquiryPortType inquiry) {
85                  super();
86                  this.publication = publication;
87                  this.inquiry = inquiry;
88          }
89  
90          /**
91           * saves a tmodel using the tModelXml parameter as a file path
92           *
93           * @param authInfo
94           * @param tModelXml this is a relative file path
95           */
96          public void saveTModels(String authInfo, String tModelXml) {
97  
98                  // Add tModels
99                  try {
100                         SaveTModel st = (org.uddi.api_v3.SaveTModel) EntityCreator.buildFromDoc(tModelXml, "org.uddi.api_v3");
101 
102                         for (int i = 0; i < st.getTModel().size(); i++) {
103                                  saveTModel(authInfo, st.getTModel().get(i), false);
104                         }
105                         //st.setAuthInfo(authInfo);
106                         //publication.saveTModel(st);
107 
108                 } catch (Exception e) {
109                         logger.error(e.getMessage(), e);
110                         Assert.fail("No exception should be thrown");
111                 }
112         }
113 
114         public TModel saveTModel(String authInfo, TModel tmIn, boolean force) {
115                 boolean exists = false;
116                 GetTModelDetail gt1 = new GetTModelDetail();
117                 gt1.getTModelKey().add(tmIn.getTModelKey());
118                 try {
119                         TModelDetail td1 = inquiry.getTModelDetail(gt1);
120                         if (td1 != null && !td1.getTModel().isEmpty()) {
121                                 if (!td1.getTModel().get(0).isDeleted()) {
122                                         exists = true;
123                                 } else {
124                                         logger.info("The tModel with key " + tmIn.getTModelKey() + " exists already, but is flagged as deleted. Overwritting");
125                                 }
126                         }
127                 } catch (Exception ex) {
128                 }
129 
130                 if (!exists || force) // Add the tModel
131                 {
132                         try {
133                                 SaveTModel st = new SaveTModel();
134                                 st.setAuthInfo(authInfo);
135 
136                                 st.getTModel().add(tmIn);
137                                 publication.saveTModel(st);
138 
139                                 keyscreated.add(tmIn.getTModelKey());
140                                 // Now get the entity and check the values
141                                 GetTModelDetail gt = new GetTModelDetail();
142                                 gt.getTModelKey().add(tmIn.getTModelKey());
143                                 TModelDetail td = inquiry.getTModelDetail(gt);
144                                 List<org.uddi.api_v3.TModel> tmOutList = td.getTModel();
145                                 org.uddi.api_v3.TModel tmOut = tmOutList.get(0);
146 
147                                 assertEquals(tmIn.getTModelKey().toLowerCase(), tmOut.getTModelKey());
148                                 assertEquals(tmIn.getName().getLang(), tmOut.getName().getLang());
149                                 assertEquals(tmIn.getName().getValue(), tmOut.getName().getValue());
150                                 TckValidator.checkDescriptions(tmIn.getDescription(), tmOut.getDescription());
151                                 TckValidator.checkCategories(tmIn.getCategoryBag(), tmOut.getCategoryBag());
152                                 for (OverviewDoc overviewDoc : tmIn.getOverviewDoc()) {
153                                         TckValidator.checkOverviewDocs(overviewDoc, tmOut.getOverviewDoc());
154                                 }
155                                 logger.info("The TModel " + tmIn.getTModelKey() + " saved");
156 
157                                 if (TckCommon.isDebug()) {
158                                         JAXB.marshal(tmOut, System.out);
159                                 }
160                                 return tmOut;
161 
162                         } catch (Exception e) {
163                                 logger.error(e.getMessage(), e);
164                                 Assert.fail("No exception should be thrown" + e.getMessage());
165                         }
166 
167                 } else {
168                         logger.info("The TModel " + tmIn.getTModelKey() + " exists already, skipping");
169                 }
170                 return tmIn;
171         }
172 
173         public TModel saveTModel(String authInfo, String tModelXml, String tModelKey) {
174                 return saveTModel(authInfo, tModelXml, tModelKey, false);
175         }
176 
177         public TModel saveTModel(String authInfo, String tModelXml, String tModelKey, boolean force) {
178                 logger.info("Loading tModel from " + tModelXml);
179                 org.uddi.api_v3.TModel tmIn = null;
180                 try {
181                         tmIn = (org.uddi.api_v3.TModel) EntityCreator.buildFromDoc(tModelXml, "org.uddi.api_v3");
182                 } catch (Exception ex) {
183                         Assert.fail("unable to load tmodel from file!" + ex.getMessage());
184                 }
185                 if (tmIn == null) {
186                         Assert.fail("unable to load tmodel from file!");
187                 }
188                 return saveTModel(authInfo, tmIn, force);
189         }
190 
191         public synchronized void deleteTModel(String authInfo, String tModelXml, String tModelKey, boolean force) {
192                 if (keyscreated.contains(tModelKey) || force) {
193                         try {
194                                 keyscreated.remove(tModelKey);
195                                 //Now deleting the TModel
196                                 // Delete the entity and make sure it is removed
197                                 DeleteTModel dt = new DeleteTModel();
198                                 dt.setAuthInfo(authInfo);
199 
200                                 logger.info("deleting tmodel " + tModelKey);
201                                 dt.getTModelKey().add(tModelKey);
202                                 publication.deleteTModel(dt);
203 
204                         } catch (Exception e) {
205                                 logger.error(e.getMessage(), e);
206                                 Assert.fail("No exception should be thrown");
207                         }
208                 } else {
209                         logger.info("skipping the deletion of tmodel " + tModelKey + " since it wasn't created by the tck");
210                 }
211         }
212 
213         public synchronized void deleteTModel(String authInfo, String tModelXml, String tModelKey) {
214 
215                 deleteTModel(authInfo, tModelXml, tModelKey, false);
216         }
217 
218         public TModelDetail getTModelDetail(String authInfo, String tModelXml, String tModelKey) {
219                 try {
220                         //Try to get the TModel
221                         GetTModelDetail tmodelDetail = new GetTModelDetail();
222                         tmodelDetail.setAuthInfo(authInfo);
223                         tmodelDetail.getTModelKey().add(tModelKey);
224 
225                         return inquiry.getTModelDetail(tmodelDetail);
226 
227                 } catch (Exception e) {
228                         logger.error(e.getMessage(), e);
229                         Assert.fail("No exception should be thrown");
230                 }
231                 Assert.fail("We should already have returned");
232                 return null;
233         }
234 
235         public TModelList findJoeTModelDetail() {
236                 try {
237 
238                         FindTModel body = (FindTModel) EntityCreator.buildFromDoc(FIND_TMODEL_XML, "org.uddi.api_v3");
239                         TModelList result = inquiry.findTModel(body);
240 
241                         return result;
242 
243                 } catch (Exception e) {
244                         logger.error(e.getMessage(), e);
245                         Assert.fail("No exception should be thrown");
246                 }
247                 Assert.fail("We should already have returned");
248                 return null;
249         }
250 
251         public TModelList findJoeTModelDetailByCategoryBag() {
252                 try {
253 
254                         FindTModel body = (FindTModel) EntityCreator.buildFromDoc(FIND_TMODEL_XML_BY_CAT, "org.uddi.api_v3");
255                         TModelList result = inquiry.findTModel(body);
256 
257                         return result;
258 
259                 } catch (Exception e) {
260                         logger.error(e.getMessage(), e);
261                         Assert.fail("No exception should be thrown");
262                 }
263                 Assert.fail("We should already have returned");
264                 return null;
265         }
266 
267         public TModel saveJoePublisherTmodel(String authInfoJoe) {
268                 return saveTModel(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY, false);
269         }
270 
271         public TModel saveJoePublisherTmodel(String authInfoJoe, boolean force) {
272                 return saveTModel(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY, force);
273         }
274 
275         /**
276          * creates key generator
277          * @param authInfoTM 
278          */
279         public void saveUDDIPublisherTmodel(String authInfoTM) {
280                 saveTModel(authInfoTM, TMODEL_PUBLISHER_TMODEL_XML, TMODEL_PUBLISHER_TMODEL_KEY, false);
281         }
282 
283         public void saveTmodels(String authInfoJoe) {
284                 saveTModels(authInfoJoe, TMODELS_XML);
285         }
286 
287         public void deleteJoePublisherTmodel(String authInfoJoe) {
288                 deleteTModel(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY);
289         }
290 
291         public TModelDetail getJoePublisherTmodel(String authInfoJoe) {
292                 return getTModelDetail(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY);
293         }
294 
295         public TModelList findJoePublisherTmodel(String authInfoJoe) {
296                 return findJoeTModelDetail();
297         }
298 
299         public TModel saveMaryPublisherTmodel(String authInfoMary) {
300                 return saveTModel(authInfoMary, MARY_PUBLISHER_TMODEL_XML, MARY_PUBLISHER_TMODEL_KEY, false);
301         }
302 
303         public void deleteMaryPublisherTmodel(String authInfoMary) {
304                 deleteTModel(authInfoMary, MARY_PUBLISHER_TMODEL_XML, MARY_PUBLISHER_TMODEL_KEY);
305         }
306 
307         public TModel saveSamSyndicatorTmodel(String authInfoSam) {
308                 return saveTModel(authInfoSam, SAM_SYNDICATOR_TMODEL_XML, SAM_SYNDICATOR_TMODEL_KEY, false);
309         }
310 
311         public void deleteSamSyndicatorTmodel(String authInfoSam) {
312                 deleteTModel(authInfoSam, SAM_SYNDICATOR_TMODEL_XML, SAM_SYNDICATOR_TMODEL_KEY);
313         }
314 
315         /**
316          * deletes at tmodels created usign the tck tool, tmodels that were
317          * previously present (before running) are not deleted no exception is
318          * thrown if an error occurs, but it will be logged
319          *
320          * @param authinfo
321          */
322         public void deleteCreatedTModels(String authinfo) {
323                 if (this.keyscreated != null) {
324                         Iterator<String> iterator = keyscreated.iterator();
325                         while (iterator.hasNext()) {
326                                 DeleteTModel dtm = new DeleteTModel();
327                                 dtm.setAuthInfo(authinfo);
328                                 String s = iterator.next();
329                                 logger.info("cleanup tModel " + s);
330                                 dtm.getTModelKey().add(s);
331                                 try {
332                                         publication.deleteTModel(dtm);
333                                 } catch (Exception ex) {
334                                         logger.warn("failed to delete tmodel " + s + " " + ex.getMessage());
335                                         logger.debug("failed to delete tmodel " + s + " " + ex.getMessage(), ex);
336                                 }
337                         }
338                 }
339 
340         }
341 }
342