Imported GNU Classpath 0.90

Imported GNU Classpath 0.90
       * scripts/makemake.tcl: Set gnu/java/awt/peer/swing to ignore.
       * gnu/classpath/jdwp/VMFrame.java (SIZE): New constant.
       * java/lang/VMCompiler.java: Use gnu.java.security.hash.MD5.
       * java/lang/Math.java: New override file.
       * java/lang/Character.java: Merged from Classpath.
       (start, end): Now 'int's.
       (canonicalName): New field.
       (CANONICAL_NAME, NO_SPACES_NAME, CONSTANT_NAME): New constants.
       (UnicodeBlock): Added argument.
       (of): New overload.
       (forName): New method.
       Updated unicode blocks.
       (sets): Updated.
       * sources.am: Regenerated.
       * Makefile.in: Likewise.

From-SVN: r111942
This commit is contained in:
Mark Wielaard
2006-03-10 21:46:48 +00:00
parent 27079765d0
commit 8aa540d2f7
1367 changed files with 188789 additions and 22762 deletions
+90 -89
View File
@@ -137,6 +137,10 @@ public class XMLParser
final static int ATTRIBUTE_DEFAULT_REQUIRED = 33;
final static int ATTRIBUTE_DEFAULT_FIXED = 34;
// -- additional event types --
final static int START_ENTITY = 50;
final static int END_ENTITY = 51;
/**
* The current input.
*/
@@ -317,6 +321,12 @@ public class XMLParser
*/
private final boolean baseAware;
/**
* Whether to report extended event types (START_ENTITY and END_ENTITY)
* in addition to the standard event types. Used by the SAX parser.
*/
private final boolean extendedEventTypes;
/**
* The reporter to receive parsing warnings.
*/
@@ -389,6 +399,7 @@ public class XMLParser
boolean supportDTD,
boolean baseAware,
boolean stringInterning,
boolean extendedEventTypes,
XMLReporter reporter,
XMLResolver resolver)
{
@@ -400,6 +411,7 @@ public class XMLParser
this.supportDTD = supportDTD;
this.baseAware = baseAware;
this.stringInterning = stringInterning;
this.extendedEventTypes = extendedEventTypes;
this.reporter = reporter;
this.resolver = resolver;
if (validating)
@@ -446,6 +458,7 @@ public class XMLParser
boolean supportDTD,
boolean baseAware,
boolean stringInterning,
boolean extendedEventTypes,
XMLReporter reporter,
XMLResolver resolver)
{
@@ -457,6 +470,7 @@ public class XMLParser
this.supportDTD = supportDTD;
this.baseAware = baseAware;
this.stringInterning = stringInterning;
this.extendedEventTypes = extendedEventTypes;
this.reporter = reporter;
this.resolver = resolver;
if (validating)
@@ -561,7 +575,7 @@ public class XMLParser
return attrs.size();
}
public String getAttributeName(int index)
public String getAttributeLocalName(int index)
{
Attribute a = (Attribute) attrs.get(index);
return a.localName;
@@ -579,7 +593,7 @@ public class XMLParser
return a.prefix;
}
public QName getAttributeQName(int index)
public QName getAttributeName(int index)
{
Attribute a = (Attribute) attrs.get(index);
String namespaceURI = getNamespaceURI(a.prefix);
@@ -710,7 +724,7 @@ public class XMLParser
public int getNamespaceCount()
{
if (!namespaceAware)
if (!namespaceAware || namespaces.isEmpty())
return 0;
switch (event)
{
@@ -984,10 +998,10 @@ public class XMLParser
if (event == XMLStreamConstants.END_ELEMENT)
{
// Pop namespace context
if (namespaceAware)
if (namespaceAware && !namespaces.isEmpty())
namespaces.removeFirst();
// Pop base context
if (baseAware)
if (baseAware && !bases.isEmpty())
bases.removeFirst();
}
if (!startEntityStack.isEmpty())
@@ -995,16 +1009,16 @@ public class XMLParser
String entityName = (String) startEntityStack.removeFirst();
buf.setLength(0);
buf.append(entityName);
event = XMLStreamConstants.START_ENTITY;
return event;
event = START_ENTITY;
return extendedEventTypes ? event : next();
}
else if (!endEntityStack.isEmpty())
{
String entityName = (String) endEntityStack.removeFirst();
buf.setLength(0);
buf.append(entityName);
event = XMLStreamConstants.END_ENTITY;
return event;
event = END_ENTITY;
return extendedEventTypes ? event : next();
}
try
{
@@ -1484,7 +1498,6 @@ public class XMLParser
{
if (!externalEntities)
return;
InputStream in = null;
String url = absolutize(input.systemId, ids.systemId);
// Check for recursion
for (Iterator i = inputStack.iterator(); i.hasNext(); )
@@ -1497,12 +1510,13 @@ public class XMLParser
}
if (name == null || "".equals(name))
report = false;
if (in == null && url != null && resolver != null)
InputStream in = null;
if (resolver != null)
{
if (resolver instanceof XMLResolver2)
in = ((XMLResolver2) resolver).resolve(ids.publicId, url);
else
in = resolver.resolve(url);
Object obj = resolver.resolveEntity(ids.publicId, url, getXMLBase(),
null);
if (obj instanceof InputStream)
in = (InputStream) obj;
}
if (in == null)
in = resolve(url);
@@ -1535,12 +1549,13 @@ public class XMLParser
* @param base the current base URL
* @param href the (absolute or relative) URL to resolve
*/
static String absolutize(String base, String href)
public static String absolutize(String base, String href)
throws MalformedURLException
{
if (href == null)
return null;
int ci = href.indexOf(':');
if (ci > 1 && isLowercaseAscii(href.substring(0, ci)))
if (ci > 1 && isURLScheme(href.substring(0, ci)))
{
// href is absolute already
return href;
@@ -1565,40 +1580,23 @@ public class XMLParser
if (!base.endsWith("/"))
base += "/";
}
if (href.startsWith("/"))
{
if (base.startsWith("file:"))
return "file://" + href;
int i = base.indexOf("://");
if (i != -1)
{
i = base.indexOf('/', i + 3);
if (i != -1)
base = base.substring(0, i);
}
}
else
{
while (href.startsWith(".."))
{
int i = base.lastIndexOf('/', base.length() - 2);
if (i != -1)
base = base.substring(0, i + 1);
href = href.substring(2);
if (href.startsWith("/"))
href = href.substring(1);
}
}
return base + href;
return new URL(new URL(base), href).toString();
}
private static boolean isLowercaseAscii(String text)
/**
* Indicates whether the specified characters match the scheme portion of
* a URL.
* @see RFC 1738 section 2.1
*/
private static boolean isURLScheme(String text)
{
int len = text.length();
for (int i = 0; i < len; i++)
{
char c = text.charAt(i);
if (c < 97 || c > 122)
if (c == '+' || c == '.' || c == '-')
continue;
if (c < 65 || (c > 90 && c < 97) || c > 122)
return false;
}
return true;
@@ -1607,7 +1605,7 @@ public class XMLParser
/**
* Returns an input stream for the given URL.
*/
private InputStream resolve(String url)
static InputStream resolve(String url)
throws IOException
{
try
@@ -1618,6 +1616,12 @@ public class XMLParser
{
return null;
}
catch (IOException e)
{
IOException e2 = new IOException("error resolving " + url);
e2.initCause(e);
throw e2;
}
}
/**
@@ -1891,7 +1895,10 @@ public class XMLParser
throws IOException, XMLStreamException
{
requireWhitespace();
boolean saved = expandPE;
expandPE = (inputStack.size() > 1);
String name = readNmtoken(true);
expandPE = saved;
requireWhitespace();
readContentspec(name);
skipWhitespace();
@@ -2106,7 +2113,10 @@ public class XMLParser
throws IOException, XMLStreamException
{
requireWhitespace();
boolean saved = expandPE;
expandPE = (inputStack.size() > 1);
String elementName = readNmtoken(true);
expandPE = saved;
boolean white = tryWhitespace();
while (!tryRead('>'))
{
@@ -2419,11 +2429,11 @@ public class XMLParser
}
else
{
if (!isNameStartCharacter(cp[0]))
if (!isNameStartCharacter(cp[0], input.xml11))
error("malformed reference in entity value", value);
for (int i = 1; i < cp.length; i++)
{
if (!isNameCharacter(cp[i]))
if (!isNameCharacter(cp[i], input.xml11))
error("malformed reference in entity value", value);
}
}
@@ -2838,8 +2848,6 @@ public class XMLParser
error("Duplicate default namespace declaration");
if (XMLConstants.XML_NS_URI.equals(attr.value))
error("can't bind XML namespace");
if ("".equals(attr.value) && !input.xml11)
error("illegal use of 1.1-style prefix unbinding in 1.0 document");
ctx.put(XMLConstants.DEFAULT_NS_PREFIX, attr.value);
return true;
}
@@ -3087,7 +3095,15 @@ public class XMLParser
break;
case 0x3c: // '<'
reset();
read(tmpBuf, 0, i);
// read i characters
int count = 0, remaining = i;
do
{
int r = read(tmpBuf, 0, remaining);
count += r;
remaining -= r;
}
while (count < i);
i = len;
if (coalescing && tryRead(TEST_CDATA))
readUntil(TEST_END_CDATA); // read CDATA section into buf
@@ -3258,15 +3274,7 @@ public class XMLParser
reset();
char[] ref = readCharacterRef(hex ? 16 : 10);
for (int i = 0; i < ref.length; i++)
{
char x = ref[i];
if ((flags & (LIT_ATTRIBUTE | LIT_PUBID)) != 0 &&
(x == 0x0a || x == 0x0d))
x = 0x20; // normalize
else if ((flags & LIT_ATTRIBUTE) != 0 && x == 0x09)
x = 0x20; // normalize
literalBuf.append(x);
}
literalBuf.append(ref[i]);
entities = true;
continue;
}
@@ -3469,13 +3477,13 @@ public class XMLParser
int c = readCh();
if (isName)
{
if (!isNameStartCharacter(c))
if (!isNameStartCharacter(c, input.xml11))
error("not a name start character",
"U+" + Integer.toHexString(c));
}
else
{
if (!isNameCharacter(c))
if (!isNameCharacter(c, input.xml11))
error("not a name character",
"U+" + Integer.toHexString(c));
}
@@ -3510,7 +3518,7 @@ public class XMLParser
reset();
return intern(buf.toString());
default:
if (!isNameCharacter(c))
if (!isNameCharacter(c, input.xml11))
error("not a name character",
"U+" + Integer.toHexString(c));
else
@@ -3523,7 +3531,7 @@ public class XMLParser
/**
* Indicates whether the specified Unicode character is an XML 1.1 Char.
*/
private boolean isXML11Char(int c)
public static boolean isXML11Char(int c)
{
return ((c >= 0x0001 && c <= 0xD7FF) ||
(c >= 0xE000 && c < 0xFFFD) || // NB exclude 0xfffd
@@ -3534,7 +3542,7 @@ public class XMLParser
* Indicates whether the specified Unicode character is an XML 1.1
* RestrictedChar.
*/
private boolean isXML11RestrictedChar(int c)
public static boolean isXML11RestrictedChar(int c)
{
return ((c >= 0x0001 && c <= 0x0008) ||
(c >= 0x000B && c <= 0x000C) ||
@@ -3556,17 +3564,17 @@ public class XMLParser
return false;
if (isName)
{
if (!isNameStartCharacter(cp[0]))
if (!isNameStartCharacter(cp[0], input.xml11))
return false;
}
else
{
if (!isNameCharacter(cp[0]))
if (!isNameCharacter(cp[0], input.xml11))
return false;
}
for (int i = 1; i < cp.length; i++)
{
if (!isNameCharacter(cp[i]))
if (!isNameCharacter(cp[i], input.xml11))
return false;
}
return true;
@@ -3581,9 +3589,9 @@ public class XMLParser
* Indicates whether the specified Unicode character is a Name start
* character.
*/
private boolean isNameStartCharacter(int c)
public static boolean isNameStartCharacter(int c, boolean xml11)
{
if (input.xml11)
if (xml11)
return ((c >= 0x0041 && c <= 0x005a) ||
(c >= 0x0061 && c <= 0x007a) ||
c == 0x3a |
@@ -3608,9 +3616,9 @@ public class XMLParser
* Indicates whether the specified Unicode character is a Name non-initial
* character.
*/
private boolean isNameCharacter(int c)
public static boolean isNameCharacter(int c, boolean xml11)
{
if (input.xml11)
if (xml11)
return ((c >= 0x0041 && c <= 0x005a) ||
(c >= 0x0061 && c <= 0x007a) ||
(c >= 0x0030 && c <= 0x0039) ||
@@ -4255,6 +4263,7 @@ public class XMLParser
true, // supportDTD
true, // baseAware
true, // stringInterning
true, // extendedEventTypes
null,
null);
XMLStreamReader reader = p;
@@ -4286,7 +4295,7 @@ public class XMLParser
"='"+reader.getNamespaceURI(i)+"'");
l = reader.getAttributeCount();
for (int i = 0; i < l; i++)
System.out.println("\tattribute "+reader.getAttributeQName(i)+
System.out.println("\tattribute "+reader.getAttributeName(i)+
"='"+reader.getAttributeValue(i)+"'");
break;
case XMLStreamConstants.END_ELEMENT:
@@ -4314,10 +4323,10 @@ public class XMLParser
System.out.println("PROCESSING_INSTRUCTION "+reader.getPITarget()+
" "+reader.getPIData());
break;
case XMLStreamConstants.START_ENTITY:
case START_ENTITY:
System.out.println("START_ENTITY "+reader.getText());
break;
case XMLStreamConstants.END_ENTITY:
case END_ENTITY:
System.out.println("END_ENTITY "+reader.getText());
break;
default:
@@ -4330,7 +4339,7 @@ public class XMLParser
Location l = reader.getLocation();
System.out.println("At line "+l.getLineNumber()+
", column "+l.getColumnNumber()+
" of "+l.getLocationURI());
" of "+l.getSystemId());
throw e;
}
}
@@ -4938,19 +4947,6 @@ public class XMLParser
}
/**
* Compatibility interface that can be used to resolve based on a public
* ID, not just an URL.
*/
interface XMLResolver2
extends XMLResolver
{
InputStream resolve(String publicId, String systemId)
throws XMLStreamException;
}
/**
* An XML input source.
*/
@@ -5019,7 +5015,12 @@ public class XMLParser
return line;
}
public String getLocationURI()
public String getPublicId()
{
return publicId;
}
public String getSystemId()
{
return systemId;
}