@Override
  public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId)
      throws SAXException, IOException {
    if (publicId == null || systemId == null) {
      // Likely schema based, resolve through plug-in resolvers.
      return resolveEntityByEntityResolvers(name, publicId, baseURI, systemId);
    }
    // Figure out the location for the publicId.
    String location;
    if (SYSTEM_ID_3_0.equals(systemId) || PUBLIC_ID_3_0.equals(publicId)) {
      location = DTD_3_0_LOCATION;
      version = CacheXmlVersion.GEMFIRE_3_0;
    } else if (SYSTEM_ID_4_0.equals(systemId) || PUBLIC_ID_4_0.equals(publicId)) {
      location = DTD_4_0_LOCATION;
      version = CacheXmlVersion.GEMFIRE_4_0;
    } else if (SYSTEM_ID_4_1.equals(systemId) || PUBLIC_ID_4_1.equals(publicId)) {
      location = DTD_4_1_LOCATION;
      version = CacheXmlVersion.GEMFIRE_4_1;
    } else if (SYSTEM_ID_5_0.equals(systemId) || PUBLIC_ID_5_0.equals(publicId)) {
      location = DTD_5_0_LOCATION;
      version = CacheXmlVersion.GEMFIRE_5_0;
    } else if (SYSTEM_ID_5_1.equals(systemId) || PUBLIC_ID_5_1.equals(publicId)) {
      location = DTD_5_1_LOCATION;
      version = CacheXmlVersion.GEMFIRE_5_1;
    } else if (SYSTEM_ID_5_5.equals(systemId) || PUBLIC_ID_5_5.equals(publicId)) {
      location = DTD_5_5_LOCATION;
      version = CacheXmlVersion.GEMFIRE_5_5;
    } else if (SYSTEM_ID_5_7.equals(systemId) || PUBLIC_ID_5_7.equals(publicId)) {
      location = DTD_5_7_LOCATION;
      version = CacheXmlVersion.GEMFIRE_5_7;
    } else if (SYSTEM_ID_5_8.equals(systemId) || PUBLIC_ID_5_8.equals(publicId)) {
      location = DTD_5_8_LOCATION;
      version = CacheXmlVersion.GEMFIRE_5_8;
    } else if (SYSTEM_ID_6_0.equals(systemId) || PUBLIC_ID_6_0.equals(publicId)) {
      location = DTD_6_0_LOCATION;
      version = CacheXmlVersion.GEMFIRE_6_0;
    } else if (SYSTEM_ID_6_1.equals(systemId) || PUBLIC_ID_6_1.equals(publicId)) {
      location = DTD_6_1_LOCATION;
      version = CacheXmlVersion.GEMFIRE_6_1;
    } else if (SYSTEM_ID_6_5.equals(systemId) || PUBLIC_ID_6_5.equals(publicId)) {
      location = DTD_6_5_LOCATION;
      version = CacheXmlVersion.GEMFIRE_6_5;
    } else if (SYSTEM_ID_6_6.equals(systemId) || PUBLIC_ID_6_6.equals(publicId)) {
      location = DTD_6_6_LOCATION;
      version = CacheXmlVersion.GEMFIRE_6_6;
    } else if (SYSTEM_ID_7_0.equals(systemId) || PUBLIC_ID_7_0.equals(publicId)) {
      location = DTD_7_0_LOCATION;
      version = CacheXmlVersion.GEMFIRE_7_0;
    } else if (SYSTEM_ID_8_0.equals(systemId) || PUBLIC_ID_8_0.equals(publicId)) {
      location = DTD_8_0_LOCATION;
      version = CacheXmlVersion.GEMFIRE_8_0;
    } else {
      // Instruct the XML parser to open a URI connection to the
      // system id.
      version = CacheXmlVersion.valueForVersion(VERSION_LATEST); // we won't know the version, so
                                                                 // assume the latest
      return resolveEntityByEntityResolvers(name, publicId, baseURI, systemId);
    }
    InputSource result;
    InputStream stream = ClassPathLoader.getLatest().getResourceAsStream(getClass(), location);
    if (stream != null) {
      result = new InputSource(stream);
    } else {
      throw new SAXNotRecognizedException(
          String.format("DTD not found: %s", location));
    }
    return result;
  }
Given a public id, attempt to resolve it to a DTD. Returns an <code>InputSoure</code> for the
DTD.
geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXml.java