mirror of https://github.com/apache/activemq.git
Merge pull request #871 from lucastetreault/AMQ-9005
[AMQ-9005] Clean up remaining Xalan references
This commit is contained in:
commit
70875bd946
|
@ -1,86 +0,0 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.activemq.filter;
|
||||
|
||||
import org.apache.activemq.command.Message;
|
||||
import org.apache.activemq.util.ByteArrayInputStream;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.jms.BytesMessage;
|
||||
import javax.jms.JMSException;
|
||||
import javax.jms.TextMessage;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.xpath.XPath;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import javax.xml.xpath.XPathFactory;
|
||||
import java.io.StringReader;
|
||||
|
||||
public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
|
||||
|
||||
private static final XPathFactory FACTORY = XPathFactory.newInstance();
|
||||
private final String xpathExpression;
|
||||
private final DocumentBuilder builder;
|
||||
private final XPath xpath = FACTORY.newXPath();
|
||||
|
||||
public XalanXPathEvaluator(String xpathExpression, DocumentBuilder builder) throws Exception {
|
||||
this.xpathExpression = xpathExpression;
|
||||
if (builder != null) {
|
||||
this.builder = builder;
|
||||
} else {
|
||||
throw new RuntimeException("No document builder available");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean evaluate(Message message) throws JMSException {
|
||||
if (message instanceof TextMessage) {
|
||||
String text = ((TextMessage)message).getText();
|
||||
return evaluate(text);
|
||||
} else if (message instanceof BytesMessage) {
|
||||
BytesMessage bm = (BytesMessage)message;
|
||||
byte data[] = new byte[(int)bm.getBodyLength()];
|
||||
bm.readBytes(data);
|
||||
return evaluate(data);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean evaluate(byte[] data) {
|
||||
try {
|
||||
InputSource inputSource = new InputSource(new ByteArrayInputStream(data));
|
||||
Document inputDocument = builder.parse(inputSource);
|
||||
return ((Boolean) xpath.evaluate(xpathExpression, inputDocument, XPathConstants.BOOLEAN)).booleanValue();
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean evaluate(String text) {
|
||||
try {
|
||||
InputSource inputSource = new InputSource(new StringReader(text));
|
||||
Document inputDocument = builder.parse(inputSource);
|
||||
return ((Boolean) xpath.evaluate(xpathExpression, inputDocument, XPathConstants.BOOLEAN)).booleanValue();
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return xpathExpression;
|
||||
}
|
||||
}
|
|
@ -42,7 +42,7 @@ public final class XPathExpression implements BooleanExpression {
|
|||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(XPathExpression.class);
|
||||
private static final String EVALUATOR_SYSTEM_PROPERTY = "org.apache.activemq.XPathEvaluatorClassName";
|
||||
private static final String DEFAULT_EVALUATOR_CLASS_NAME = "org.apache.activemq.filter.XalanXPathEvaluator";
|
||||
private static final String DEFAULT_EVALUATOR_CLASS_NAME = "org.apache.activemq.filter.JAXPXPathEvaluator";
|
||||
public static final String DOCUMENT_BUILDER_FACTORY_FEATURE = "org.apache.activemq.documentBuilderFactory.feature";
|
||||
|
||||
private static final Constructor EVALUATOR_CONSTRUCTOR;
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<web-app>
|
||||
<!--
|
||||
In order to be able to compatiable with Resin 2.1.x and 3.0.x,
|
||||
both XML and XSLT have to be replaced.
|
||||
If only xalan is included, Resin 2.1.x will fail but not 3.0.x.
|
||||
Therefore the best way is to use the compatiable version of the
|
||||
XML parser ans XSLT.
|
||||
- Please refere to the following link for more detailed information.
|
||||
- http://www.caucho.com/resin-3.0/xml/jaxp.xtp
|
||||
-->
|
||||
<!-- xml -->
|
||||
<system-property javax.xml.parsers.DocumentBuilderFactory=
|
||||
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
|
||||
<system-property javax.xml.parsers.SAXParserFactory=
|
||||
"org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
|
||||
<!-- xslt -->
|
||||
<system-property javax.xml.transform.TransformerFactory=
|
||||
"org.apache.xalan.processor.TransformerFactoryImpl"/>
|
||||
</web-app>
|
|
@ -23,6 +23,7 @@ import java.io.FileFilter;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
@ -50,15 +51,9 @@ public class ValidateXMLConfigTest {
|
|||
// resource:copy-resource brings all config files into target/conf
|
||||
File sampleConfDir = new File("target/conf");
|
||||
|
||||
final HashSet<String> skipped = new HashSet<String>(java.util.Arrays.asList(new String[]{
|
||||
"resin-web.xml", "web.xml", "camel.xml", "jolokia-access.xml"
|
||||
}));
|
||||
|
||||
for (File xmlFile : sampleConfDir.listFiles(new FileFilter() {
|
||||
public boolean accept(File pathname) {
|
||||
return pathname.isFile() && pathname.getName().endsWith("xml") && !skipped.contains(pathname.getName());
|
||||
}})) {
|
||||
final HashSet<String> skipped = new HashSet<>(java.util.Arrays.asList("web.xml", "camel.xml", "jolokia-access.xml"));
|
||||
|
||||
for (File xmlFile : Objects.requireNonNull(sampleConfDir.listFiles(pathname -> pathname.isFile() && pathname.getName().endsWith("xml") && !skipped.contains(pathname.getName())))) {
|
||||
validateXML(xmlFile);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue