KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > xml > XmlPolicy


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  * Free SoftwareFoundation, Inc.
23  * 59 Temple Place, Suite 330
24  * Boston, MA 02111-1307 USA
25  *
26  * @author Scott Ferguson
27  */

28
29 package com.caucho.xml;
30
31 class XmlPolicy extends Policy {
32   /**
33    * Initialize the policy.
34    */

35   public void init()
36   {
37     super.init();
38
39   }
40
41   int openAction(XmlParser parser, QName node, QName next)
42     throws XmlParseException
43   {
44     return PUSH;
45   }
46
47   /**
48    * Returns the close action for the current tag. For XML, the only
49    * possible action is POP.
50    */

51   int elementCloseAction(XmlParser parser, QName name, String JavaDoc tagEnd)
52     throws XmlParseException
53   {
54     String JavaDoc qname = name.getName();
55
56     if (qname == "#document" && tagEnd.equals(""))
57       return POP;
58     else if (qname.equals(tagEnd))
59       return POP;
60     else {
61       if (qname.equals("#document"))
62         qname = L.l("end of document");
63       else
64         qname = "`</" + qname + ">'";
65       if (tagEnd.equals(""))
66         tagEnd = L.l("end of file");
67       else
68         tagEnd = "`</" + tagEnd + ">'";
69
70       throw parser.error(L.l("expected {0} at {1} (open at {2})",
71                              qname, tagEnd,
72                              String.valueOf(parser.getNodeLine())));
73     }
74   }
75 }
76
Popular Tags