Browse Source

Allow DTD locations to be URLs effectvely mapping the URLs

Submitted by:	Benoit MOUSSAUD <benoit.moussaud@criltelecom.com>


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269245 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 24 years ago
parent
commit
df8f6d006f
1 changed files with 26 additions and 2 deletions
  1. +26
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java

+ 26
- 2
src/main/org/apache/tools/ant/taskdefs/optional/ejb/DescriptorHandler.java View File

@@ -56,6 +56,7 @@ package org.apache.tools.ant.taskdefs.optional.ejb;

import java.util.*;
import java.io.*;
import java.net.*;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -129,6 +130,8 @@ public class DescriptorHandler extends org.xml.sax.HandlerBase {
private Hashtable resourceDTDs = new Hashtable();

private Hashtable urlDTDs = new Hashtable();

/**
* The directory containing the bean classes and interfaces. This is
* used for performing dependency file lookups.
@@ -160,6 +163,16 @@ public class DescriptorHandler extends org.xml.sax.HandlerBase {
owningTask.log("Mapped publicId " + publicId + " to resource " + location, Project.MSG_VERBOSE);
}
}

try {
if (publicId != null) {
URL urldtd = new URL(location);
urlDTDs.put(publicId, urldtd);
}
} catch ( java.net.MalformedURLException e) {
//ignored
}
}

public InputSource resolveEntity(String publicId, String systemId)
@@ -180,12 +193,23 @@ public class DescriptorHandler extends org.xml.sax.HandlerBase {
String dtdResourceName = (String)resourceDTDs.get(publicId);
if (dtdResourceName != null) {
InputStream is = this.getClass().getResourceAsStream(dtdResourceName);
if( is != null ) {
if (is != null) {
owningTask.log("Resolved " + publicId + " to local resource " + dtdResourceName, Project.MSG_VERBOSE);
return new InputSource(is);
}
}

URL dtdUrl = (URL) urlDTDs.get(publicId);
if ( dtdUrl != null ) {
try {
InputStream is = dtdUrl.openStream();
owningTask.log("Resolved " + publicId + " to url " + dtdUrl, Project.MSG_VERBOSE);
return new InputSource(is);
} catch ( IOException ioe) {
//ignore
}
}
owningTask.log("Could not resolve ( publicId: " + publicId + ", systemId: " + systemId + ") to a local entity",
Project.MSG_INFO);


Loading…
Cancel
Save