localentityresolver.java

来自「ejb3 java session bean」· Java 代码 · 共 114 行

JAVA
114
字号
/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. * * This is free software; you can redistribute it and/or modify it * under the terms of the JBPM BPEL PUBLIC LICENSE AGREEMENT as * published by JBoss Inc.; either version 1.0 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */package org.jbpm.bpel.xml.util;import java.io.FileNotFoundException;import java.io.IOException;import java.net.URL;import java.util.HashMap;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.xml.sax.EntityResolver;import org.xml.sax.InputSource;/** * @author Juan Cantu * @version $Revision: 1.15 $ $Date: 2007/11/25 13:03:14 $ */class LocalEntityResolver implements EntityResolver {  private Map entityRegistry = createEntityRegistry();  private static final Log log = LogFactory.getLog(LocalEntityResolver.class);  public static final EntityResolver INSTANCE = new LocalEntityResolver();  private LocalEntityResolver() {  }  /**   * Gets the local resource that corresponds to the given identifiers by looking up the local   * entity registry.   * @param publicId the public ID of the entity   * @param systemId the system ID of the entity   * @return the input source for the entity, or <code>null</code> if the given identifiers do not   * match any entity   * @throws IOException if the local resource cannot be found   */  public InputSource resolveEntity(String publicId, String systemId) throws IOException {    String entityResource = getResourceForEntity(publicId, systemId);    if (entityResource == null)      return null;    URL entityURL = getClass().getResource(entityResource);    if (entityURL == null)      throw new FileNotFoundException(entityResource);    return new InputSource(entityURL.toExternalForm());  }  /**   * Gets the local resource that corresponds to the identified entity by looking up the entity   * registry. The public ID is used first. If not found, the entity is searched with the system ID.   * @param publicId the public ID of the entity, can be <code>null</code>   * @param systemId the system ID of the entity, can be <code>null</code>   * @return the local filename   */  private String getResourceForEntity(String publicId, String systemId) {    if (publicId != null) {      String resource = (String) entityRegistry.get(publicId);      if (resource != null) {        if (log.isTraceEnabled())          log.trace("resolved: publicId=" + publicId + ", resource=" + resource);        return resource;      }    }    if (systemId != null) {      String resource = (String) entityRegistry.get(systemId);      if (resource != null) {        if (log.isTraceEnabled())          log.trace("resolved: systemId=" + systemId + ", resource=" + resource);        return resource;      }    }    return null;  }  private static Map createEntityRegistry() {    HashMap entityRegistry = new HashMap();    // xml schema data type definitions    entityRegistry.put("-//W3C//DTD XMLSCHEMA 200102//EN", "XMLSchema.dtd");    entityRegistry.put("datatypes", "datatypes.dtd");    // xml namespace schema    entityRegistry.put("http://www.w3.org/2001/xml.xsd", "xml.xsd");    // wsdl schema    entityRegistry.put("http://schemas.xmlsoap.org/wsdl/", "wsdl.xsd");    // j2ee schema    entityRegistry.put("http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd",        "j2ee_jaxrpc_mapping_1_1.xsd");    entityRegistry.put("http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd",        "j2ee_web_services_client_1_1.xsd");    return entityRegistry;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?