Mutation
001 package org.gxml.book.mutable;
002
003 import java.math.BigDecimal;
004
005 import javax.xml.XMLConstants;
006
007 import org.gxml.book.common.MutableApp;
008 import org.gxml.sa.GxAtomBridge;
009 import org.gxml.sa.GxNameBridge;
010 import org.gxml.sa.mutable.GxModelMutable;
011 import org.gxml.sa.mutable.GxProcessingContextMutable;
012 import org.gxml.xdm.NodeKind;
013
014 /**
015 * This sample illustrates the use of the optional mutability API.
016 *
017 * @author dholmes
018 *
019 * @param <I>
020 * @param <U>
021 * @param <N>
022 * @param <A>
023 * @param <S>
024 * @param <T>
025 * @param <X>
026 */
027 public abstract class MutableSample<I, U, N extends I, A extends I, S, T, X> extends
MutableApp<I, U, N, A, S, T, X>
028 {
029 /**
030 * This is a test of basic mutability through the optional mutability API.
031 * Line 2
032 * Line 3
033 * Line 4 // OK
034 */
035 public void testIntroduction() throws Exception
036 {
037 final GxProcessingContextMutable<I, U, N, A, S, T, X> pcx = newProcessingContext();
038 final GxAtomBridge<A, S> atomBridge = pcx.getAtomBridge();
039 final GxNameBridge<S> nameBridge = pcx.getNameBridge();
040
041 /* // Create a new document. */
042 final N documentNode = pcx.newDocument();
043
044 final GxModelMutable<N, A, S, T> model = pcx.getModel();
045
046 assertEquals(NodeKind.DOCUMENT, model.getNodeKind(documentNode));
047
048 // Every node in the tree has an owner which is a document node. /* OK */
049 final N owner = model.getOwner(documentNode);
050
051 assertTrue(model.isSameNode(documentNode, owner));
052
053 final S namespaceURI = nameBridge.symbolize("http://www.example.com");
054 final S localName = nameBridge.symbolize("foo");
055 final String prefix = "x";
056 final N documentElement = model.createElement(owner, namespaceURI, localName, prefix);
057
058 // Append the document element to the documentNode.
059 model.appendChild(documentNode, documentElement);
060
061 model.setNamespace(documentElement, prefix, namespaceURI);
062
063 model.setAttribute(documentElement, nameBridge.empty(), nameBridge.symbolize("version"),
XMLConstants.DEFAULT_NS_PREFIX, atomBridge.wrapAtom(atomBridge.createDecimal
(BigDecimal.valueOf(2.7))));
064
065 // Append four text nodes to the document element.
066 model.appendChild(documentElement, model.createText(owner, "Hello"));
067 model.appendChild(documentElement, model.createText(owner, " "));
068 model.appendChild(documentElement, model.createText(owner, "World"));
069 model.appendChild(documentElement, model.createText(owner, "!"));
070
071 // Compress the four contiguous text nodes into a single text node.
072 model.normalize(documentNode);
073
074 @SuppressWarnings("unused")
075 final String strval = serialize(documentNode, pcx);
076 //System.out.println(strval);
077 }
078 }
Copyright © Cloud Software Group, Inc. All rights reserved.
