public static void main()

in java/src/org/apache/qetest/dtm/TestDTMIterator.java [67:299]


  public static void main(String argv[])
  {
  	System.out.println("\nHELLO THERE AND WELCOME TO THE WACKY WORLD OF ITERATORS \n");
    try
    {
	    // Pick our input source
		Source source=null;
		if(argv.length<1)
		{
			String defaultSource=
 		"<?xml version=\"1.0\"?>\n"+
 		"<Document xmlns:d=\"www.d.com\" a1=\"hello\" a2=\"goodbye\">"+
 		"<!-- Default test document -->"+
 		"<?api a1=\"yes\" a2=\"no\"?>"+
 		"<A><!-- A Subtree --><B><C><D><E><F xmlns:f=\"www.f.com\" a1=\"down\" a2=\"up\"/></E></D></C></B></A>"+
 		"<Aa/><Ab/><Ac><Ac1/></Ac>"+
 		"<Ad xmlns:Ad=\"www.Ad.com\" xmlns:y=\"www.y.com\" xmlns:z=\"www.z.com\">"+
 		"<Ad1/></Ad>"+
 		"</Document>";

			source=new StreamSource(new StringReader(defaultSource));
		}
		else if (argv.length>1 &&  "X".equalsIgnoreCase(argv[1]))
		{
			// XNI stream startup goes here
			// Remember to perform Schema validation, to obtain PSVI annotations
		}
		else
		{
			// Read from a URI via whatever mechanism the DTMManager prefers
			source=new StreamSource(argv[0]);
		}
	
      // Get a DTM manager, and ask it to load the DTM "uniquely",
      // with no whitespace filtering, nonincremental, but _with_
      // indexing (a fairly common case, and avoids the special
      // mode used for RTF DTMs).

	  // For testing with some of David Marston's files I do want to strip whitespace.
	  dtmWSStripper stripper = new dtmWSStripper();

      DTMManager manager= new DTMManagerDefault().newInstance(new XMLStringFactoryImpl());
      DTM dtm=manager.getDTM(source, true, stripper, false, true);

	  // Get various nodes to use as context nodes.
	  int dtmRoot = dtm.getDocument();					// #document
	  String dtmRootName = dtm.getNodeName(dtmRoot);	// Used for output
	  int DNode = dtm.getFirstChild(dtmRoot);			// <Document>
	  String DNodeName = dtm.getNodeName(DNode);
	  int CNode = dtm.getFirstChild(DNode);				// <Comment>
	  int PINode = dtm.getNextSibling(CNode);			// <PI>
	  int ANode = dtm.getNextSibling(PINode);			// <A>
	  String ANodeName = dtm.getNodeName(ANode);
	  int lastNode = 0;
      

	  // Get a Iterator for CHILD:: axis.
      DTMAxisIterator iter = dtm.getAxisIterator(Axis.CHILD);
      iter.setStartNode(DNode);

	  System.out.println("#### CHILD from "+"<"+DNodeName+">, Reverse Axis:" + iter.isReverse());			   
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		{ printNode(dtm, itNode, " ");
		  lastNode = itNode;
		}
	  
	  String lastNodeName = dtm.getNodeName(lastNode);

	  // Get iterator for PARENT:: Axis
	  iter = dtm.getAxisIterator(Axis.PARENT);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### PARENT from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

	  // Get iterator for SELF:: Axis
	  iter = dtm.getAxisIterator(Axis.SELF);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### SELF from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   

	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

/**** Not Implemented
	  // Get iterator for NAMESPACEDECLS:: Axis
	  iter = dtm.getAxisIterator(Axis.NAMESPACEDECLS);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### NAMESPACEDECLS from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   

	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");
****/

	  // Get iterator for NAMESPACE:: Axis
	  iter = dtm.getAxisIterator(Axis.NAMESPACE);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### NAMESPACE from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   

	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

	  // Get iterator for PRECEDING:: Axis
	  iter = dtm.getAxisIterator(Axis.PRECEDING);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### PRECEDING from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   

	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

	  // Get iterator for PRECEDINGSIBLING:: Axis
	  iter = dtm.getAxisIterator(Axis.PRECEDINGSIBLING);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### PRECEDINGSIBLING from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

/**** ArrayIndexOutOfBoundsException
	  // Get iterator for ATTRIBUTE:: Axis
	  iter = dtm.getAxisIterator(Axis.ATTRIBUTE);
	  iter.setStartNode(DNode);
	  System.out.println("\n#### ATTRIBUTE from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");
****/

	  // Get iterator for FOLLOWING:: Axis
	  iter = dtm.getAxisIterator(Axis.FOLLOWING);
	  iter.setStartNode(ANode);
	  System.out.println("\n#### FOLLOWING from "+"<"+ANodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

	  // Get iterator for FOLLOWINGSIBLING:: Axis
	  iter = dtm.getAxisIterator(Axis.FOLLOWINGSIBLING);
	  iter.setStartNode(ANode);
	  System.out.println("\n#### FOLLOWINGSIBLING from "+"<"+ANodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

	  // Get a iterator for  DESCENDANT:: axis.
	  iter = dtm.getAxisIterator(Axis.DESCENDANT);
	  iter.setStartNode(ANode);
	  System.out.println("\n#### DESCENDANT from "+"<"+ANodeName+">, Reverse Axis:" + iter.isReverse());

	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  {
		  	printNode(dtm, itNode, " ");
			lastNode = itNode;
		  }

	  // Get iterator for DESCENDANTORSELF:: Axis
	  iter = dtm.getAxisIterator(Axis.DESCENDANTORSELF);
	  iter.setStartNode(ANode);
	  System.out.println("\n#### DESCENDANT-OR-SELF from "+"<"+ANodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		{
		  printNode(dtm, itNode, " ");
		  lastNode = itNode;
		}

	  //lastNode = iter.getLast();	 // Uncomment for Bugzilla 7885.
      lastNodeName = dtm.getNodeName(lastNode);
	  
	  // The output from Ancestor and Ancestor-or-self is the topic
	  // of Bugzilla 7886
	  // Get iterator for ANCESTOR:: Axis
	  iter = dtm.getAxisIterator(Axis.ANCESTOR);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### ANCESTOR from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

	  // Get iterator for ANCESTORORSELF:: Axis
	  iter = dtm.getAxisIterator(Axis.ANCESTORORSELF);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### ANCESTOR-OR-SELF from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   
  
	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");

/**** Absolute axis (ALL, DESCENDANTSFROMROOT, or DESCENDANTSORSELFFROMROOT) not implemented.  
	  // Get itertor for ALL:: Axis
	  // of previous iterator, i.e. lastNode.
	  iter = dtm.getAxisIterator(Axis.ALL);
	  iter.setStartNode(lastNode);
	  System.out.println("\n#### ALL from "+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());	   

	  // Iterate the axis and print out node info.
      for (int itNode = iter.next(); DTM.NULL != itNode;
              itNode = iter.next())
		  printNode(dtm, itNode, " ");
****/
    }
    catch(Exception e)
      {
        e.printStackTrace();
      }
  }