1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.org.xml.sax.support;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ContentHandler;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.DTDHandler;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.EntityResolver;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ErrorHandler;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXNotRecognizedException;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXNotSupportedException;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.XMLReader;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A helper class that implements the SAX XMLReader interface and logs method
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * calls.
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class MockReader implements XMLReader {
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private MethodLogger logger;
42f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private ContentHandler contentHandler;
44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private DTDHandler dtdHandler;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private EntityResolver resolver;
48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private ErrorHandler errorHandler;
50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Set<String> features = new HashSet<String>();
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Map<String, Object> properties = new HashMap<String, Object>();
54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public MockReader(MethodLogger logger) {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super();
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.logger = logger;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ContentHandler getContentHandler() {
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return contentHandler;
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public DTDHandler getDTDHandler() {
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return dtdHandler;
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public EntityResolver getEntityResolver() {
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return resolver;
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ErrorHandler getErrorHandler() {
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return errorHandler;
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean getFeature(String name) throws SAXNotRecognizedException,
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXNotSupportedException {
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return features.contains(name);
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Object getProperty(String name) throws SAXNotRecognizedException,
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXNotSupportedException {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return properties.get(name);
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void parse(InputSource input) throws IOException, SAXException {
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        logger.add("parse", input);
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void parse(String systemId) throws IOException, SAXException {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        logger.add("parse", systemId);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setContentHandler(ContentHandler handler) {
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.contentHandler = handler;
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setDTDHandler(DTDHandler handler) {
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.dtdHandler = handler;
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setEntityResolver(EntityResolver resolver) {
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.resolver = resolver;
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setErrorHandler(ErrorHandler handler) {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.errorHandler = handler;
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setFeature(String name, boolean value) {
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (value) {
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            features.add(name);
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } else {
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            features.remove(name);
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setProperty(String name, Object value) throws SAXNotRecognizedException,
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SAXNotSupportedException {
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (value == null) {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            properties.remove(name);
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } else {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            properties.put(name, value);
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
129