001: /* *****************************************************************************
002: * LZSOAPUtils.java
003: * ****************************************************************************/
004:
005: /* J_LZ_COPYRIGHT_BEGIN *******************************************************
006: * Copyright 2001-2007 Laszlo Systems, Inc. All Rights Reserved. *
007: * Use is subject to license terms. *
008: * J_LZ_COPYRIGHT_END *********************************************************/
009:
010: package org.openlaszlo.remote.json.soap;
011:
012: import javax.xml.namespace.QName;
013: import java.io.IOException;
014: import java.io.StringReader;
015: import javax.xml.parsers.DocumentBuilder;
016: import javax.xml.parsers.DocumentBuilderFactory;
017: import javax.xml.parsers.ParserConfigurationException;
018: import org.apache.log4j.Logger;
019: import org.w3c.dom.Element;
020: import org.w3c.dom.NodeList;
021: import org.xml.sax.InputSource;
022: import org.xml.sax.SAXException;
023: import org.apache.axis.utils.XMLUtils;
024:
025: public class LZSOAPUtils {
026:
027: private static Logger mLogger = Logger.getLogger(LZSOAPUtils.class);
028:
029: /**
030: * Get prefix if it exists.
031: *
032: * @param tag tag string.
033: * @return prefix part of tag name, if it exists, else empty string.
034: */
035: static public String getPrefix(String tag) {
036: int index = tag.indexOf(':');
037: if (index == -1)
038: return "";
039: return tag.substring(0, index);
040: }
041:
042: /**
043: * Get local part of tag.
044: *
045: * @param tag tag string.
046: * @return local part of tag.
047: */
048: static public String getLocal(String tag) {
049: int index = tag.indexOf(':');
050: if (index == -1)
051: return tag;
052: return tag.substring(index + 1);
053: }
054:
055: static public Element xmlStringToElement(String xml)
056: throws IOException, SAXException {
057:
058: DocumentBuilder builder = null;
059: try {
060: builder = XMLUtils.getDocumentBuilder();
061: return builder
062: .parse(new InputSource(new StringReader(xml)))
063: .getDocumentElement();
064: } catch (ParserConfigurationException e) {
065: throw new SAXException(
066: /* (non-Javadoc)
067: * @i18n.test
068: * @org-mes="can't create document builder"
069: */
070: org.openlaszlo.i18n.LaszloMessages.getMessage(
071: LZSOAPUtils.class.getName(), "051018-73"));
072: } finally {
073: if (builder != null) {
074: XMLUtils.releaseDocumentBuilder(builder);
075: }
076: }
077:
078: }
079:
080: /**
081: * Get first element by namespace within element. If namespace is null, get
082: * first element in owner element's namespace.
083: *
084: * @param ns namespace.
085: * @param element owner element to search tags from.
086: * @param tag tag name.
087: * @return first element found, or null if none matched.
088: */
089: static Element getFirstElementByTagNameNS(String ns,
090: Element element, String tag) {
091: if (element == null)
092: return null;
093:
094: NodeList list;
095: if (ns == null)
096: list = element.getElementsByTagName(tag);
097: else
098: list = element.getElementsByTagNameNS(ns, tag);
099:
100: if (list.getLength() == 0)
101: return null;
102: return (Element) list.item(0);
103: }
104:
105: /**
106: * See getFirstElementByTagNameNS().
107: */
108: static Element getFirstElementByTagName(Element element, String tag) {
109: return getFirstElementByTagNameNS(null, element, tag);
110: }
111:
112: }
|