KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > jonas_lib > deployment > rules > AnonymousQNameRule


1 /**
2  * JOnAS: Java(TM) Open Application Server
3  * Copyright (C) 1999-2004 Bull S.A.
4  * Contact: jonas-team@objectweb.org
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * 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,v 1.1 2004/11/19 09:23:01 sauthieg Exp $
23  * --------------------------------------------------------------------------
24  */

25 package org.objectweb.jonas_lib.deployment.rules;
26
27 import javax.xml.namespace.QName JavaDoc;
28
29 import org.objectweb.jonas_lib.deployment.xml.Qname;
30
31
32 /**
33  * Rule that create a new QName object for anonymous-type-qname in jaxrpc mapping file.
34  * @author Guillaume Sauthier
35  */

36 public class AnonymousQNameRule extends QNameRule {
37
38     /**
39      * This method is called when the body of a matching XML element is
40      * encountered. If the element has no body, this method is not called at
41      * all. The default implementation delegates to the deprecated method
42      * body without the namespace and name parameters, to retain backwards
43      * compatibility.
44      * @param namespace the namespace URI of the matching element,
45      * or an empty string if the parser is not namespace
46      * aware or the element has no namespace
47      * @param name the local name if the parser is namespace aware,
48      * or just the element name otherwise
49      * @param text The text of the body of this element
50      */

51     public void body(String JavaDoc namespace, String JavaDoc name, String JavaDoc text) {
52
53         // Check that there the value of the element is not null
54
if (text == null) {
55             throw new IllegalArgumentException JavaDoc("No QName found in the body of the tag " + name);
56         }
57
58         // Extract namespace and localpart
59
int colonIndex = text.lastIndexOf(":");
60         if (colonIndex == -1) {
61             throw new IllegalArgumentException JavaDoc("QName must be on the form namespace:localpart for element " + name);
62         }
63         String JavaDoc namespaceURI = text.substring(0, colonIndex);
64         String JavaDoc localPart = text.substring(colonIndex + 1, text.length());
65
66         // Build QName
67
QName JavaDoc qName = new QName JavaDoc(namespaceURI, localPart);
68
69         // Add this QName to the element at the top of the stack
70
Qname qNameObject = (Qname) digester.peek();
71         qNameObject.setName(name);
72         qNameObject.setQName(qName);
73
74     }
75
76 }
77
Popular Tags