1 //
2 //  ========================================================================
3 //  Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
4 //  ------------------------------------------------------------------------
5 //  All rights reserved. This program and the accompanying materials
6 //  are made available under the terms of the Eclipse Public License v1.0
7 //  and Apache License v2.0 which accompanies this distribution.
8 //
9 //      The Eclipse Public License is available at
10 //      http://www.eclipse.org/legal/epl-v10.html
11 //
12 //      The Apache License v2.0 is available at
13 //      http://www.opensource.org/licenses/apache2.0.php
14 //
15 //  You may elect to redistribute this code under either of these licenses.
16 //  ========================================================================
17 //
18 
19 package org.eclipse.jetty.webapp;
20 
21 import java.net.URL;
22 
23 import org.eclipse.jetty.util.resource.Resource;
24 import org.eclipse.jetty.xml.XmlParser;
25 
26 public abstract class Descriptor
27 {
28     protected Resource _xml;
29     protected XmlParser.Node _root;
30     protected XmlParser _parser;
31     protected boolean _validating;
32 
Descriptor(Resource xml)33     public Descriptor (Resource xml)
34     {
35         _xml = xml;
36     }
37 
newParser()38     public abstract XmlParser newParser()
39     throws ClassNotFoundException;
40 
ensureParser()41     public abstract void ensureParser()
42     throws ClassNotFoundException;
43 
redirect(XmlParser parser, String resource, URL source)44     protected void redirect(XmlParser parser, String resource, URL source)
45     {
46         if (source != null) parser.redirectEntity(resource, source);
47     }
48 
49 
setValidating(boolean validating)50     public void setValidating (boolean validating)
51     {
52        _validating = validating;
53     }
54 
parse()55     public void parse ()
56     throws Exception
57     {
58         if (_parser == null)
59            ensureParser();
60 
61         if (_root == null)
62         {
63             try
64             {
65                 _root = _parser.parse(_xml.getInputStream());
66             }
67             finally
68             {
69                 _xml.release();
70             }
71         }
72     }
73 
getResource()74     public Resource getResource ()
75     {
76         return _xml;
77     }
78 
getRoot()79     public XmlParser.Node getRoot ()
80     {
81         return _root;
82     }
83 
toString()84     public String toString()
85     {
86         return this.getClass().getSimpleName()+"("+_xml+")";
87     }
88 }
89