Thread.dumpStack();
throw new XmlBlasterException(glob, ErrorCode.INTERNAL_ILLEGALARGUMENT, ME, "Illegal argument in xpath match() call");
}
// Access cached query ...
DOMXPath expression;
try {
if (query.getPreparedQuery() == null) {
try {
expression = new DOMXPath(query.getQuery());
query.setPreparedQuery(expression);
} catch (JaxenException e) {
log.warning("Can't compile XPath filter expression '" + query + "':" + e.toString());
throw new XmlBlasterException(glob, ErrorCode.USER_CONFIGURATION, ME, "Can't compile XPath filter expression '" + query + "'", e);
}
}
else
expression = (DOMXPath)query.getPreparedQuery();
// Access cached xsl transformation
XslTransformer xslContentTransformer = null;
if (this.xslContentTransformerFileName != null) {
xslContentTransformer = (XslTransformer)query.getTransformer();
if (xslContentTransformer == null) {
Map xslProps = new TreeMap(); // TODO: Where to get them from
xslContentTransformer = new XslTransformer(glob, this.xslContentTransformerFileName, null, null, xslProps);
}
}
String xml = getXml(msgUnit).trim(); // Content or QoS
if (xml.length() == 0) {
log.warning("Provided XML string is empty, query does not match.");
return false;
}
Document doc = null;
try {
doc = getDocument(msgUnit);
}
catch (Throwable e) {
log.warning("The msgUnit can't be parsed, we reject it for this subscriber: " + e.toString());
return false;
}
if ( log.isLoggable(Level.FINEST))
log.finest("Matching query " + query.getQuery() + " against document: " + getXml(msgUnit));
boolean match = expression.booleanValueOf(doc);
if (log.isLoggable(Level.FINE))
log.fine("Query "+query.getQuery()+" did" + (match ? " match" : " not match"));
if (match == true && xslContentTransformer != null) {
String tmp = (this.matchAgainstQos) ? msgUnit.getContentStr() : xml;