in serializer/src/main/java/org/apache/xml/serializer/utils/URI.java [725:842]
private void initializePath(String p_uriSpec) throws MalformedURIException
{
if (p_uriSpec == null)
{
throw new MalformedURIException(
"Cannot initialize path from null string!");
}
int index = 0;
int start = 0;
int end = p_uriSpec.length();
char testChar = '\0';
// path - everything up to query string or fragment
while (index < end)
{
testChar = p_uriSpec.charAt(index);
if (testChar == '?' || testChar == '#')
{
break;
}
// check for valid escape sequence
if (testChar == '%')
{
if (index + 2 >= end ||!isHex(p_uriSpec.charAt(index + 1))
||!isHex(p_uriSpec.charAt(index + 2)))
{
throw new MalformedURIException(
Utils.messages.createMessage(MsgKey.ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE, null)); //"Path contains invalid escape sequence!");
}
}
else if (!isReservedCharacter(testChar)
&&!isUnreservedCharacter(testChar))
{
if ('\\' != testChar)
throw new MalformedURIException(Utils.messages.createMessage(MsgKey.ER_PATH_INVALID_CHAR, new Object[]{String.valueOf(testChar)})); //"Path contains invalid character: "
//+ testChar);
}
index++;
}
m_path = p_uriSpec.substring(start, index);
// query - starts with ? and up to fragment or end
if (testChar == '?')
{
index++;
start = index;
while (index < end)
{
testChar = p_uriSpec.charAt(index);
if (testChar == '#')
{
break;
}
if (testChar == '%')
{
if (index + 2 >= end ||!isHex(p_uriSpec.charAt(index + 1))
||!isHex(p_uriSpec.charAt(index + 2)))
{
throw new MalformedURIException(
"Query string contains invalid escape sequence!");
}
}
else if (!isReservedCharacter(testChar)
&&!isUnreservedCharacter(testChar))
{
throw new MalformedURIException(
"Query string contains invalid character:" + testChar);
}
index++;
}
m_queryString = p_uriSpec.substring(start, index);
}
// fragment - starts with #
if (testChar == '#')
{
index++;
start = index;
while (index < end)
{
testChar = p_uriSpec.charAt(index);
if (testChar == '%')
{
if (index + 2 >= end ||!isHex(p_uriSpec.charAt(index + 1))
||!isHex(p_uriSpec.charAt(index + 2)))
{
throw new MalformedURIException(
"Fragment contains invalid escape sequence!");
}
}
else if (!isReservedCharacter(testChar)
&&!isUnreservedCharacter(testChar))
{
throw new MalformedURIException(
"Fragment contains invalid character:" + testChar);
}
index++;
}
m_fragment = p_uriSpec.substring(start, index);
}
}