blob: 52ab6cec6dea11e29c1e94f9cfb513dc217979a0 [file] [log] [blame]
Jake Slack03928ae2014-05-13 18:41:56 -07001//
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
19package org.eclipse.jetty.webapp;
20
21import java.net.URL;
22
23import org.eclipse.jetty.util.resource.Resource;
24import org.eclipse.jetty.xml.XmlParser;
25
26public abstract class Descriptor
27{
28 protected Resource _xml;
29 protected XmlParser.Node _root;
30 protected XmlParser _parser;
31 protected boolean _validating;
32
33 public Descriptor (Resource xml)
34 {
35 _xml = xml;
36 }
37
38 public abstract XmlParser newParser()
39 throws ClassNotFoundException;
40
41 public abstract void ensureParser()
42 throws ClassNotFoundException;
43
44 protected void redirect(XmlParser parser, String resource, URL source)
45 {
46 if (source != null) parser.redirectEntity(resource, source);
47 }
48
49
50 public void setValidating (boolean validating)
51 {
52 _validating = validating;
53 }
54
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
74 public Resource getResource ()
75 {
76 return _xml;
77 }
78
79 public XmlParser.Node getRoot ()
80 {
81 return _root;
82 }
83
84 public String toString()
85 {
86 return this.getClass().getSimpleName()+"("+_xml+")";
87 }
88}