01: /**
02: * JOnAS: Java(TM) Open Application Server
03: * Copyright (C) 1999-2004 Bull S.A.
04: * Contact: jonas-team@objectweb.org
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2.1 of the License, or 1any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19: * USA
20: *
21: * --------------------------------------------------------------------------
22: * $Id: AnonymousQNameRule.java 5766 2004-11-19 09:23:01Z sauthieg $
23: * --------------------------------------------------------------------------
24: */package org.objectweb.jonas_lib.deployment.rules;
25:
26: import javax.xml.namespace.QName;
27:
28: import org.objectweb.jonas_lib.deployment.xml.Qname;
29:
30: /**
31: * Rule that create a new QName object for anonymous-type-qname in jaxrpc mapping file.
32: * @author Guillaume Sauthier
33: */
34: public class AnonymousQNameRule extends QNameRule {
35:
36: /**
37: * This method is called when the body of a matching XML element is
38: * encountered. If the element has no body, this method is not called at
39: * all. The default implementation delegates to the deprecated method
40: * body without the namespace and name parameters, to retain backwards
41: * compatibility.
42: * @param namespace the namespace URI of the matching element,
43: * or an empty string if the parser is not namespace
44: * aware or the element has no namespace
45: * @param name the local name if the parser is namespace aware,
46: * or just the element name otherwise
47: * @param text The text of the body of this element
48: */
49: public void body(String namespace, String name, String text) {
50:
51: // Check that there the value of the element is not null
52: if (text == null) {
53: throw new IllegalArgumentException(
54: "No QName found in the body of the tag " + name);
55: }
56:
57: // Extract namespace and localpart
58: int colonIndex = text.lastIndexOf(":");
59: if (colonIndex == -1) {
60: throw new IllegalArgumentException(
61: "QName must be on the form namespace:localpart for element "
62: + name);
63: }
64: String namespaceURI = text.substring(0, colonIndex);
65: String localPart = text
66: .substring(colonIndex + 1, text.length());
67:
68: // Build QName
69: QName qName = new QName(namespaceURI, localPart);
70:
71: // Add this QName to the element at the top of the stack
72: Qname qNameObject = (Qname) digester.peek();
73: qNameObject.setName(name);
74: qNameObject.setQName(qName);
75:
76: }
77:
78: }
|