You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2009/11/24 08:51:07 UTC

svn commit: r883618 [1/3] - in /mina/sandbox/vysper/trunk: nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/ nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/ server/core/src/main/java/org/apache/vysper/xmpp/authorization/ server/core/src/m...

Author: ngn
Date: Tue Nov 24 07:51:04 2009
New Revision: 883618

URL: http://svn.apache.org/viewvc?rev=883618&view=rev
Log:
Extract StanzaBuilder and XMLElementBuilder into a abstract super class to remove code duplication

Added:
    mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/AbstractXMLElementBuilder.java
Modified:
    mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementBuilder.java
    mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java
    mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java
    mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/StackNamespaceResolverTestCase.java
    mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/XMLElementTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/AbstractPresenceSpecializedHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0092_software_version/SoftwareVersionIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0119_xmppping/XmppPingIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeXEP0090IQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java
    mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/authorization/PlainTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/TestIQHandler.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailUpdateOutHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerUnavailableMechanismTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0199_xmppping/XmppPingIQHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/ExtendedDiscoInfoTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/protocol/AbstractProtocolStateTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiatedTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerAquireTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerStateAwarenessTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookupTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/response/ServerErrorResponsesTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/stanza/StanzaBuilderTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanzaTestCase.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/state/presence/EhCachePresenceCacheImplTest.java
    mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/state/presence/LatestPresenceCacheTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCHandlerHelper.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessage.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeNickTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeStatusTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerExitRoomTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerVerifyTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCSubjectMessageHandlerTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/XTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/SubscriberPayloadNotificationVisitor.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerManageAffiliationsHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractStanzaGenerator.java

Added: mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/AbstractXMLElementBuilder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/AbstractXMLElementBuilder.java?rev=883618&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/AbstractXMLElementBuilder.java (added)
+++ mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/AbstractXMLElementBuilder.java Tue Nov 24 07:51:04 2009
@@ -0,0 +1,163 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+
+package org.apache.vysper.xmpp.xmlfragment;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+/**
+ * TODO For now, this is mostly a copy of StanzaBuilder. Both classes needs to be refactored.
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+@SuppressWarnings("unchecked")
+public abstract class AbstractXMLElementBuilder<B extends AbstractXMLElementBuilder, T extends XMLElement> {
+
+    class ElementStruct {
+        public ElementStruct parentElement = null;
+        public XMLElement element = null;
+        public List<Attribute> attributes = null;
+        public List<XMLFragment> innerFragments = null;
+    }
+
+    /**
+     * parent hierarchy for current element
+     */
+    private Stack<ElementStruct> stack = new Stack<ElementStruct>();
+    protected ElementStruct currentElement = null;
+    private XMLElement resultingElement = null;
+    private boolean isReset = false;
+
+
+    public AbstractXMLElementBuilder(String elementName) {
+        this(elementName, null);
+    }
+
+    public AbstractXMLElementBuilder(String elementName, String namespaceURI) {
+        this(elementName, namespaceURI, null);
+    }
+
+    public AbstractXMLElementBuilder(String elementName, String namespaceURI, String namespacePrefix) {
+        startNewElement(elementName, namespaceURI, namespacePrefix);
+        resultingElement = currentElement.element;
+        stack.push(currentElement);
+    }
+    
+    protected XMLElement createElement(String namespaceURI, String name, String namespacePrefix, List<Attribute> attributes, List<XMLFragment> innerFragments) {
+    	return new XMLElement(namespaceURI, name, namespacePrefix, attributes, innerFragments);
+    }
+    
+    private void startNewElement(String name, String namespaceURI, String namespacePrefix) {
+        // TODO assert that name does not contain namespace (":")
+        // TODO handle the namespace, given by URI, currently always NULL in XMLElement constructors
+        ElementStruct element = new ElementStruct();
+        element.attributes = new ArrayList<Attribute>();
+        element.innerFragments = new ArrayList<XMLFragment>();
+        element.element = createElement(namespaceURI, name, namespacePrefix, element.attributes, element.innerFragments);
+
+        currentElement = element;
+    }
+    
+	public B addNamespaceAttribute(String value) {
+        addAttribute(new NamespaceAttribute(value));
+        return (B) this;
+    }
+
+    public B addNamespaceAttribute(String namespacePrefix, String value) {
+        addAttribute(new NamespaceAttribute(namespacePrefix, value));
+        return (B) this;
+    }
+
+    public B addAttribute(String name, String value) {
+    	addAttribute(new Attribute(name, value));
+    	return (B) this;
+    }
+
+    public B addAttribute(String namespaceUris, String name, String value) {
+    	addAttribute(new Attribute(namespaceUris, name, value));
+    	return (B) this;
+    }
+
+    
+    public B addAttribute(Attribute attribute) {
+        checkReset();
+        currentElement.attributes.add(attribute);
+        return (B) this;
+    }
+
+    public B addText(String text) {
+        checkReset();
+        currentElement.innerFragments.add(new XMLText(text));
+        return (B) this;
+    }
+
+    public B startInnerElement(String name) {
+        return this.startInnerElement(name, null);
+    }
+
+    public B startInnerElement(String name, String namespaceURI) {
+        checkReset();
+
+        startNewElement(name, namespaceURI, null);
+
+        stack.peek().innerFragments.add(currentElement.element); // add new one to its parent
+
+        stack.push(currentElement);
+
+        return (B) this;
+    }
+
+    public B endInnerElement() {
+        checkReset();
+        if (stack.isEmpty()) throw new IllegalStateException("cannot end beyond top element");
+
+        stack.pop(); // take current off stack and forget (it was added to its parent before)
+        currentElement = stack.peek(); // we again deal with parent, which can be receive additions
+        return (B) this;
+    }
+
+    public B addPreparedElement(XMLElement preparedElement) {
+        checkReset();
+        currentElement.innerFragments.add(preparedElement);
+        return (B) this;
+    }
+
+    /**
+     * the stanza can only be retrieved once
+     * @return retrieves the XML element and invalidates the builder
+     */
+    public T build() {
+        checkReset();
+        XMLElement returnStanza = resultingElement;
+        resultingElement = null;
+        isReset = true; // reset
+        stack.clear();
+        return (T) returnStanza;
+    }
+
+    /**
+     * assure that the immutable XML element object is not changed after it was retrieved
+     */
+    private void checkReset() {
+        if (isReset) throw new IllegalStateException("XML element builder was reset after retrieving stanza");
+    }
+}

Modified: mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementBuilder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementBuilder.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementBuilder.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementBuilder.java Tue Nov 24 07:51:04 2009
@@ -20,32 +20,13 @@
 
 package org.apache.vysper.xmpp.xmlfragment;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
 
 /**
  * TODO For now, this is mostly a copy of StanzaBuilder. Both classes needs to be refactored.
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class XMLElementBuilder {
-
-    class ElementStruct {
-        public ElementStruct parentElement = null;
-        public XMLElement element = null;
-        public List<Attribute> attributes = null;
-        public List<XMLFragment> innerFragments = null;
-    }
-
-    /**
-     * parent hierarchy for current element
-     */
-    private Stack<ElementStruct> stack = new Stack<ElementStruct>();
-    private ElementStruct currentElement = null;
-    private XMLElement resultingElement = null;
-    private boolean isReset = false;
-
+public class XMLElementBuilder extends AbstractXMLElementBuilder<XMLElementBuilder, XMLElement> {
 
     public XMLElementBuilder(String elementName) {
         this(elementName, null);
@@ -56,104 +37,6 @@
     }
 
     public XMLElementBuilder(String elementName, String namespaceURI, String namespacePrefix) {
-        startNewElement(elementName, namespaceURI, namespacePrefix);
-        resultingElement = currentElement.element;
-        stack.push(currentElement);
-    }
-    
-    private void startNewElement(String name, String namespaceURI, String namespacePrefix) {
-        // TODO assert that name does not contain namespace (":")
-        // TODO handle the namespace, given by URI, currently always NULL in XMLElement constructors
-        ElementStruct element = new ElementStruct();
-        element.attributes = new ArrayList<Attribute>();
-        element.innerFragments = new ArrayList<XMLFragment>();
-        element.element = new XMLElement(namespaceURI, name, namespacePrefix, element.attributes, element.innerFragments);
-
-        currentElement = element;
-    }
-
-
-    public XMLElementBuilder addNamespaceAttribute(String value) {
-        addAttribute(new NamespaceAttribute(value));
-        return this;
-    }
-
-    public XMLElementBuilder addNamespaceAttribute(String namespacePrefix, String value) {
-        addAttribute(new NamespaceAttribute(namespacePrefix, value));
-        return this;
-    }
-
-    public XMLElementBuilder addAttribute(String name, String value) {
-    	addAttribute(new Attribute(name, value));
-    	return this;
-    }
-
-    public XMLElementBuilder addAttribute(String namespaceUris, String name, String value) {
-    	addAttribute(new Attribute(namespaceUris, name, value));
-    	return this;
-    }
-
-    
-    public XMLElementBuilder addAttribute(Attribute attribute) {
-        checkReset();
-        currentElement.attributes.add(attribute);
-        return this;
-    }
-
-    public XMLElementBuilder addText(String text) {
-        checkReset();
-        currentElement.innerFragments.add(new XMLText(text));
-        return this;
-    }
-
-    public XMLElementBuilder startInnerElement(String name) {
-        return this.startInnerElement(name, null);
-    }
-
-    public XMLElementBuilder startInnerElement(String name, String namespaceURI) {
-        checkReset();
-
-        startNewElement(name, namespaceURI, null);
-
-        stack.peek().innerFragments.add(currentElement.element); // add new one to its parent
-
-        stack.push(currentElement);
-
-        return this;
-    }
-
-    public XMLElementBuilder endInnerElement() {
-        checkReset();
-        if (stack.isEmpty()) throw new IllegalStateException("cannot end beyond top element");
-
-        stack.pop(); // take current off stack and forget (it was added to its parent before)
-        currentElement = stack.peek(); // we again deal with parent, which can be receive additions
-        return this;
-    }
-
-    public XMLElementBuilder addPreparedElement(XMLElement preparedElement) {
-        checkReset();
-        currentElement.innerFragments.add(preparedElement);
-        return this;
-    }
-
-    /**
-     * the stanza can only be retrieved once
-     * @return retrieves the XML element and invalidates the builder
-     */
-    public XMLElement getFinalElement() {
-        checkReset();
-        XMLElement returnStanza = resultingElement;
-        resultingElement = null;
-        isReset = true; // reset
-        stack.clear();
-        return returnStanza;
-    }
-
-    /**
-     * assure that the immutable XML element object is not changed after it was retrieved
-     */
-    private void checkReset() {
-        if (isReset) throw new IllegalStateException("XML element builder was reset after retrieving stanza");
+    	super(elementName, namespaceURI, namespacePrefix);
     }
 }

Modified: mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xmpp/xmlfragment/XMLElementVerifier.java Tue Nov 24 07:51:04 2009
@@ -145,6 +145,9 @@
 				return true;
 			}
 		}
+		
+		if(namespaceURI.equals(element.getNamespaceURI())) return true;
+		
 		return false; // not present
 	}
 

Modified: mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/RendererTestCase.java Tue Nov 24 07:51:04 2009
@@ -118,33 +118,33 @@
 	public void testRenderDeclaredNamespaceElement() {
 		XMLElementBuilder builder = new XMLElementBuilder("foo", "http://example.com");
 		builder.addNamespaceAttribute("pr", "http://example.com");
-		assertRendering("<pr:foo xmlns:pr=\"http://example.com\"></pr:foo>", builder.getFinalElement());
+		assertRendering("<pr:foo xmlns:pr=\"http://example.com\"></pr:foo>", builder.build());
 	}
 
 	public void testRenderInnerNamespacedElement() {
 		XMLElementBuilder builder = new XMLElementBuilder("foo", "http://example.com");
 		builder.addNamespaceAttribute("pr", "http://other.com");
 		builder.startInnerElement("bar", "http://other.com");
-		assertRendering("<foo xmlns=\"http://example.com\" xmlns:pr=\"http://other.com\"><pr:bar></pr:bar></foo>", builder.getFinalElement());
+		assertRendering("<foo xmlns=\"http://example.com\" xmlns:pr=\"http://other.com\"><pr:bar></pr:bar></foo>", builder.build());
 	}
 
 	public void testRenderInnerInheritedDefaultNamespaceElement() {
 		XMLElementBuilder builder = new XMLElementBuilder("foo", "http://example.com");
 		builder.startInnerElement("bar", "http://example.com");
-		assertRendering("<foo xmlns=\"http://example.com\"><bar></bar></foo>", builder.getFinalElement());
+		assertRendering("<foo xmlns=\"http://example.com\"><bar></bar></foo>", builder.build());
 	}
 
 	public void testRenderInnerInheritedNamespaceElement() {
 		XMLElementBuilder builder = new XMLElementBuilder("foo", "http://example.com");
 		builder.startInnerElement("bar", "http://other.com");
-		assertRendering("<foo xmlns=\"http://example.com\"><bar xmlns=\"http://other.com\"></bar></foo>", builder.getFinalElement());
+		assertRendering("<foo xmlns=\"http://example.com\"><bar xmlns=\"http://other.com\"></bar></foo>", builder.build());
 	}
 
 	
 	public void testRenderInnerNoNamespaceElement() {
 		XMLElementBuilder builder = new XMLElementBuilder("foo", "http://example.com");
 		builder.startInnerElement("bar");
-		assertRendering("<foo xmlns=\"http://example.com\"><bar xmlns=\"\"></bar></foo>", builder.getFinalElement());
+		assertRendering("<foo xmlns=\"http://example.com\"><bar xmlns=\"\"></bar></foo>", builder.build());
 	}
 	
 	public void testRenderSimpleText() {

Modified: mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/StackNamespaceResolverTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/StackNamespaceResolverTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/StackNamespaceResolverTestCase.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/StackNamespaceResolverTestCase.java Tue Nov 24 07:51:04 2009
@@ -30,7 +30,7 @@
 	public void testPushSingleElement() {
 		XMLElement elm = new XMLElementBuilder("foo")
 			.addNamespaceAttribute("pr1", "url1")
-			.addNamespaceAttribute("pr2", "url2").getFinalElement();
+			.addNamespaceAttribute("pr2", "url2").build();
 		
 		resolver.push(elm);
 		
@@ -65,7 +65,7 @@
 	public void testPushSingleNamespacedElement() {
 		XMLElement elm = new XMLElementBuilder("foo", "defaulturl")
 			.addNamespaceAttribute("pr1", "url1")
-			.addNamespaceAttribute("pr2", "url2").getFinalElement();
+			.addNamespaceAttribute("pr2", "url2").build();
 		
 		resolver.push(elm);
 		
@@ -79,8 +79,8 @@
 	}
 	
 	public void testSimpleInheritance() {
-		XMLElement elm = new XMLElementBuilder("foo", "defaulturl").getFinalElement();
-		XMLElement innerElm = new XMLElementBuilder("inner", "innerdefaulturl").getFinalElement(); 
+		XMLElement elm = new XMLElementBuilder("foo", "defaulturl").build();
+		XMLElement innerElm = new XMLElementBuilder("inner", "innerdefaulturl").build(); 
 		
 		resolver.push(elm);
 		
@@ -98,8 +98,8 @@
 	public void testPrefixedInheritance() {
 		XMLElement elm = new XMLElementBuilder("foo", "url1")
 		.addNamespaceAttribute("pr1", "url1")
-		.getFinalElement();
-		XMLElement innerElm = new XMLElementBuilder("inner", "url1").getFinalElement(); 
+		.build();
+		XMLElement innerElm = new XMLElementBuilder("inner", "url1").build(); 
 		
 		resolver.push(elm);
 		

Modified: mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/XMLElementTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/XMLElementTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/XMLElementTestCase.java (original)
+++ mina/sandbox/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xmpp/xmlfragment/XMLElementTestCase.java Tue Nov 24 07:51:04 2009
@@ -35,7 +35,7 @@
                 addAttribute("lang", "de").
                 addAttribute(NamespaceURIs.XML, "lang", "cn").
                 addAttribute("xmllang", "en").
-        getFinalElement();
+        build();
         
         assertEquals("message", xmlElement.getName());
         assertEquals("urn:test", xmlElement.getNamespaceURI());
@@ -59,7 +59,7 @@
                 startInnerElement("i2").
                 endInnerElement().
                 addText("t4").
-        getFinalElement();
+        build();
 
         List<XMLText> list = xmlElement.getInnerTexts();
         assertEquals(4, list.size());
@@ -79,7 +79,7 @@
         xmlElement = new XMLElementBuilder("message", "jabber:test").
                 startInnerElement("i1").
                 endInnerElement().
-        getFinalElement();
+        build();
         try {
             assertNull(xmlElement.getSingleInnerText());
         } catch (XMLSemanticError xmlSemanticError) {
@@ -104,7 +104,7 @@
                 startInnerElement("i3").
                 endInnerElement().
                 addText("t4").
-        getFinalElement();
+        build();
 
         List<XMLElement> list = xmlElement.getInnerElements();
         assertEquals(4, list.size());
@@ -126,7 +126,7 @@
 
         xmlElement = new XMLElementBuilder("message", "jabber:test").
                 addText("t1").
-        getFinalElement();
+        build();
         try {
             assertNull(xmlElement.getSingleInnerElementsNamed("none"));
         } catch (XMLSemanticError xmlSemanticError) {
@@ -139,7 +139,7 @@
                 endInnerElement().
                 startInnerElement("another").
                 endInnerElement().
-        getFinalElement();
+        build();
         try {
             XMLElement singleXmlElement = xmlElement.getSingleInnerElementsNamed("i");
             assertEquals("i", singleXmlElement.getName());
@@ -154,7 +154,7 @@
                 startInnerElement("i").
                     addAttribute("order", "2").
                 endInnerElement().
-        getFinalElement();
+        build();
         try {
             xmlElement.getSingleInnerElementsNamed("i");
             fail("must raise error, more than one i-element");
@@ -180,7 +180,7 @@
                 startInnerElement("single").
                 endInnerElement().
                 addText("t4").
-        getFinalElement();
+        build();
 
         List<XMLElement> list = xmlElement.getInnerElementsNamed("no-exist");
         assertEquals(0, list.size());
@@ -236,7 +236,7 @@
                     addAttribute("order", "2").
                 endInnerElement().
                 addText("t4").
-        getFinalElement();
+        build();
 
         try {
             Map<String,XMLElement> map = xmlElement.getInnerElementsByXMLLangNamed("body");
@@ -270,7 +270,7 @@
         XMLElement xmlElement = new XMLElementBuilder("test").
                 addAttribute("foo", "bar").
                 addAttribute(NamespaceURIs.XML, "lang", "cn").
-        getFinalElement();
+        build();
         
         assertEquals("bar", xmlElement.getAttribute("foo").getValue());
         assertNull(xmlElement.getAttribute("http://example.com", "foo"));

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java Tue Nov 24 07:51:04 2009
@@ -34,7 +34,7 @@
     public Stanza getSuccess() {
         StanzaBuilder stanzaBuilder = new StanzaBuilder("success");
         stanzaBuilder.addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     public Stanza getFailureNotAuthorized() {
@@ -43,7 +43,7 @@
 
     public Stanza getFailure(SASLFailureType failureType) {
         return new StanzaBuilder("failure").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL)
-                .startInnerElement(failureType.value()).endInnerElement().getFinalStanza();
+                .startInnerElement(failureType.value()).endInnerElement().build();
     }
     public Stanza getFailureMalformedRequest() {
         return getFailure(SASLFailureType.MALFORMED_REQUEST);

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java Tue Nov 24 07:51:04 2009
@@ -86,7 +86,7 @@
                         final Entity from = failedToDeliverStanza.getTo(); // reverse from/to
                         final Entity to = failedToDeliverStanza.getFrom(); // reverse from/to
                         StanzaBuilder builder = StanzaBuilder.createPresenceStanza(from, to, null, UNSUBSCRIBED, null, null);
-                        final Stanza finalStanza = builder.getFinalStanza();
+                        final Stanza finalStanza = builder.build();
                         stanzaRelay.relay(to, finalStanza, IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY);
                         return;
                     }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java Tue Nov 24 07:51:04 2009
@@ -109,7 +109,7 @@
                 for (XMLElement preparedElement : stanza.getInnerElements()) {
                     stanzaBuilder.addPreparedElement(preparedElement);
                 }
-                stanza = XMPPCoreStanza.getWrapper(stanzaBuilder.getFinalStanza());
+                stanza = XMPPCoreStanza.getWrapper(stanzaBuilder.build());
             }
 
             StanzaRelay stanzaRelay = serverRuntimeContext.getStanzaRelay();

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java Tue Nov 24 07:51:04 2009
@@ -77,7 +77,7 @@
                     startInnerElement("jid").addText(entity.getFullQualifiedName()).endInnerElement().
             endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     private Stanza bindError(IQStanza stanza, SessionContext sessionContext) {
@@ -88,6 +88,6 @@
                     startInnerElement("not-allowed", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).
             endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/AbstractPresenceSpecializedHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/AbstractPresenceSpecializedHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/AbstractPresenceSpecializedHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/AbstractPresenceSpecializedHandler.java Tue Nov 24 07:51:04 2009
@@ -51,7 +51,7 @@
                 builder.addPreparedElement(innerElement);
             }
         }
-        return (PresenceStanza) XMPPCoreStanza.getWrapper(builder.getFinalStanza());
+        return (PresenceStanza) XMPPCoreStanza.getWrapper(builder.build());
 	}
 
     protected void relayStanza(Entity receiver, Stanza stanza, SessionContext sessionContext) {

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java Tue Nov 24 07:51:04 2009
@@ -433,7 +433,7 @@
 
         for (Entity to : tos) {
             toFromReplacements.add(new Attribute("to", to.getFullQualifiedName()));
-            Stanza outgoingStanza = StanzaBuilder.createClone(original, true, toFromReplacements).getFinalStanza();
+            Stanza outgoingStanza = StanzaBuilder.createClone(original, true, toFromReplacements).build();
             relayStanza(to, outgoingStanza, sessionContext);
             toFromReplacements.remove(toFromReplacements.size()-1); // clear space for new 'to' attribute
         }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java Tue Nov 24 07:51:04 2009
@@ -47,7 +47,7 @@
 
             case SET:
                 return StanzaBuilder.createIQStanza(null, null, IQStanzaType.RESULT, stanza.getID())
-                                    .addAttribute("from", sessionContext.getServerJID().getFullQualifiedName()).getFinalStanza();
+                                    .addAttribute("from", sessionContext.getServerJID().getFullQualifiedName()).build();
 
             case GET:
             case ERROR:

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java Tue Nov 24 07:51:04 2009
@@ -96,9 +96,9 @@
         boolean success = persistenceManager.setPrivateData(from, queryKey, queryContent);
 
         if (success) {
-            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.RESULT, stanza.getID()).getFinalStanza();
+            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.RESULT, stanza.getID()).build();
         } else {
-            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.ERROR, stanza.getID()).getFinalStanza();
+            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.ERROR, stanza.getID()).build();
         }
     }
 
@@ -139,7 +139,7 @@
         } else {
             stanzaBuilder.addText(privateDataXML);
         }
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     /**

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java Tue Nov 24 07:51:04 2009
@@ -83,9 +83,9 @@
         boolean success = persistenceManager.setVcard(from, vcardContent);
 
         if (success) {
-            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.RESULT, stanza.getID()).getFinalStanza();
+            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.RESULT, stanza.getID()).build();
         } else {
-            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.ERROR, stanza.getID()).getFinalStanza();
+            return StanzaBuilder.createIQStanza(null, from, IQStanzaType.ERROR, stanza.getID()).build();
         }
     }
 
@@ -122,11 +122,11 @@
                         endInnerElement().
                     endInnerElement();
             }
-            return stanzaBuilder.getFinalStanza();
+            return stanzaBuilder.build();
         }
 
         StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(stanza.getTo(), stanza.getFrom(), IQStanzaType.RESULT, stanza.getID());
         stanzaBuilder.addText(vcardXml);
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }
\ No newline at end of file

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0092_software_version/SoftwareVersionIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0092_software_version/SoftwareVersionIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0092_software_version/SoftwareVersionIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0092_software_version/SoftwareVersionIQHandler.java Tue Nov 24 07:51:04 2009
@@ -64,6 +64,6 @@
 
         endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0119_xmppping/XmppPingIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0119_xmppping/XmppPingIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0119_xmppping/XmppPingIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0119_xmppping/XmppPingIQHandler.java Tue Nov 24 07:51:04 2009
@@ -65,6 +65,6 @@
 
         StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(stanza.getTo(), stanza.getFrom(), IQStanzaType.RESULT, stanza.getID());
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeIQHandler.java Tue Nov 24 07:51:04 2009
@@ -72,6 +72,6 @@
 
         endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeXEP0090IQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeXEP0090IQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeXEP0090IQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0202_entity_time/EntityTimeXEP0090IQHandler.java Tue Nov 24 07:51:04 2009
@@ -83,6 +83,6 @@
 
         endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java Tue Nov 24 07:51:04 2009
@@ -55,7 +55,7 @@
     public static Stanza createRosterItemIQ(Entity to, String id, IQStanzaType iqStanzaType, RosterItem rosterItem) {
         List<RosterItem> itemList = new ArrayList<RosterItem>();
         itemList.add(rosterItem);
-        return createRosterItemsIQ(to, id, iqStanzaType, itemList).getFinalStanza();
+        return createRosterItemsIQ(to, id, iqStanzaType, itemList).build();
     }
 
     public static void createRosterItem(StanzaBuilder stanzaBuilder, RosterItem rosterItem) {

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java Tue Nov 24 07:51:04 2009
@@ -115,7 +115,7 @@
 
         // from becomes to
         StanzaBuilder stanzaBuilder = RosterStanzaUtils.createRosterItemsIQ(from, stanza.getID(), IQStanzaType.RESULT, roster);
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     @SpecCompliance( compliant = {
@@ -192,11 +192,11 @@
         if (existingItem != null) {
             if (existingItem.hasFrom()) {
                 // send unsubbed
-                unsubscribedStanza = StanzaBuilder.createPresenceStanza(user.getBareJID(), contactJid, null, PresenceStanzaType.UNSUBSCRIBED, null, null).getFinalStanza();
+                unsubscribedStanza = StanzaBuilder.createPresenceStanza(user.getBareJID(), contactJid, null, PresenceStanzaType.UNSUBSCRIBED, null, null).build();
             }
             if (existingItem.hasTo()) {
                 // send unsub
-                unsubscribeStanza = StanzaBuilder.createPresenceStanza(user.getBareJID(), contactJid, null, PresenceStanzaType.UNSUBSCRIBE, null, null).getFinalStanza();
+                unsubscribeStanza = StanzaBuilder.createPresenceStanza(user.getBareJID(), contactJid, null, PresenceStanzaType.UNSUBSCRIBE, null, null).build();
             }
         }
         try {
@@ -224,7 +224,7 @@
         pushRosterItemToInterestedResources(sessionContext, user, new RosterItem(contactJid, REMOVE));
 
         // return success
-        return StanzaBuilder.createIQStanza(null, user, IQStanzaType.RESULT, stanza.getID()).getFinalStanza();
+        return StanzaBuilder.createIQStanza(null, user, IQStanzaType.RESULT, stanza.getID()).build();
     }
 
     private void pushRosterItemToInterestedResources(SessionContext sessionContext, Entity user, RosterItem rosterItem) {

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java Tue Nov 24 07:51:04 2009
@@ -148,6 +148,6 @@
 
         stanzaBuilder.endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java Tue Nov 24 07:51:04 2009
@@ -128,6 +128,6 @@
             }
         stanzaBuilder.endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java Tue Nov 24 07:51:04 2009
@@ -81,7 +81,7 @@
             stanzaBuilder.addPreparedElement(applicationSpecificError);
         }
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     /**
@@ -107,7 +107,7 @@
 
         fillErrorStanza(stanza, type, errorCondition, errorText, errorLang, errorConditionElement, responseBuilder);
 
-        return responseBuilder.getFinalStanza();
+        return responseBuilder.build();
     }
 
     private void fillErrorStanza(XMPPCoreStanza stanza, StanzaErrorType type, StanzaErrorCondition errorCondition, String errorText, String errorLang, XMLElement errorConditionElement, StanzaBuilder responseBuilder) {
@@ -141,7 +141,7 @@
     public Stanza getTLSFailure() {
         StanzaBuilder stanzaBuilder = new StanzaBuilder("failure");
         stanzaBuilder.addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS);
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     public Stanza getSASLFailure(SASLFailureType failureType) {
@@ -150,6 +150,6 @@
         if (failureType != null) {
             stanzaBuilder.startInnerElement(failureType.toString()).endInnerElement();
         }
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerResponses.java Tue Nov 24 07:51:04 2009
@@ -38,7 +38,7 @@
 public class ServerResponses {
 
     public Stanza getStreamOpenerForError(boolean forClient, Entity from, XMPPVersion version, Stanza errorStanza) {
-        return getStreamOpener(forClient, from, null, version, errorStanza).getFinalStanza();
+        return getStreamOpener(forClient, from, null, version, errorStanza).build();
     }
 
     public Stanza getStreamOpener(boolean forClient, Entity from, XMPPVersion version, SessionContext sessionContext) {
@@ -54,7 +54,7 @@
 
         StanzaBuilder stanzaBuilder = getStreamOpener(forClient, from, sessionContext.getXMLLang(), version, sessionContext.getSessionId(), innerFeatureStanza);
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     public StanzaBuilder getStreamOpener(boolean forClient, Entity from, String xmlLang, XMPPVersion version, Stanza innerStanza) {
@@ -82,7 +82,7 @@
             }
         stanzaBuilder.endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     public Stanza getFeaturesForAuthentication(List<SASLMechanism> authenticationMethods) {
@@ -95,7 +95,7 @@
             }
             stanzaBuilder.endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     private Stanza getFeaturesForSession() {
@@ -112,7 +112,7 @@
             .startInnerElement("required").endInnerElement();
         stanzaBuilder.endInnerElement();
 
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     protected StanzaBuilder startFeatureStanza() {
@@ -125,14 +125,14 @@
 
         StanzaBuilder stanzaBuilder = new StanzaBuilder("proceed");
         stanzaBuilder.addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS);
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
     public Stanza getAuthAborted() {
 
         StanzaBuilder stanzaBuilder = new StanzaBuilder("aborted");
         stanzaBuilder.addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS);
-        return stanzaBuilder.getFinalStanza();
+        return stanzaBuilder.build();
     }
 
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java Tue Nov 24 07:51:04 2009
@@ -20,26 +20,23 @@
 
 package org.apache.vysper.xmpp.stanza;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.xmlfragment.AbstractXMLElementBuilder;
 import org.apache.vysper.xmpp.xmlfragment.Attribute;
-import org.apache.vysper.xmpp.xmlfragment.Renderer;
 import org.apache.vysper.xmpp.xmlfragment.XMLElement;
 import org.apache.vysper.xmpp.xmlfragment.XMLFragment;
-import org.apache.vysper.xmpp.xmlfragment.XMLText;
-import org.apache.vysper.xmpp.xmlfragment.NamespaceAttribute;
-import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.addressing.EntityImpl;
-
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
 
 /**
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class StanzaBuilder {
+public class StanzaBuilder extends AbstractXMLElementBuilder<StanzaBuilder, Stanza> {
 
     public static StanzaBuilder createIQStanza(Entity from, Entity to, IQStanzaType type, String id) {
         StanzaBuilder stanzaBuilder = new StanzaBuilder("iq");
@@ -173,7 +170,7 @@
      * @return forward stanza
      */
     public static Stanza createForwardStanza(Stanza original, Entity from, Entity to) {
-        return createForward(original, from, to).getFinalStanza();
+        return createForward(original, from, to).build();
     }
 
     class ElementStruct {
@@ -183,15 +180,6 @@
         public List<XMLFragment> innerFragments = null;
     }
 
-    /**
-     * parent hierarchy for current element
-     */
-    private Stack<ElementStruct> stack = new Stack<ElementStruct>();
-    private ElementStruct currentElement = null;
-    private Stanza resultingStanza = null;
-    private boolean isReset = false;
-
-
     public StanzaBuilder(String stanzaName) {
         this(stanzaName, null);
     }
@@ -201,116 +189,15 @@
     }
 
     public StanzaBuilder(String stanzaName, String namespaceURI, String namespacePrefix) {
-        startNewElement(stanzaName, namespaceURI, namespacePrefix, true);
-        resultingStanza = (Stanza)currentElement.element;
-        stack.push(currentElement);
+    	super(stanzaName, namespaceURI, namespacePrefix);
     }
     
-    private void startNewElement(String name, String namespaceURI, String namespacePrefix, boolean isStanza) {
-        // TODO assert that name does not contain namespace (":")
-        // TODO handle the namespace, given by URI, currently always NULL in Stanza/XMLElement constructors
-        ElementStruct element = new ElementStruct();
-        element.attributes = new ArrayList<Attribute>();
-        element.innerFragments = new ArrayList<XMLFragment>();
-        if (isStanza) {
-            element.element = new Stanza(namespaceURI, name, namespacePrefix, element.attributes, element.innerFragments);
+    protected XMLElement createElement(String namespaceURI, String name, String namespacePrefix, List<Attribute> attributes, List<XMLFragment> innerFragments) {
+        // when creating the first element, make it a stanza
+        if (currentElement == null) {
+            return new Stanza(namespaceURI, name, namespacePrefix, attributes, innerFragments);
         } else {
-            element.element = new XMLElement(namespaceURI, name, namespacePrefix, element.attributes, element.innerFragments);
-        }
-        currentElement = element;
-        
-        // must be done after set as currentElement
-        if(namespaceURI != null && namespaceURI.length() > 0) {
-            if(namespacePrefix == null || namespacePrefix.length() == 0) {
-                addNamespaceAttribute(namespaceURI);
-            } else {
-                addNamespaceAttribute(namespacePrefix, namespaceURI);
-            }
+            return new XMLElement(namespaceURI, name, namespacePrefix, attributes, innerFragments);
         }
     }
-
-
-    public StanzaBuilder addNamespaceAttribute(String value) {
-        addAttribute(new NamespaceAttribute(value));
-        return this;
-    }
-
-    public StanzaBuilder addNamespaceAttribute(String namespacePrefix, String value) {
-        addAttribute(new NamespaceAttribute(namespacePrefix, value));
-        return this;
-    }
-
-    public StanzaBuilder addAttribute(String name, String value) {
-    	addAttribute(new Attribute(name, value));
-    	return this;
-    }
-
-    public StanzaBuilder addAttribute(String namespaceUris, String name, String value) {
-    	addAttribute(new Attribute(namespaceUris, name, value));
-    	return this;
-    }
-
-    
-    public StanzaBuilder addAttribute(Attribute attribute) {
-        checkReset();
-        currentElement.attributes.add(attribute);
-        return this;
-    }
-
-    public StanzaBuilder addText(String text) {
-        checkReset();
-        currentElement.innerFragments.add(new XMLText(text));
-        return this;
-    }
-
-    public StanzaBuilder startInnerElement(String name) {
-        return this.startInnerElement(name, null);
-    }
-
-    public StanzaBuilder startInnerElement(String name, String namespaceURI) {
-        checkReset();
-
-        startNewElement(name, namespaceURI, null, false);
-
-        stack.peek().innerFragments.add(currentElement.element); // add new one to its parent
-
-        stack.push(currentElement);
-
-        return this;
-    }
-
-    public StanzaBuilder endInnerElement() {
-        checkReset();
-        if (stack.isEmpty()) throw new IllegalStateException("cannot end beyond top element");
-
-        stack.pop(); // take current off stack and forget (it was added to its parent before)
-        currentElement = stack.peek(); // we again deal with parent, which can be receive additions
-        return this;
-    }
-
-    public StanzaBuilder addPreparedElement(XMLElement preparedElement) {
-        checkReset();
-        currentElement.innerFragments.add(preparedElement);
-        return this;
-    }
-
-    /**
-     * the stanza can only be retrieved once
-     * @return retrieves the stanza and invalidates the builder
-     */
-    public Stanza getFinalStanza() {
-        checkReset();
-        Stanza returnStanza = resultingStanza;
-        resultingStanza = null;
-        isReset = true; // reset
-        stack.clear();
-        return returnStanza;
-    }
-
-    /**
-     * assure that the immutable Stanza object is not changed after it was retrieved
-     */
-    private void checkReset() {
-        if (isReset) throw new IllegalStateException("stanza builder was reset after retrieving stanza");
-    }
 }

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java Tue Nov 24 07:51:04 2009
@@ -72,7 +72,7 @@
                     .addAttribute("from", "me@vysper.org")
                     .addAttribute("to", "vysper.org")
                     .addNamespaceAttribute("jabber:client")
-                .getFinalStanza()
+                .build()
         );
         Stanza stanza = waitForStanza(session);
         assertNotNull(stanza);
@@ -81,7 +81,7 @@
                 new StanzaBuilder("starttls")
                     .addAttribute("from", "me@vysper.org")
                     .addNamespaceAttribute("urn:ietf:params:xml:ns:xmpp-tls")
-                .getFinalStanza()
+                .build()
         );
         stanza = waitForStanza(session);
         assertNotNull(stanza);
@@ -92,7 +92,7 @@
                     .addAttribute("from", "me@vysper.org")
                     .addAttribute("to", "vysper.org")
                     .addNamespaceAttribute("jabber:client")
-                .getFinalStanza()
+                .build()
         );
         stanza = waitForStanza(session);
         assertNotNull(stanza);

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/authorization/PlainTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/authorization/PlainTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/authorization/PlainTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/authorization/PlainTestCase.java Tue Nov 24 07:51:04 2009
@@ -36,7 +36,7 @@
 
     public void testPlainEmpty() throws XMLSemanticError {
 
-        Stanza stanza = new StanzaBuilder("plain").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL).getFinalStanza();
+        Stanza stanza = new StanzaBuilder("plain").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL).build();
 
         Stanza response = startMechanism(stanza);
         assertResponse(response, "malformed-request");
@@ -46,7 +46,7 @@
 
         Stanza stanza = new StanzaBuilder("plain").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL)
                 .addText("aEflkejidkj==")
-                .getFinalStanza();
+                .build();
 
         Stanza response = startMechanism(stanza);
         assertResponse(response, "malformed-request");
@@ -56,7 +56,7 @@
 
         Stanza stanza = new StanzaBuilder("plain").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL)
                 .addText(encode("dieter", "schluppkoweit"))
-                .getFinalStanza();
+                .build();
 
         Stanza response = startMechanism(stanza);
         assertResponse(response, "not-authorized");
@@ -66,7 +66,7 @@
 
         Stanza stanza = new StanzaBuilder("plain").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL)
                 .addText(encode("dieter", "schluppkoweit"))
-                .getFinalStanza();
+                .build();
 
         Stanza response = startMechanism(stanza);
         assertResponse(response, "not-authorized");
@@ -77,7 +77,7 @@
         String innerText = new String(Base64.encodeBase64("continuous".getBytes()));
 
         Stanza stanza = new StanzaBuilder("plain").addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL)
-                .addText(innerText).getFinalStanza();
+                .addText(innerText).build();
 
         Stanza response = startMechanism(stanza);
         assertResponse(response, "malformed-request");

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java Tue Nov 24 07:51:04 2009
@@ -67,7 +67,7 @@
         sessionContext.setSessionState(SessionState.AUTHENTICATED);
         resourceRegistry.bindSession(sessionContext);
 
-        Stanza stanza = StanzaBuilder.createMessageStanza(fromEntity, toEntity, "en", "Hello").getFinalStanza();
+        Stanza stanza = StanzaBuilder.createMessageStanza(fromEntity, toEntity, "en", "Hello").build();
 
         try {
             stanzaRelay.relay(toEntity, stanza, new IgnoreFailureStrategy());
@@ -88,7 +88,7 @@
         boolean noResourceRemains = resourceRegistry.unbindResource(resource);
         assertTrue(noResourceRemains);
 
-        Stanza stanza = StanzaBuilder.createMessageStanza(fromEntity, toEntity, "en", "Hello").getFinalStanza();
+        Stanza stanza = StanzaBuilder.createMessageStanza(fromEntity, toEntity, "en", "Hello").build();
 
         try {
             stanzaRelay.relay(toEntity, stanza, new IgnoreFailureStrategy());

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java Tue Nov 24 07:51:04 2009
@@ -56,7 +56,7 @@
         sessionContext.setServerToServer();
 
         TestIQHandler iqHandler = new TestIQHandler();
-        ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.getFinalStanza(), sessionContext.getServerRuntimeContext(), true, sessionContext, null);
+        ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null);
         Stanza responseStanza = responseStanzaContainer.getResponseStanza();
         XMLElementVerifier verifier = responseStanza.getVerifier();
         assertTrue("error", verifier.nameEquals("error"));
@@ -65,13 +65,13 @@
     public void testMissingID() {
         StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
         stanzaBuilder.addAttribute("type", "get");
-        assertIQError(stanzaBuilder.getFinalStanza());
+        assertIQError(stanzaBuilder.build());
     }
 
     public void testDoNotRespondToErrorWithError() {
         StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
         stanzaBuilder.addAttribute("type", "error");
-        Stanza stanza = stanzaBuilder.getFinalStanza(); // this stanza has no ID
+        Stanza stanza = stanzaBuilder.build(); // this stanza has no ID
 
         IQHandler iqHandler = new IQHandler();
         ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null);
@@ -94,14 +94,14 @@
         StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
         stanzaBuilder.addAttribute("id", "1");
         // missing: stanzaBuilder.addAttribute("type", "get");
-        assertIQError(stanzaBuilder.getFinalStanza());
+        assertIQError(stanzaBuilder.build());
     }
 
     public void testUnsupportedType() {
         StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
         stanzaBuilder.addAttribute("id", "1");
         stanzaBuilder.addAttribute("type", "bogus");
-        assertIQError(stanzaBuilder.getFinalStanza());
+        assertIQError(stanzaBuilder.build());
     }
 
     public void testGetAndSetSubelements() {
@@ -128,14 +128,14 @@
         stanzaTwoSubs.addAttribute("type", type);
         stanzaTwoSubs.startInnerElement("firstSub").endInnerElement();
         stanzaTwoSubs.startInnerElement("secondSub").endInnerElement();
-        assertIQError(stanzaTwoSubs.getFinalStanza());
+        assertIQError(stanzaTwoSubs.build());
     }
 
     private void assertAnySub(String type) {
         StanzaBuilder stanzaNoSub = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
         stanzaNoSub.addAttribute("id", "1");
         stanzaNoSub.addAttribute("type", type);
-        assertIQError(stanzaNoSub.getFinalStanza());
+        assertIQError(stanzaNoSub.build());
     }
 
     public void testGet() {
@@ -145,7 +145,7 @@
         stanzaBuilder.startInnerElement("getRequest").endInnerElement();
 
         TestIQHandler iqHandler = new TestIQHandler();
-        ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.getFinalStanza(), sessionContext.getServerRuntimeContext(), true, sessionContext, null);
+        ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null);
         IQStanza incomingStanza = iqHandler.getIncomingStanza();
 
         XMPPCoreStanzaVerifier verifier = incomingStanza.getCoreVerifier();

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java Tue Nov 24 07:51:04 2009
@@ -81,7 +81,7 @@
         assertNull(receiverUser.getNextStanza()); // nothing there yet
         assertNull(senderUser.getNextStanza()); // nothing there yet
 
-        Stanza stanza = stanzaBuilder.getFinalStanza();
+        Stanza stanza = stanzaBuilder.build();
         ResponseStanzaContainer responseStanzaContainer = messageHandler.execute(stanza, senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null);
 
         Stanza receivedStanza = receiverUser.getNextStanza();
@@ -106,11 +106,11 @@
         stanzaRelay.add(sender, senderQueue);
         stanzaRelay.add(receiver, receiverQueue);
 
-        Stanza successfulMessageStanza = StanzaBuilder.createMessageStanza(sender, receiver, "en", "info").getFinalStanza();
+        Stanza successfulMessageStanza = StanzaBuilder.createMessageStanza(sender, receiver, "en", "info").build();
         ResponseStanzaContainer responseStanzaContainer = messageHandler.execute(successfulMessageStanza, senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null);
         assertEquals(successfulMessageStanza, receiverQueue.getNext());
 
-        Stanza failureMessageStanza = StanzaBuilder.createMessageStanza(sender, noReceiver, "en", "info").getFinalStanza();
+        Stanza failureMessageStanza = StanzaBuilder.createMessageStanza(sender, noReceiver, "en", "info").build();
         responseStanzaContainer = messageHandler.execute(failureMessageStanza, senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null);
         assertNull(receiverQueue.getNext());
         Stanza rejectionStanza = senderQueue.getNext();

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/TestIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/TestIQHandler.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/TestIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/TestIQHandler.java Tue Nov 24 07:51:04 2009
@@ -60,7 +60,7 @@
 
         responseBuilder.addAttribute("type", IQStanzaType.RESULT.value());
 
-         return responseBuilder.getFinalStanza();
+         return responseBuilder.build();
     }
 
     public IQStanza getIncomingStanza() {

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java Tue Nov 24 07:51:04 2009
@@ -120,7 +120,7 @@
                 }
                 try {
                     Stanza finalStanza = StanzaBuilder.createIQStanza(requestStanza.getTo(), requestStanza.getFrom(), IQStanzaType.RESULT, requestStanza.getID()).
-                            startInnerElement("success").endInnerElement().getFinalStanza();
+                            startInnerElement("success").endInnerElement().build();
                     response = XMPPCoreStanza.getWrapper(finalStanza);
                 } catch (Throwable e) {
                     e.printStackTrace();
@@ -142,7 +142,7 @@
 
         StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(new EntityImpl("test", "vysper.org", null), null, IQStanzaType.GET, "id1");
         stanzaBuilder.startInnerElement("query").endInnerElement();
-        Stanza iqStanza = stanzaBuilder.getFinalStanza();
+        Stanza iqStanza = stanzaBuilder.build();
 
         ResponseStanzaContainer container = asyncIQGetHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, sessionStateHolder);
         assertTrue(container == null || container.hasNoResponse());

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java Tue Nov 24 07:51:04 2009
@@ -45,7 +45,7 @@
         setResourceState(initiatingUser.getBoundResourceId(), ResourceState.AVAILABLE_INTERESTED);
 
         // at first, initial presence
-        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), null, null, null, null).getFinalStanza());
+        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), null, null, null, null).build());
         handler.executeCore(initialPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
         assertTrue(0 < receiverRelay.getCountDelivered());
 
@@ -63,7 +63,7 @@
         resetRecordedStanzas(); // purge recorded 
 
         // directed unavailable presence 
-        XMPPCoreStanza directedUnvailPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), null, PresenceStanzaType.UNAVAILABLE, null, null).getFinalStanza());
+        XMPPCoreStanza directedUnvailPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), null, PresenceStanzaType.UNAVAILABLE, null, null).build());
         handler.executeCore(directedUnvailPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
         assertTrue(0 < receiverRelay.getCountDelivered());
 
@@ -86,7 +86,7 @@
         setResourceState(initiatingUser.getBoundResourceId(), ResourceState.AVAILABLE_INTERESTED);
 
         // at first, initial presence
-        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), null, null, null, null).getFinalStanza());
+        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), null, null, null, null).build());
         handler.executeCore(initialPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
 
         // directed presence has been recorded internally
@@ -96,7 +96,7 @@
         resetRecordedStanzas(); // purge recorded 
 
         // GENERAL unavailable presence 
-        XMPPCoreStanza generalUnavailable = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), null, null, PresenceStanzaType.UNAVAILABLE, null, null).getFinalStanza());
+        XMPPCoreStanza generalUnavailable = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), null, null, PresenceStanzaType.UNAVAILABLE, null, null).build());
         handler.executeCore(generalUnavailable, sessionContext.getServerRuntimeContext(), true, sessionContext);
         assertTrue(0 < receiverRelay.getCountDelivered());
         ResourceState resourceState = sessionContext.getServerRuntimeContext().getResourceRegistry().getResourceState(initiatingUser.getBoundResourceId());

Modified: mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java?rev=883618&r1=883617&r2=883618&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java Tue Nov 24 07:51:04 2009
@@ -38,7 +38,7 @@
     protected PresenceHandler handler = new PresenceHandler();
 
     public void testInitialPresence() throws BindException, EntityFormatException {
-        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), null, null, null, null, null).getFinalStanza());
+        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), null, null, null, null, null).build());
 
         assertEquals(ResourceState.CONNECTED, getResourceState());
         handler.executeCore(initialPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
@@ -91,7 +91,7 @@
     public void testInitialPresenceWithoutFrom() throws BindException, EntityFormatException, XMLSemanticError {
         // after setUp(), there is more than one bound resource
         // so, if leaving from == null, the handler will not know from which resource the presence really comes...
-        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(null, null, null, null, null, null).getFinalStanza());
+        XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(null, null, null, null, null, null).build());
 
         Stanza stanza = handler.executeCore(initialPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
         // ... and will give an error: