/* Woodstox Lite ("wool") XML processor
 *
 * Copyright (c) 2006- Tatu Saloranta, tatu.saloranta@iki.fi
 *
 * Licensed under the License specified in the file LICENSE which is
 * included with the source code.
 * You may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.fasterxml.aalto.sax;

import java.util.*;
import org.xml.sax.SAXNotRecognizedException;

Container for utility methods needed by the parser factory, or parser wrapper components.
/** * Container for utility methods needed by the parser factory, or * parser wrapper components. */
public final class SAXUtil { final static HashMap<String, SAXFeature> sStdFeatures; static { SAXFeature[] feats = SAXFeature.values(); sStdFeatures = new HashMap<String, SAXFeature>(feats.length); for (SAXFeature feat : feats) { sStdFeatures.put(feat.getSuffix(), feat); } } final static HashMap<String, SAXProperty> sStdProperties; static { SAXProperty[] props = SAXProperty.values(); sStdProperties = new HashMap<String, SAXProperty>(props.length); for (SAXProperty prop : props) { sStdProperties.put(prop.getSuffix(), prop); } } private SAXUtil() { } public static SAXFeature findStdFeature(String featURI) { if (featURI.startsWith(SAXFeature.STD_FEATURE_PREFIX)) { String suffix = featURI.substring(SAXFeature.STD_FEATURE_PREFIX.length()); return sStdFeatures.get(suffix); } return null; } public static SAXProperty findStdProperty(String featURI) { if (featURI.startsWith(SAXProperty.STD_PROPERTY_PREFIX)) { String suffix = featURI.substring(SAXProperty.STD_PROPERTY_PREFIX.length()); return sStdProperties.get(suffix); } return null; }
Convenience method that will return value (True/False) for the given standard feature, iff it has fixed (immutable) value for the current implementation. If value is not immutable, returns null
/** * Convenience method that will return value (True/False) for the * given standard feature, iff it has fixed (immutable) value for * the current implementation. If value is not immutable, returns * null */
public static Boolean getFixedStdFeatureValue(SAXFeature stdFeat) { switch (stdFeat) { case EXTERNAL_GENERAL_ENTITIES: // not yet implemented return Boolean.FALSE; case EXTERNAL_PARAMETER_ENTITIES: // not yet implemented return Boolean.FALSE; case IS_STANDALONE: // read-only, but only during parsing break; case LEXICAL_HANDLER_PARAMETER_ENTITIES: // won't be able to handle PEs, so this is n/a return Boolean.TRUE; case NAMESPACES: // can't disable return Boolean.TRUE; case NAMESPACE_PREFIXES: // can't enable: return Boolean.FALSE; case RESOLVE_DTD_URIS: // n/a for now return Boolean.FALSE; case STRING_INTERNING: // Can not disable return Boolean.TRUE; case UNICODE_NORMALIZATION_CHECKING: // not implemented as of yet, maybe never return Boolean.FALSE; case USE_ATTRIBUTES2: // read-only case USE_LOCATOR2: // read-only case USE_ENTITY_RESOLVER2: // read-only return Boolean.TRUE; case VALIDATION: // validation not yet implemented return Boolean.FALSE; case XMLNS_URIS: // without disabling ns-processing, irrelevant: return Boolean.TRUE; case XML_1_1: // not yet implemented return Boolean.FALSE; } return null; } public static void reportUnknownFeature(String name) throws SAXNotRecognizedException { throw new SAXNotRecognizedException("Feature '"+name+"' not recognized"); } public static void reportUnknownProperty(String name) throws SAXNotRecognizedException { throw new SAXNotRecognizedException("Property '"+name+"' not recognized"); } }