Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: interop/InteropDocWrappedTest.java


1   /*
2    * The Apache Software License, Version 1.1
3    *
4    *
5    * Copyright (c) 2002 The Apache Software Foundation.  All rights 
6    * reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   *
12   * 1. Redistributions of source code must retain the above copyright
13   *    notice, this list of conditions and the following disclaimer. 
14   *
15   * 2. Redistributions in binary form must reproduce the above copyright
16   *    notice, this list of conditions and the following disclaimer in
17   *    the documentation and/or other materials provided with the
18   *    distribution.
19   *
20   * 3. The end-user documentation included with the redistribution,
21   *    if any, must include the following acknowledgment:  
22   *       "This product includes software developed by the
23   *        Apache Software Foundation (http://www.apache.org/)."
24   *    Alternately, this acknowledgment may appear in the software itself,
25   *    if and wherever such third-party acknowledgments normally appear.
26   *
27   * 4. The names "WSIF" and "Apache Software Foundation" must
28   *    not be used to endorse or promote products derived from this
29   *    software without prior written permission. For written 
30   *    permission, please contact apache@apache.org.
31   *
32   * 5. Products derived from this software may not be called "Apache",
33   *    nor may "Apache" appear in their name, without prior written
34   *    permission of the Apache Software Foundation.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ====================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals on behalf of the Apache Software Foundation and was
52   * originally based on software copyright (c) 2001, 2002, International
53   * Business Machines, Inc., http://www.apache.org.  For more
54   * information on the Apache Software Foundation, please see
55   * <http://www.apache.org/>.
56   */
57  
58  package interop;
59  
60  import interop.wsifserviceWrapped.ArrayOfSimpleDocument;
61  import interop.wsifserviceWrapped.ChildDocument;
62  import interop.wsifserviceWrapped.ComplexDocumentResponse;
63  import interop.wsifserviceWrapped.ComplexDocument_ElemType;
64  import interop.wsifserviceWrapped.ComplexDocument_Type;
65  import interop.wsifserviceWrapped.Doc_TestPortType;
66  import interop.wsifserviceWrapped.SimpleDocument_ElemType;
67  import interop.wsifserviceWrapped.SimpleDocument_Type;
68  import interop.wsifserviceWrapped.SingleTagResponse;
69  import interop.wsifserviceWrapped.SingleTag_ElemType;
70  import interop.wsifserviceWrapped.SingleTag_Type;
71  import interop.wsifserviceWrapped.SimpleDocumentResponse;
72  import java.io.StringWriter;
73  
74  import junit.framework.Test;
75  import junit.framework.TestCase;
76  import junit.framework.TestSuite;
77  
78  import org.apache.wsif.WSIFException;
79  import org.apache.wsif.WSIFMessage;
80  import org.apache.wsif.WSIFOperation;
81  import org.apache.wsif.WSIFPort;
82  import org.apache.wsif.WSIFService;
83  import org.apache.wsif.WSIFServiceFactory;
84  import org.apache.xml.serialize.OutputFormat;
85  import org.apache.xml.serialize.XMLSerializer;
86  import org.w3c.dom.Element;
87  import util.TestUtilities;
88  
89  /**
90   * Junit test to test out the AXIS provider docstyle support using wrapped parts
91   * 
92   * This test is part of the SOAP Builders interoperability testing
93   * effort described at http://www.whitemesa.net/. The WSDL is 
94   * available online at http://www.whitemesa.net/wsdl/interopdoc.wsdl
95   * 
96   * @author Ant Elder <ant.elder@uk.ibm.com>
97   */
98  public class InteropDocWrappedTest extends TestCase {
99    
100   String wsdlLocation =
101     TestUtilities.getWsdlPath("java\\test\\interop\\wsifservice")
102             + "interopdoc.wsdl";
103 //            + "interopdocLocal.wsdl";
104 //            "http://www.whitemesa.net/wsdl/interopdoc.wsdl";
105 
106   public InteropDocWrappedTest(String name) {
107     super(name);
108   }
109 
110     public static void main(String[] args) {
111 //        TestUtilities.startListeners(
112 //            TestUtilities.ADDRESSBOOK_LISTENER
113 //                | TestUtilities.ASYNC_LISTENER
114 //                | TestUtilities.NATIVEJMS_LISTENER);
115         junit.textui.TestRunner.run(suite());
116 //        TestUtilities.stopListeners();
117     }
118 
119   public static Test suite() {
120     return new TestSuite(InteropDocWrappedTest.class);
121   }
122 
123   public void setUp() {
124     TestUtilities.setUpExtensionsAndProviders();
125   }
126 
127   public void testSingleTagDII() {
128     doitSingleTagDII("interopDocPort", "axis");
129   }
130   public void testSimpleDocumentDII() {
131     doitSimpleDocumentDII("interopDocPort", "axis");
132   }
133   public void testComplexDocumentDII() {
134     doitComplexDocumentDII("interopDocPort", "axis");
135   }
136   public void testSingleTagStub() {
137     doitSingleTagStub("interopDocPort", "axis");
138   }
139   public void testSimpleDocumentStub() {
140     doitSimpleDocumentStub("interopDocPort", "axis");
141   }
142   public void testComplexDocumentStub() {
143     doitComplexDocumentStub("interopDocPort", "axis");
144   }
145 
146   private void doitSingleTagDII(String portName, String protocol) {
147     if (portName.toUpperCase().indexOf("JMS") != -1
148       && !TestUtilities.areWeTesting("jms"))
149       return;
150 
151     TestUtilities.setProviderForProtocol(protocol);
152 
153     try {
154       WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
155       WSIFService service =
156         factory.getService(
157           wsdlLocation,
158           null,
159           null,
160           "http://soapinterop.org/",
161           "Doc_TestPortType");
162 
163             service.mapType(
164                new javax.xml.namespace.QName(
165                    "http://soapinterop.org/", 
166                    ">SingleTag"),
167                SingleTag_ElemType.class );
168             service.mapType(
169                new javax.xml.namespace.QName(
170                    "http://soapinterop.org/", 
171                    "SingleTag"),
172                SingleTag_Type.class );
173             service.mapType(
174                new javax.xml.namespace.QName(
175                    "http://soapinterop.org/", 
176                    "SingleTagResponse"),
177                SingleTagResponse.class );
178 
179       WSIFPort port = service.getPort(portName);
180 
181       WSIFOperation operation = port.createOperation("SingleTag");
182 
183       WSIFMessage inMsg = operation.createInputMessage();
184       WSIFMessage outMsg = operation.createOutputMessage();
185       WSIFMessage faultMsg = operation.createFaultMessage();
186 
187             SingleTag_ElemType stet = new SingleTag_ElemType();
188             stet.setSingleTag(new SingleTag_Type());
189             
190       inMsg.setObjectPart("parameters", stet);
191 
192       boolean ok =
193         operation.executeRequestResponseOperation(
194           inMsg,
195           outMsg,
196           faultMsg);
197 
198       assertTrue("operation returned false!!", ok);
199  
200             Object o = null;
201             try {
202           o = outMsg.getObjectPart("outputDoc");
203           assertTrue("response is null!!!", o != null);
204             } catch (WSIFException e) {
205               assertTrue("response part 'outputDoc' not found in output message!!!", false);
206             }
207       assertTrue(
208           "response part has wrong type: " + o.getClass(), 
209           SingleTagResponse.class.isAssignableFrom(o.getClass()));
210 
211             SingleTagResponse response = (SingleTagResponse) o;
212       assertNotNull("response singleTag is null!!!", response.getSingleTag());
213 
214     } catch (Exception ex) {
215       ex.printStackTrace();
216       assertTrue(
217         "InteropDocTest.doitSingleTagDII("
218           + portName
219           + ") caught exception "
220           + ex.getLocalizedMessage(),
221         false);
222     }
223   }
224 
225   private void doitSimpleDocumentDII(String portName, String protocol) {
226     if (portName.toUpperCase().indexOf("JMS") != -1
227       && !TestUtilities.areWeTesting("jms"))
228       return;
229 
230     TestUtilities.setProviderForProtocol(protocol);
231 
232     try {
233       WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
234       WSIFService service =
235         factory.getService(
236           wsdlLocation,
237           null,
238           null,
239           "http://soapinterop.org/",
240           "Doc_TestPortType");
241 
242             service.mapPackage("http://soapinterop.org/", "interop.wsifserviceWrapped");
243             service.mapType(
244                new javax.xml.namespace.QName(
245                    "http://soapinterop.org/", 
246                    ">SimpleDocument"),
247                SimpleDocument_ElemType.class );
248             service.mapType(
249                new javax.xml.namespace.QName(
250                    "http://soapinterop.org/", 
251                    "SimpleDocument"),
252                SimpleDocument_Type.class );
253             service.mapType(
254                new javax.xml.namespace.QName(
255                    "http://soapinterop.org/", 
256                    "SimpleDocumentResponse"),
257                SimpleDocumentResponse.class );
258 
259       WSIFPort port = service.getPort(portName);
260 
261       WSIFOperation operation = port.createOperation("SimpleDocument");
262 
263       WSIFMessage inMsg = operation.createInputMessage();
264       WSIFMessage outMsg = operation.createOutputMessage();
265       WSIFMessage faultMsg = operation.createFaultMessage();
266 
267             SimpleDocument_ElemType sdtet = new SimpleDocument_ElemType();
268             SimpleDocument_Type sdt = new SimpleDocument_Type();
269             sdt.setValue("petra");
270             sdtet.setSimpleDocument(sdt);
271 
272       inMsg.setObjectPart("parameters", sdtet);
273 
274       boolean ok =
275         operation.executeRequestResponseOperation(
276           inMsg,
277           outMsg,
278           faultMsg);
279 
280       assertTrue("operation returned false!!", ok);
281  
282             Object o = null;
283             try {
284           o = outMsg.getObjectPart("outputDoc");
285           assertTrue("response is null!!!", o != null);
286             } catch (WSIFException e) {
287               assertTrue("response part 'outputDoc' not found in output message!!!", false);
288             }
289       assertTrue(
290           "response part has wrong type: " + o.getClass(), 
291           SimpleDocumentResponse.class.isAssignableFrom(o.getClass()));
292 
293             SimpleDocumentResponse response = (SimpleDocumentResponse) o;
294             SimpleDocument_Type sdtResponse = response.getSimpleDocument();
295       assertNotNull("response SimpleDocument is null!!!", sdtResponse);
296 
297       assertTrue(
298           "document value wrong: " + sdtResponse.getValue(), 
299           sdt.getValue().equals(sdtResponse.getValue()));
300 
301     } catch (Exception ex) {
302       ex.printStackTrace();
303       assertTrue(
304         "InteropDocTest.doitSimpleDocumentDII("
305           + portName
306           + ") caught exception "
307           + ex.getLocalizedMessage(),
308         false);
309     }
310   }
311 
312   private void doitComplexDocumentDII(String portName, String protocol) {
313     if (portName.toUpperCase().indexOf("JMS") != -1
314       && !TestUtilities.areWeTesting("jms"))
315       return;
316 
317     TestUtilities.setProviderForProtocol(protocol);
318 
319     try {
320       WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
321       WSIFService service =
322         factory.getService(
323           wsdlLocation,
324           null,
325           null,
326           "http://soapinterop.org/",
327           "Doc_TestPortType");
328 
329             service.mapPackage("http://soapinterop.org/", "interop.wsifserviceWrapped");
330 
331             service.mapType(
332                new javax.xml.namespace.QName(
333                    "http://soapinterop.org/", 
334                    ">ComplexDocument"),
335                ComplexDocument_ElemType.class );
336             service.mapType(
337                new javax.xml.namespace.QName(
338                    "http://soapinterop.org/", 
339                    "ComplexDocument"),
340                ComplexDocument_Type.class );
341             service.mapType(
342                new javax.xml.namespace.QName(
343                    "http://soapinterop.org/", 
344                    "ArrayOfSimpleDocument"),
345                ArrayOfSimpleDocument.class );
346             service.mapType(
347                new javax.xml.namespace.QName(
348                    "http://soapinterop.org/", 
349                    "SimpleDocument"),
350                SimpleDocument_Type.class );
351             service.mapType(
352                new javax.xml.namespace.QName(
353                    "http://soapinterop.org/", 
354                    "ChildDocument"),
355                ChildDocument.class );
356             service.mapType(
357                new javax.xml.namespace.QName(
358                    "http://soapinterop.org/", 
359                    "ComplexDocumentResponse"),
360                ComplexDocumentResponse.class );
361 
362       WSIFPort port = service.getPort(portName);
363 
364       WSIFOperation operation = port.createOperation("ComplexDocument");
365 
366       WSIFMessage inMsg = operation.createInputMessage();
367       WSIFMessage outMsg = operation.createOutputMessage();
368       WSIFMessage faultMsg = operation.createFaultMessage();
369 
370             ComplexDocument_ElemType cdtet = new ComplexDocument_ElemType();
371             ComplexDocument_Type cdt = makeComplexDocument();
372             checkComplexDocument(cdt);
373             cdtet.setComplexDocument(cdt);
374 
375       inMsg.setObjectPart("parameters", cdtet);
376 
377       boolean ok =
378         operation.executeRequestResponseOperation(
379           inMsg,
380           outMsg,
381           faultMsg);
382 
383       assertTrue("operation returned false!!", ok);
384  
385             Object o = null;
386             try {
387           o = outMsg.getObjectPart("outputDoc");
388           assertTrue("response is null!!!", o != null);
389             } catch (WSIFException e) {
390               assertTrue("response part 'outputDoc' not found in output message!!!", false);
391             }
392       assertTrue(
393           "response part has wrong type: " + o.getClass(), 
394           ComplexDocumentResponse.class.isAssignableFrom(o.getClass()));
395 
396             ComplexDocumentResponse response = (ComplexDocumentResponse) o;
397             ComplexDocument_Type cdtResponse = response.getComplexDocument();
398       assertNotNull("response ComplexDocument is null!!!", cdtResponse);
399           
400       checkComplexDocument(cdtResponse);
401 
402     } catch (Exception ex) {
403       ex.printStackTrace();
404       assertTrue(
405         "InteropDocTest.doitComplexDocumentDII("
406           + portName
407           + ") caught exception "
408           + ex.getLocalizedMessage(),
409         false);
410     }
411   }
412   private void doitSingleTagStub(String portName, String protocol) {
413     if (portName.toUpperCase().indexOf("JMS") != -1
414       && !TestUtilities.areWeTesting("jms"))
415       return;
416 
417     TestUtilities.setProviderForProtocol(protocol);
418 
419     try {
420       WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
421       WSIFService service =
422         factory.getService(
423           wsdlLocation,
424           null,
425           null,
426           "http://soapinterop.org/",
427           "Doc_TestPortType");
428 
429             service.mapPackage("http://soapinterop.org/", "interop.wsifserviceWrapped");
430 
431             service.mapType(
432                new javax.xml.namespace.QName(
433                    "http://soapinterop.org/", 
434                    ">SingleTag"),
435                SingleTag_ElemType.class );
436             service.mapType(
437                new javax.xml.namespace.QName(
438                    "http://soapinterop.org/", 
439                    "SingleTag"),
440                SingleTag_Type.class );
441             service.mapType(
442                new javax.xml.namespace.QName(
443                    "http://soapinterop.org/", 
444                    "SingleTagResponse"),
445                SingleTagResponse.class );
446 
447             Doc_TestPortType stub = (Doc_TestPortType) service.getStub(portName, Doc_TestPortType.class);
448 
449             SingleTag_ElemType stet = new SingleTag_ElemType();
450             stet.setSingleTag(new SingleTag_Type());
451 
452             SingleTagResponse response = stub.singleTag(stet);
453 
454       assertNotNull("response is null!!!", response);
455       assertNotNull("response singleTag is null!!!", response.getSingleTag());
456 
457     } catch (Exception ex) {
458       ex.printStackTrace();
459       assertTrue(
460         "InteropDocTest.doitSingleTagDII("
461           + portName
462           + ") caught exception "
463           + ex.getLocalizedMessage(),
464         false);
465     }
466   }
467 
468   private void doitSimpleDocumentStub(String portName, String protocol) {
469     if (portName.toUpperCase().indexOf("JMS") != -1
470       && !TestUtilities.areWeTesting("jms"))
471       return;
472 
473     TestUtilities.setProviderForProtocol(protocol);
474 
475     try {
476       WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
477       WSIFService service =
478         factory.getService(
479           wsdlLocation,
480           null,
481           null,
482           "http://soapinterop.org/",
483           "Doc_TestPortType");
484 
485             service.mapPackage("http://soapinterop.org/", "interop.wsifserviceWrapped");
486 
487             service.mapType(
488                new javax.xml.namespace.QName(
489                    "http://soapinterop.org/", 
490                    ">SimpleDocument"),
491                SimpleDocument_ElemType.class );
492             service.mapType(
493                new javax.xml.namespace.QName(
494                    "http://soapinterop.org/", 
495                    "SimpleDocument"),
496                SimpleDocument_Type.class );
497             service.mapType(
498                new javax.xml.namespace.QName(
499                    "http://soapinterop.org/", 
500                    "SimpleDocumentResponse"),
501                SimpleDocumentResponse.class );
502 
503             Doc_TestPortType stub = (Doc_TestPortType) service.getStub(portName, Doc_TestPortType.class);
504 
505             SimpleDocument_ElemType sdtet = new SimpleDocument_ElemType();
506             SimpleDocument_Type sdt = new SimpleDocument_Type();
507             sdt.setValue("petra");
508             sdtet.setSimpleDocument(sdt);
509 
510             SimpleDocumentResponse response = stub.simpleDocument(sdtet);
511 
512       assertNotNull("response is null!!!", response);
513 
514             SimpleDocument_Type sdtResponse = response.getSimpleDocument();
515       assertNotNull("response simpleDocument is null!!!", sdtResponse);
516 
517       assertTrue(
518           "simpleDocument value wrong: " + sdtResponse.getValue(), 
519           sdt.getValue().equals(sdtResponse.getValue()));
520 
521     } catch (Exception ex) {
522       ex.printStackTrace();
523       assertTrue(
524         "InteropDocTest.doitSimpleDocumentDII("
525           + portName
526           + ") caught exception "
527           + ex.getLocalizedMessage(),
528         false);
529     }
530   }
531 
532   private void doitComplexDocumentStub(String portName, String protocol) {
533     if (portName.toUpperCase().indexOf("JMS") != -1
534       && !TestUtilities.areWeTesting("jms"))
535       return;
536 
537     TestUtilities.setProviderForProtocol(protocol);
538 
539     try {
540       WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
541       WSIFService service =
542         factory.getService(
543           wsdlLocation,
544           null,
545           null,
546           "http://soapinterop.org/",
547           "Doc_TestPortType");
548 
549             service.mapPackage("http://soapinterop.org/", "interop.wsifserviceWrapped");
550 
551             service.mapType(
552                new javax.xml.namespace.QName(
553                    "http://soapinterop.org/", 
554                    ">ComplexDocument"),
555                ComplexDocument_ElemType.class );
556             service.mapType(
557                new javax.xml.namespace.QName(
558                    "http://soapinterop.org/", 
559                    "ComplexDocument"),
560                ComplexDocument_Type.class );
561             service.mapType(
562                new javax.xml.namespace.QName(
563                    "http://soapinterop.org/", 
564                    "ArrayOfSimpleDocument"),
565                ArrayOfSimpleDocument.class );
566             service.mapType(
567                new javax.xml.namespace.QName(
568                    "http://soapinterop.org/", 
569                    "SimpleDocument"),
570                SimpleDocument_Type.class );
571             service.mapType(
572                new javax.xml.namespace.QName(
573                    "http://soapinterop.org/", 
574                    "ChildDocument"),
575                ChildDocument.class );
576             service.mapType(
577                new javax.xml.namespace.QName(
578                    "http://soapinterop.org/", 
579                    "ComplexDocumentResponse"),
580                ComplexDocumentResponse.class );
581 
582             Doc_TestPortType stub = (Doc_TestPortType) service.getStub(portName, Doc_TestPortType.class);
583 
584             ComplexDocument_ElemType cdtet = new ComplexDocument_ElemType();
585             ComplexDocument_Type cdt = makeComplexDocument();
586             checkComplexDocument(cdt);
587             cdtet.setComplexDocument(cdt);
588                         
589             ComplexDocumentResponse response = stub.complexDocument(cdtet);
590       assertNotNull("response is null!!!", response);
591 
592             ComplexDocument_Type cdtResponse = response.getComplexDocument();
593       assertNotNull("response complexDocument is null!!!", cdtResponse);
594 
595       checkComplexDocument(cdtResponse);
596 
597     } catch (Exception ex) {
598       ex.printStackTrace();
599       assertTrue(
600         "InteropDocTest.doitComplexDocumentDII("
601           + portName
602           + ") caught exception "
603           + ex.getLocalizedMessage(),
604         false);
605     }
606   }
607 
608     private ComplexDocument_Type makeComplexDocument() {
609       
610         ComplexDocument_Type cdt = new ComplexDocument_Type();
611 
612         ArrayOfSimpleDocument asd = new ArrayOfSimpleDocument();
613         SimpleDocument_Type[] adt = new SimpleDocument_Type[2];
614         adt[0] = new SimpleDocument_Type("petra");
615         adt[1] = new SimpleDocument_Type("ant");
616         asd.setSimpleDocument(adt);
617         cdt.setSimpleDoc(asd);
618         
619         ChildDocument cd = new ChildDocument();
620         asd = new ArrayOfSimpleDocument();
621         adt = new SimpleDocument_Type[1];
622         adt[0] = new SimpleDocument_Type("sue");
623         asd.setSimpleDocument(adt);
624         cd.setChildSimpleDoc(asd);
625         cdt.setChild(cd);
626         
627         cdt.setAnAttribute("together");    
628 
629       return cdt;
630     }
631 
632     private void checkComplexDocument(ComplexDocument_Type cdt) {
633       
634         ArrayOfSimpleDocument asd = cdt.getSimpleDoc();
635         assertTrue("asd is null!!!", asd != null);
636         SimpleDocument_Type[] adt = asd.getSimpleDocument();
637 
638         boolean b = "petra".equals(adt[0]);
639 
640         assertTrue("adt is null!!!", adt != null);
641         assertTrue("adt length not 2, is: " + adt.length, adt.length == 2);
642         assertTrue("child adt[0] not 'petra', is: " + adt[0], "petra".equals(adt[0].getValue()));
643         assertTrue("child adt[1] not 'ant', is: " + adt[0], "ant".equals(adt[1].getValue()));
644         
645         ChildDocument cd = cdt.getChild();
646         asd = cd.getChildSimpleDoc();
647         assertTrue("child asd is null!!!", asd != null);
648         adt = asd.getSimpleDocument();
649         assertTrue("child adt is null!!!", adt != null);
650         assertTrue("child adt length not 1, is: " + adt.length, adt.length == 1);
651         assertTrue("child adt[0] not 'sue', is: " + adt[0], "sue".equals(adt[0].getValue()));
652         
653         String s = cdt.getAnAttribute();  
654         assertTrue("attribute not 'together' is: " + s, "together".equals(s));  
655 
656     }
657 
658 }