mirror of
https://github.com/github/codeql.git
synced 2026-04-29 02:35:15 +02:00
Merge branch 'main' into promote-jexl-injection
This commit is contained in:
@@ -51,12 +51,26 @@ private predicate unknownErrors(@diagnostic d, string msg, int sev) {
|
||||
|
||||
/**
|
||||
* Holds if an extraction error or warning occurred that should be reported to end users,
|
||||
* with the error message `msg` and SARIF severity `sev`.
|
||||
* with the message `msg` and SARIF severity `sev`.
|
||||
*/
|
||||
predicate reportableDiagnostics(@diagnostic d, string msg, int sev) {
|
||||
knownWarnings(d, msg, sev) or knownErrors(d, msg, sev) or unknownErrors(d, msg, sev)
|
||||
reportableWarnings(d, msg, sev) or reportableErrors(d, msg, sev)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if an extraction error occurred that should be reported to end users,
|
||||
* with the message `msg` and SARIF severity `sev`.
|
||||
*/
|
||||
predicate reportableErrors(@diagnostic d, string msg, int sev) {
|
||||
knownErrors(d, msg, sev) or unknownErrors(d, msg, sev)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if an extraction warning occurred that should be reported to end users,
|
||||
* with the message `msg` and SARIF severity `sev`.
|
||||
*/
|
||||
predicate reportableWarnings(@diagnostic d, string msg, int sev) { knownWarnings(d, msg, sev) }
|
||||
|
||||
/**
|
||||
* Holds if compilation unit `f` is a source file that has
|
||||
* no relevant extraction diagnostics associated with it.
|
||||
|
||||
@@ -9,5 +9,5 @@ import java
|
||||
import DiagnosticsReporting
|
||||
|
||||
from string msg, int sev
|
||||
where reportableDiagnostics(_, msg, sev)
|
||||
where reportableErrors(_, msg, sev)
|
||||
select msg, sev
|
||||
|
||||
13
java/ql/src/Diagnostics/ExtractionWarnings.ql
Normal file
13
java/ql/src/Diagnostics/ExtractionWarnings.ql
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @name Extraction warnings
|
||||
* @description A list of extraction warnings for files in the source code directory.
|
||||
* @kind diagnostic
|
||||
* @id java/diagnostics/extraction-warnings
|
||||
*/
|
||||
|
||||
import java
|
||||
import DiagnosticsReporting
|
||||
|
||||
from string msg, int sev
|
||||
where reportableWarnings(_, msg, sev)
|
||||
select msg, sev
|
||||
@@ -58,9 +58,19 @@ try {
|
||||
// Bad Dom4j
|
||||
org.dom4j.io.SAXReader reader = new org.dom4j.io.SAXReader();
|
||||
org.dom4j.Document document = reader.read(new InputSource(new StringReader(xmlStr)));
|
||||
isExist = document.selectSingleNode("/users/user[@name='" + user + "' and @pass='" + pass + "']").hasContent();
|
||||
isExist = document.selectSingleNode("/users/user[@name='" + user + "' and @pass='" + pass + "']") != null;
|
||||
// or document.selectNodes
|
||||
System.out.println(isExist);
|
||||
|
||||
// Good Dom4j
|
||||
org.jaxen.SimpleVariableContext svc = new org.jaxen.SimpleVariableContext();
|
||||
svc.setVariableValue("user", user);
|
||||
svc.setVariableValue("pass", pass);
|
||||
String xpathString = "/users/user[@name=$user and @pass=$pass]";
|
||||
org.dom4j.XPath safeXPath = document.createXPath(xpathString);
|
||||
safeXPath.setVariableContext(svc);
|
||||
isExist = safeXPath.selectSingleNode(document) != null;
|
||||
System.out.println(isExist);
|
||||
}
|
||||
} catch (ParserConfigurationException e) {
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<overview>
|
||||
<p>
|
||||
If an XPath expression is built using string concatenation, and the components of the concatenation
|
||||
include user input, a user is likely to be able to create a malicious XPath expression.
|
||||
include user input, it makes it very easy for a user to create a malicious XPath expression.
|
||||
</p>
|
||||
</overview>
|
||||
|
||||
<recommendation>
|
||||
<p>
|
||||
If user input must be included in an XPath expression, pre-compile the query and use variable
|
||||
references to include the user input.
|
||||
If user input must be included in an XPath expression, either sanitize the data or pre-compile the query
|
||||
and use variable references to include the user input.
|
||||
</p>
|
||||
<p>
|
||||
XPath injection can also be prevented by using XQuery.
|
||||
@@ -22,23 +22,23 @@ XPath injection can also be prevented by using XQuery.
|
||||
|
||||
<example>
|
||||
<p>
|
||||
In the first, second, and third example, the code accepts a name and password specified by the user, and uses this
|
||||
In the first three examples, the code accepts a name and password specified by the user, and uses this
|
||||
unvalidated and unsanitized value in an XPath expression. This is vulnerable to the user providing
|
||||
special characters or string sequences that change the meaning of the XPath expression to search
|
||||
for different values.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the fourth example, the code utilizes setXPathVariableResolver which prevents XPath Injection.
|
||||
In the fourth example, the code uses <code>setXPathVariableResolver</code> which prevents XPath injection.
|
||||
</p>
|
||||
<p>
|
||||
The fifth example is a dom4j XPath injection example.
|
||||
The final two examples are for dom4j. They show an example of XPath injection and one method of preventing it.
|
||||
</p>
|
||||
<sample src="XPathInjection.java" />
|
||||
</example>
|
||||
|
||||
<references>
|
||||
<li>OWASP: <a href="https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/09-Testing_for_XPath_Injection">Testing for XPath Injection</a>.</li>
|
||||
<li>OWASP: <a href="https://www.owasp.org/index.php/XPATH_Injection">XPath Injection</a>.</li>
|
||||
<li>OWASP: <a href="https://owasp.org/www-community/attacks/XPATH_Injection">XPath Injection</a>.</li>
|
||||
</references>
|
||||
</qhelp>
|
||||
@@ -13,7 +13,7 @@
|
||||
import java
|
||||
import semmle.code.java.dataflow.FlowSources
|
||||
import semmle.code.java.dataflow.TaintTracking
|
||||
import semmle.code.java.security.XmlParsers
|
||||
import semmle.code.java.security.XPath
|
||||
import DataFlow::PathGraph
|
||||
|
||||
class XPathInjectionConfiguration extends TaintTracking::Configuration {
|
||||
@@ -24,20 +24,6 @@ class XPathInjectionConfiguration extends TaintTracking::Configuration {
|
||||
override predicate isSink(DataFlow::Node sink) { sink instanceof XPathInjectionSink }
|
||||
}
|
||||
|
||||
class XPathInjectionSink extends DataFlow::ExprNode {
|
||||
XPathInjectionSink() {
|
||||
exists(Method m, MethodAccess ma | ma.getMethod() = m |
|
||||
m.getDeclaringType().hasQualifiedName("javax.xml.xpath", "XPath") and
|
||||
(m.hasName("evaluate") or m.hasName("compile")) and
|
||||
ma.getArgument(0) = this.getExpr()
|
||||
or
|
||||
m.getDeclaringType().hasQualifiedName("org.dom4j", "Node") and
|
||||
(m.hasName("selectNodes") or m.hasName("selectSingleNode")) and
|
||||
ma.getArgument(0) = this.getExpr()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
from DataFlow::PathNode source, DataFlow::PathNode sink, XPathInjectionConfiguration c
|
||||
where c.hasFlowPath(source, sink)
|
||||
select sink.getNode(), source, sink, "$@ flows to here and is used in an XPath expression.",
|
||||
@@ -0,0 +1,49 @@
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
@Controller
|
||||
public class ClientSuppliedIpUsedInSecurityCheck {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
@GetMapping(value = "bad1")
|
||||
public void bad1(HttpServletRequest request) {
|
||||
String ip = getClientIP();
|
||||
if (!StringUtils.startsWith(ip, "192.168.")) {
|
||||
new Exception("ip illegal");
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping(value = "bad2")
|
||||
public void bad2(HttpServletRequest request) {
|
||||
String ip = getClientIP();
|
||||
if (!"127.0.0.1".equals(ip)) {
|
||||
new Exception("ip illegal");
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping(value = "good1")
|
||||
@ResponseBody
|
||||
public String good1(HttpServletRequest request) {
|
||||
String ip = request.getHeader("X-FORWARDED-FOR");
|
||||
// Good: if this application runs behind a reverse proxy it may append the real remote IP to the end of any client-supplied X-Forwarded-For header.
|
||||
ip = ip.split(",")[ip.split(",").length - 1];
|
||||
if (!StringUtils.startsWith(ip, "192.168.")) {
|
||||
new Exception("ip illegal");
|
||||
}
|
||||
return ip;
|
||||
}
|
||||
|
||||
protected String getClientIP() {
|
||||
String xfHeader = request.getHeader("X-Forwarded-For");
|
||||
if (xfHeader == null) {
|
||||
return request.getRemoteAddr();
|
||||
}
|
||||
return xfHeader.split(",")[0];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>An original client IP address is retrieved from an http header (<code>X-Forwarded-For</code> or <code>X-Real-IP</code> or <code>Proxy-Client-IP</code>
|
||||
etc.), which is used to ensure security. Attackers can forge the value of these identifiers to
|
||||
bypass a ban-list, for example.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
|
||||
<p>Do not trust the values of HTTP headers allegedly identifying the originating IP. If you are aware your application will run behind some reverse proxies then the last entry of a <code>X-Forwarded-For</code> header value may be more trustworthy than the rest of it because some reverse proxies append the IP address they observed to the end of any remote-supplied header.</p>
|
||||
|
||||
</recommendation>
|
||||
<example>
|
||||
|
||||
<p>The following examples show the bad case and the good case respectively.
|
||||
In <code>bad1</code> method and <code>bad2</code> method, the client ip the <code>X-Forwarded-For</code> is split into comma-separated values, but the less-trustworthy first one is used. Both of these examples could be deceived by providing a forged HTTP header. The method
|
||||
<code>good1</code> similarly splits an <code>X-Forwarded-For</code> value, but uses the last, more-trustworthy entry.</p>
|
||||
|
||||
<sample src="ClientSuppliedIpUsedInSecurityCheck.java" />
|
||||
|
||||
</example>
|
||||
<references>
|
||||
|
||||
<li>Dennis Schneider: <a href="https://www.dennis-schneider.com/blog/prevent-ip-address-spoofing-with-x-forwarded-for-header-and-aws-elb-in-clojure-ring/">
|
||||
Prevent IP address spoofing with X-Forwarded-For header when using AWS ELB and Clojure Ring</a>
|
||||
</li>
|
||||
|
||||
<li>Security Rule Zero: <a href="https://www.f5.com/company/blog/security-rule-zero-a-warning-about-x-forwarded-for">A Warning about X-Forwarded-For</a>
|
||||
</li>
|
||||
|
||||
</references>
|
||||
</qhelp>
|
||||
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* @name IP address spoofing
|
||||
* @description A remote endpoint identifier is read from an HTTP header. Attackers can modify the value
|
||||
* of the identifier to forge the client ip.
|
||||
* @kind path-problem
|
||||
* @problem.severity error
|
||||
* @precision high
|
||||
* @id java/ip-address-spoofing
|
||||
* @tags security
|
||||
* external/cwe/cwe-348
|
||||
*/
|
||||
|
||||
import java
|
||||
import ClientSuppliedIpUsedInSecurityCheckLib
|
||||
import semmle.code.java.dataflow.FlowSources
|
||||
import DataFlow::PathGraph
|
||||
|
||||
/**
|
||||
* Taint-tracking configuration tracing flow from obtaining a client ip from an HTTP header to a sensitive use.
|
||||
*/
|
||||
class ClientSuppliedIpUsedInSecurityCheckConfig extends TaintTracking::Configuration {
|
||||
ClientSuppliedIpUsedInSecurityCheckConfig() { this = "ClientSuppliedIpUsedInSecurityCheckConfig" }
|
||||
|
||||
override predicate isSource(DataFlow::Node source) {
|
||||
source instanceof ClientSuppliedIpUsedInSecurityCheck
|
||||
}
|
||||
|
||||
override predicate isSink(DataFlow::Node sink) {
|
||||
sink instanceof ClientSuppliedIpUsedInSecurityCheckSink
|
||||
}
|
||||
|
||||
/**
|
||||
* Splitting a header value by `,` and taking an entry other than the first is sanitizing, because
|
||||
* later entries may originate from more-trustworthy intermediate proxies, not the original client.
|
||||
*/
|
||||
override predicate isSanitizer(DataFlow::Node node) {
|
||||
exists(ArrayAccess aa, MethodAccess ma | aa.getArray() = ma |
|
||||
ma.getQualifier() = node.asExpr() and
|
||||
ma.getMethod() instanceof SplitMethod and
|
||||
not aa.getIndexExpr().(CompileTimeConstantExpr).getIntValue() = 0
|
||||
)
|
||||
or
|
||||
node.getType() instanceof PrimitiveType
|
||||
or
|
||||
node.getType() instanceof BoxedType
|
||||
}
|
||||
}
|
||||
|
||||
from
|
||||
DataFlow::PathNode source, DataFlow::PathNode sink, ClientSuppliedIpUsedInSecurityCheckConfig conf
|
||||
where conf.hasFlowPath(source, sink)
|
||||
select sink.getNode(), source, sink, "IP address spoofing might include code from $@.",
|
||||
source.getNode(), "this user input"
|
||||
@@ -0,0 +1,100 @@
|
||||
import java
|
||||
import DataFlow
|
||||
import semmle.code.java.frameworks.Networking
|
||||
import semmle.code.java.security.QueryInjection
|
||||
import experimental.semmle.code.java.Logging
|
||||
|
||||
/**
|
||||
* A data flow source of the client ip obtained according to the remote endpoint identifier specified
|
||||
* (`X-Forwarded-For`, `X-Real-IP`, `Proxy-Client-IP`, etc.) in the header.
|
||||
*
|
||||
* For example: `ServletRequest.getHeader("X-Forwarded-For")`.
|
||||
*/
|
||||
class ClientSuppliedIpUsedInSecurityCheck extends DataFlow::Node {
|
||||
ClientSuppliedIpUsedInSecurityCheck() {
|
||||
exists(MethodAccess ma |
|
||||
ma.getMethod().hasName("getHeader") and
|
||||
ma.getArgument(0).(CompileTimeConstantExpr).getStringValue().toLowerCase() in [
|
||||
"x-forwarded-for", "x-real-ip", "proxy-client-ip", "wl-proxy-client-ip",
|
||||
"http_x_forwarded_for", "http_x_forwarded", "http_x_cluster_client_ip", "http_client_ip",
|
||||
"http_forwarded_for", "http_forwarded", "http_via", "remote_addr"
|
||||
] and
|
||||
ma = this.asExpr()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/** A data flow sink for ip address forgery vulnerabilities. */
|
||||
abstract class ClientSuppliedIpUsedInSecurityCheckSink extends DataFlow::Node { }
|
||||
|
||||
/**
|
||||
* A data flow sink for remote client ip comparison.
|
||||
*
|
||||
* For example: `if (!StringUtils.startsWith(ipAddr, "192.168.")){...` determine whether the client ip starts
|
||||
* with `192.168.`, and the program can be deceived by forging the ip address.
|
||||
*/
|
||||
private class CompareSink extends ClientSuppliedIpUsedInSecurityCheckSink {
|
||||
CompareSink() {
|
||||
exists(MethodAccess ma |
|
||||
ma.getMethod().getName() in ["equals", "equalsIgnoreCase"] and
|
||||
ma.getMethod().getDeclaringType() instanceof TypeString and
|
||||
ma.getMethod().getNumberOfParameters() = 1 and
|
||||
(
|
||||
ma.getArgument(0) = this.asExpr() and
|
||||
ma.getQualifier().(CompileTimeConstantExpr).getStringValue() instanceof PrivateHostName and
|
||||
not ma.getQualifier().(CompileTimeConstantExpr).getStringValue() = "0:0:0:0:0:0:0:1"
|
||||
or
|
||||
ma.getQualifier() = this.asExpr() and
|
||||
ma.getArgument(0).(CompileTimeConstantExpr).getStringValue() instanceof PrivateHostName and
|
||||
not ma.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "0:0:0:0:0:0:0:1"
|
||||
)
|
||||
)
|
||||
or
|
||||
exists(MethodAccess ma |
|
||||
ma.getMethod().getName() in ["contains", "startsWith"] and
|
||||
ma.getMethod().getDeclaringType() instanceof TypeString and
|
||||
ma.getMethod().getNumberOfParameters() = 1 and
|
||||
ma.getQualifier() = this.asExpr() and
|
||||
ma.getAnArgument().(CompileTimeConstantExpr).getStringValue().regexpMatch(getIpAddressRegex()) // Matches IP-address-like strings
|
||||
)
|
||||
or
|
||||
exists(MethodAccess ma |
|
||||
ma.getMethod().hasName("startsWith") and
|
||||
ma.getMethod()
|
||||
.getDeclaringType()
|
||||
.hasQualifiedName(["org.apache.commons.lang3", "org.apache.commons.lang"], "StringUtils") and
|
||||
ma.getMethod().getNumberOfParameters() = 2 and
|
||||
ma.getAnArgument() = this.asExpr() and
|
||||
ma.getAnArgument().(CompileTimeConstantExpr).getStringValue().regexpMatch(getIpAddressRegex())
|
||||
)
|
||||
or
|
||||
exists(MethodAccess ma |
|
||||
ma.getMethod().getName() in ["equals", "equalsIgnoreCase"] and
|
||||
ma.getMethod()
|
||||
.getDeclaringType()
|
||||
.hasQualifiedName(["org.apache.commons.lang3", "org.apache.commons.lang"], "StringUtils") and
|
||||
ma.getMethod().getNumberOfParameters() = 2 and
|
||||
ma.getAnArgument() = this.asExpr() and
|
||||
ma.getAnArgument().(CompileTimeConstantExpr).getStringValue() instanceof PrivateHostName and
|
||||
not ma.getAnArgument().(CompileTimeConstantExpr).getStringValue() = "0:0:0:0:0:0:0:1"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/** A data flow sink for sql operation. */
|
||||
private class SqlOperationSink extends ClientSuppliedIpUsedInSecurityCheckSink {
|
||||
SqlOperationSink() { this instanceof QueryInjectionSink }
|
||||
}
|
||||
|
||||
/** A method that split string. */
|
||||
class SplitMethod extends Method {
|
||||
SplitMethod() {
|
||||
this.getNumberOfParameters() = 1 and
|
||||
this.hasQualifiedName("java.lang", "String", "split")
|
||||
}
|
||||
}
|
||||
|
||||
string getIpAddressRegex() {
|
||||
result =
|
||||
"^((10\\.((1\\d{2})?|(2[0-4]\\d)?|(25[0-5])?|([1-9]\\d|[0-9])?)(\\.)?)|(192\\.168\\.)|172\\.(1[6789]|2[0-9]|3[01])\\.)((1\\d{2})?|(2[0-4]\\d)?|(25[0-5])?|([1-9]\\d|[0-9])?)(\\.)?((1\\d{2})?|(2[0-4]\\d)?|(25[0-5])?|([1-9]\\d|[0-9])?)$"
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>
|
||||
Even though the request-handling methods of <code>Servlet</code> are declared <code>throws IOException, ServletException</code>, it's a bad idea to let such exceptions be thrown. Failure to catch exceptions in a servlet could leave a system in an unexpected state, possibly resulting in denial-of-service attacks, or could lead to exposure of sensitive information because when a servlet throws an exception, the servlet container typically sends debugging information back to the user. That information could be valuable to an attacker.
|
||||
Even though the request-handling methods of <code>Servlet</code> are declared <code>throws IOException, ServletException</code>, it's a bad idea to let such exceptions be thrown. Failure to catch exceptions in a servlet could lead to exposure of sensitive information because when a servlet throws an exception, the servlet container typically sends debugging information back to the user. That information could be valuable to an attacker.
|
||||
</p>
|
||||
</overview>
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ private module Frameworks {
|
||||
private import semmle.code.java.security.ResponseSplitting
|
||||
private import semmle.code.java.security.XSS
|
||||
private import semmle.code.java.security.LdapInjection
|
||||
private import semmle.code.java.security.XPath
|
||||
private import semmle.code.java.security.JexlInjection
|
||||
}
|
||||
|
||||
|
||||
58
java/ql/src/semmle/code/java/security/XPath.qll
Normal file
58
java/ql/src/semmle/code/java/security/XPath.qll
Normal file
@@ -0,0 +1,58 @@
|
||||
/** Provides classes to reason about XPath vulnerabilities. */
|
||||
|
||||
import java
|
||||
import semmle.code.java.dataflow.DataFlow
|
||||
import semmle.code.java.dataflow.ExternalFlow
|
||||
|
||||
/**
|
||||
* A sink that represents a method that interprets XPath expressions.
|
||||
* Extend this class to add your own XPath Injection sinks.
|
||||
*/
|
||||
abstract class XPathInjectionSink extends DataFlow::Node { }
|
||||
|
||||
/** CSV sink models representing methods susceptible to XPath Injection attacks. */
|
||||
private class DefaultXPathInjectionSinkModel extends SinkModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"javax.xml.xpath;XPath;true;evaluate;;;Argument[0];xpath",
|
||||
"javax.xml.xpath;XPath;true;evaluateExpression;;;Argument[0];xpath",
|
||||
"javax.xml.xpath;XPath;true;compile;;;Argument[0];xpath",
|
||||
"org.dom4j;Node;true;selectObject;;;Argument[0];xpath",
|
||||
"org.dom4j;Node;true;selectNodes;;;Argument[0..1];xpath",
|
||||
"org.dom4j;Node;true;selectSingleNode;;;Argument[0];xpath",
|
||||
"org.dom4j;Node;true;numberValueOf;;;Argument[0];xpath",
|
||||
"org.dom4j;Node;true;valueOf;;;Argument[0];xpath",
|
||||
"org.dom4j;Node;true;matches;;;Argument[0];xpath",
|
||||
"org.dom4j;Node;true;createXPath;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentFactory;true;createPattern;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentFactory;true;createXPath;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentFactory;true;createXPathFilter;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentHelper;false;createPattern;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentHelper;false;createXPath;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentHelper;false;createXPathFilter;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentHelper;false;selectNodes;;;Argument[0];xpath",
|
||||
"org.dom4j;DocumentHelper;false;sort;;;Argument[1];xpath",
|
||||
"org.dom4j.tree;AbstractNode;true;createXPathFilter;;;Argument[0];xpath",
|
||||
"org.dom4j.tree;AbstractNode;true;createPattern;;;Argument[0];xpath",
|
||||
"org.dom4j.util;ProxyDocumentFactory;true;createPattern;;;Argument[0];xpath",
|
||||
"org.dom4j.util;ProxyDocumentFactory;true;createXPath;;;Argument[0];xpath",
|
||||
"org.dom4j.util;ProxyDocumentFactory;true;createXPathFilter;;;Argument[0];xpath"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** A default sink representing methods susceptible to XPath Injection attacks. */
|
||||
private class DefaultXPathInjectionSink extends XPathInjectionSink {
|
||||
DefaultXPathInjectionSink() {
|
||||
sinkNode(this, "xpath")
|
||||
or
|
||||
exists(ClassInstanceExpr constructor |
|
||||
constructor.getConstructedType().getASourceSupertype*().hasQualifiedName("org.dom4j", "XPath")
|
||||
or
|
||||
constructor.getConstructedType().hasQualifiedName("org.dom4j.xpath", "XPathPattern")
|
||||
|
|
||||
this.asExpr() = constructor.getArgument(0)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
edges
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:25:33:25:34 | ip |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String |
|
||||
nodes
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:16:21:16:33 | getClientIP(...) : String | semmle.label | getClientIP(...) : String |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip | semmle.label | ip |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:24:21:24:33 | getClientIP(...) : String | semmle.label | getClientIP(...) : String |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:25:33:25:34 | ip | semmle.label | ip |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) : String | semmle.label | getHeader(...) : String |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:47:16:47:37 | ...[...] : String | semmle.label | ...[...] : String |
|
||||
#select
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip | ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:17:37:17:38 | ip | IP address spoofing might include code from $@. | ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) | this user input |
|
||||
| ClientSuppliedIpUsedInSecurityCheck.java:25:33:25:34 | ip | ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) : String | ClientSuppliedIpUsedInSecurityCheck.java:25:33:25:34 | ip | IP address spoofing might include code from $@. | ClientSuppliedIpUsedInSecurityCheck.java:43:27:43:62 | getHeader(...) | this user input |
|
||||
@@ -0,0 +1,49 @@
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
@Controller
|
||||
public class ClientSuppliedIpUsedInSecurityCheck {
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
@GetMapping(value = "bad1")
|
||||
public void bad1(HttpServletRequest request) {
|
||||
String ip = getClientIP();
|
||||
if (!StringUtils.startsWith(ip, "192.168.")) {
|
||||
new Exception("ip illegal");
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping(value = "bad2")
|
||||
public void bad2(HttpServletRequest request) {
|
||||
String ip = getClientIP();
|
||||
if (!"127.0.0.1".equals(ip)) {
|
||||
new Exception("ip illegal");
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping(value = "good1")
|
||||
@ResponseBody
|
||||
public String good1(HttpServletRequest request) {
|
||||
String ip = request.getHeader("X-FORWARDED-FOR");
|
||||
// Good: if this application runs behind a reverse proxy it may append the real remote IP to the end of any client-supplied X-Forwarded-For header.
|
||||
ip = ip.split(",")[ip.split(",").length - 1];
|
||||
if (!StringUtils.startsWith(ip, "192.168.")) {
|
||||
new Exception("ip illegal");
|
||||
}
|
||||
return ip;
|
||||
}
|
||||
|
||||
protected String getClientIP() {
|
||||
String xfHeader = request.getHeader("X-Forwarded-For");
|
||||
if (xfHeader == null) {
|
||||
return request.getRemoteAddr();
|
||||
}
|
||||
return xfHeader.split(",")[0];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
experimental/Security/CWE/CWE-348/ClientSuppliedIpUsedInSecurityCheck.ql
|
||||
@@ -0,0 +1 @@
|
||||
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/springframework-5.2.3/:${testdir}/../../../../stubs/apache-commons-lang3-3.7/
|
||||
@@ -1 +1 @@
|
||||
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jdom-1.1.3:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/simple-xml-2.7.1:${testdir}/../../../stubs/jaxb-api-2.3.1
|
||||
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jdom-1.1.3:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/simple-xml-2.7.1:${testdir}/../../../stubs/jaxb-api-2.3.1:${testdir}/../../../stubs/jaxen-1.2.0
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.xpath.XPath;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import javax.xml.xpath.XPathExpression;
|
||||
import javax.xml.xpath.XPathExpressionException;
|
||||
import javax.xml.xpath.XPathFactory;
|
||||
|
||||
import org.jaxen.pattern.Pattern;
|
||||
import org.dom4j.DocumentFactory;
|
||||
import org.dom4j.DocumentHelper;
|
||||
import org.dom4j.Namespace;
|
||||
import org.dom4j.Node;
|
||||
import org.dom4j.io.SAXReader;
|
||||
import org.dom4j.util.ProxyDocumentFactory;
|
||||
import org.dom4j.xpath.DefaultXPath;
|
||||
import org.dom4j.xpath.XPathPattern;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
public class XPathInjectionTest {
|
||||
private static abstract class XPathImplStub implements XPath {
|
||||
public static XPathImplStub getInstance() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XPathExpression compile(String expression) throws XPathExpressionException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object evaluate(String expression, Object item, QName returnType) throws XPathExpressionException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String evaluate(String expression, Object item) throws XPathExpressionException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object evaluate(String expression, InputSource source, QName returnType)
|
||||
throws XPathExpressionException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String evaluate(String expression, InputSource source) throws XPathExpressionException {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class ProxyDocumentFactoryStub extends ProxyDocumentFactory {
|
||||
}
|
||||
|
||||
private static class PatternStub extends Pattern {
|
||||
private String text;
|
||||
|
||||
PatternStub(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public void handle(HttpServletRequest request) throws Exception {
|
||||
String user = request.getParameter("user");
|
||||
String pass = request.getParameter("pass");
|
||||
String expression = "/users/user[@name='" + user + "' and @pass='" + pass + "']";
|
||||
|
||||
final String xmlStr = "<users>" + " <user name=\"aaa\" pass=\"pass1\"></user>"
|
||||
+ " <user name=\"bbb\" pass=\"pass2\"></user>" + "</users>";
|
||||
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder builder = domFactory.newDocumentBuilder();
|
||||
InputSource xmlSource = new InputSource(new StringReader(xmlStr));
|
||||
Document doc = builder.parse(xmlSource);
|
||||
|
||||
XPathFactory factory = XPathFactory.newInstance();
|
||||
XPath xpath = factory.newXPath();
|
||||
|
||||
xpath.evaluate(expression, doc, XPathConstants.BOOLEAN); // $hasXPathInjection
|
||||
xpath.evaluateExpression(expression, xmlSource); // $hasXPathInjection
|
||||
xpath.compile("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
XPathImplStub xpathStub = XPathImplStub.getInstance();
|
||||
xpathStub.evaluate(expression, doc, XPathConstants.BOOLEAN); // $hasXPathInjection
|
||||
xpathStub.evaluateExpression(expression, xmlSource); // $hasXPathInjection
|
||||
xpathStub.compile("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
StringBuffer sb = new StringBuffer("/users/user[@name=");
|
||||
sb.append(user);
|
||||
sb.append("' and @pass='");
|
||||
sb.append(pass);
|
||||
sb.append("']");
|
||||
String query = sb.toString();
|
||||
|
||||
xpath.compile(query); // $hasXPathInjection
|
||||
xpathStub.compile(query); // $hasXPathInjection
|
||||
|
||||
String expression4 = "/users/user[@name=$user and @pass=$pass]";
|
||||
xpath.setXPathVariableResolver(v -> {
|
||||
switch (v.getLocalPart()) {
|
||||
case "user":
|
||||
return user;
|
||||
case "pass":
|
||||
return pass;
|
||||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
});
|
||||
xpath.evaluate(expression4, doc, XPathConstants.BOOLEAN); // Safe
|
||||
|
||||
SAXReader reader = new SAXReader();
|
||||
org.dom4j.Document document = reader.read(new ByteArrayInputStream(xmlStr.getBytes()));
|
||||
document.selectObject("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.selectNodes("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.selectNodes("/users/user[@name='test']", "/users/user[@pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.selectSingleNode("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.valueOf("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.numberValueOf("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.matches("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
document.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
new DefaultXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
new XPathPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
new XPathPattern(new PatternStub(user)); // $ MISSING: hasXPathInjection // Jaxen is not modeled yet
|
||||
|
||||
DocumentFactory docFactory = DocumentFactory.getInstance();
|
||||
docFactory.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
docFactory.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
docFactory.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
DocumentHelper.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
DocumentHelper.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
DocumentHelper.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
DocumentHelper.selectNodes("/users/user[@name='" + user + "' and @pass='" + pass + "']", new ArrayList<Node>()); // $hasXPathInjection
|
||||
DocumentHelper.sort(new ArrayList<Node>(), "/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
ProxyDocumentFactoryStub proxyDocFactory = new ProxyDocumentFactoryStub();
|
||||
proxyDocFactory.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
proxyDocFactory.createXPath("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
proxyDocFactory.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
Namespace namespace = new Namespace("prefix", "http://some.uri.io");
|
||||
namespace.createPattern("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
namespace.createXPathFilter("/users/user[@name='" + user + "' and @pass='" + pass + "']"); // $hasXPathInjection
|
||||
|
||||
org.jaxen.SimpleVariableContext svc = new org.jaxen.SimpleVariableContext();
|
||||
svc.setVariableValue("user", user);
|
||||
svc.setVariableValue("pass", pass);
|
||||
String xpathString = "/users/user[@name=$user and @pass=$pass]";
|
||||
org.dom4j.XPath safeXPath = document.createXPath(xpathString); // Safe
|
||||
safeXPath.setVariableContext(svc);
|
||||
safeXPath.selectSingleNode(document); // Safe
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import java
|
||||
import semmle.code.java.dataflow.TaintTracking
|
||||
import semmle.code.java.dataflow.FlowSources
|
||||
import semmle.code.java.security.XPath
|
||||
import TestUtilities.InlineExpectationsTest
|
||||
|
||||
class Conf extends TaintTracking::Configuration {
|
||||
Conf() { this = "test:xml:xpathinjection" }
|
||||
|
||||
override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
|
||||
|
||||
override predicate isSink(DataFlow::Node sink) { sink instanceof XPathInjectionSink }
|
||||
}
|
||||
|
||||
class HasXPathInjectionTest extends InlineExpectationsTest {
|
||||
HasXPathInjectionTest() { this = "HasXPathInjectionTest" }
|
||||
|
||||
override string getARelevantTag() { result = "hasXPathInjection" }
|
||||
|
||||
override predicate hasActualResult(Location location, string element, string tag, string value) {
|
||||
tag = "hasXPathInjection" and
|
||||
exists(DataFlow::Node src, DataFlow::Node sink, Conf conf | conf.hasFlow(src, sink) |
|
||||
sink.getLocation() = location and
|
||||
element = sink.toString() and
|
||||
value = ""
|
||||
)
|
||||
}
|
||||
}
|
||||
1
java/ql/test/query-tests/security/CWE-643/options
Normal file
1
java/ql/test/query-tests/security/CWE-643/options
Normal file
@@ -0,0 +1 @@
|
||||
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jaxen-1.2.0
|
||||
54
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Branch.java
Normal file
54
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Branch.java
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
public interface Branch extends Node {
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
@@ -13,7 +13,8 @@
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
public interface Document {
|
||||
public interface Document extends Branch {
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
118
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/DocumentFactory.java
Normal file
118
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/DocumentFactory.java
Normal file
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.dom4j.rule.Pattern;
|
||||
import org.jaxen.VariableContext;
|
||||
|
||||
public class DocumentFactory implements Serializable {
|
||||
public DocumentFactory() {
|
||||
}
|
||||
|
||||
public static synchronized DocumentFactory getInstance() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Document createDocument() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Document createDocument(String encoding) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Document createDocument(Element rootElement) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Element createElement(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Element createElement(String qualifiedName, String namespaceURI) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Namespace createNamespace(String prefix, String uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XPath createXPath(String xpathExpression) throws InvalidXPathException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XPath createXPath(String xpathExpression, VariableContext variableContext) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public NodeFilter createXPathFilter(String xpathFilterExpression, VariableContext variableContext) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public NodeFilter createXPathFilter(String xpathFilterExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Pattern createPattern(String xpathPattern) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Map<String, String> getXPathNamespaceURIs() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setXPathNamespaceURIs(Map<String, String> namespaceURIs) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
109
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/DocumentHelper.java
Normal file
109
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/DocumentHelper.java
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.dom4j.rule.Pattern;
|
||||
import org.jaxen.VariableContext;
|
||||
|
||||
public final class DocumentHelper {
|
||||
public static Document createDocument() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Document createDocument(Element rootElement) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Element createElement(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Namespace createNamespace(String prefix, String uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static XPath createXPath(String xpathExpression) throws InvalidXPathException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static XPath createXPath(String xpathExpression, VariableContext context) throws InvalidXPathException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static NodeFilter createXPathFilter(String xpathFilterExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Pattern createPattern(String xpathPattern) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static List<Node> selectNodes(String xpathFilterExpression, List<Node> nodes) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static List<Node> selectNodes(String xpathFilterExpression, Node node) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void sort(List<Node> list, String xpathExpression) {
|
||||
}
|
||||
|
||||
public static void sort(List<Node> list, String expression, boolean distinct) {
|
||||
}
|
||||
|
||||
public static Element makeElement(Branch source, String path) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
140
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Element.java
Normal file
140
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Element.java
Normal file
@@ -0,0 +1,140 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
package org.dom4j;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface Element extends Branch {
|
||||
|
||||
Namespace getNamespace();
|
||||
|
||||
Namespace getNamespaceForPrefix(String prefix);
|
||||
|
||||
Namespace getNamespaceForURI(String uri);
|
||||
|
||||
List<Namespace> getNamespacesForURI(String uri);
|
||||
|
||||
String getNamespacePrefix();
|
||||
|
||||
String getNamespaceURI();
|
||||
|
||||
String getQualifiedName();
|
||||
|
||||
List<Namespace> additionalNamespaces();
|
||||
|
||||
List<Namespace> declaredNamespaces();
|
||||
|
||||
Element addAttribute(String name, String value);
|
||||
|
||||
Element addComment(String comment);
|
||||
|
||||
Element addCDATA(String cdata);
|
||||
|
||||
Element addEntity(String name, String text);
|
||||
|
||||
Element addNamespace(String prefix, String uri);
|
||||
|
||||
Element addProcessingInstruction(String target, String text);
|
||||
|
||||
Element addProcessingInstruction(String target, Map<String, String> data);
|
||||
|
||||
Element addText(String text);
|
||||
|
||||
void add(Namespace namespace);
|
||||
|
||||
String getText();
|
||||
|
||||
String getTextTrim();
|
||||
|
||||
String getStringValue();
|
||||
|
||||
Object getData();
|
||||
|
||||
void setData(Object data);
|
||||
|
||||
int attributeCount();
|
||||
|
||||
String attributeValue(String name);
|
||||
|
||||
String attributeValue(String name, String defaultValue);
|
||||
|
||||
void setAttributeValue(String name, String value);
|
||||
|
||||
Element element(String name);
|
||||
|
||||
List<Element> elements();
|
||||
|
||||
List<Element> elements(String name);
|
||||
|
||||
Iterator<Element> elementIterator();
|
||||
|
||||
Iterator<Element> elementIterator(String name);
|
||||
|
||||
boolean isRootElement();
|
||||
|
||||
boolean hasMixedContent();
|
||||
|
||||
boolean isTextOnly();
|
||||
|
||||
void appendAttributes(Element element);
|
||||
|
||||
Element createCopy();
|
||||
|
||||
Element createCopy(String name);
|
||||
|
||||
String elementText(String name);
|
||||
|
||||
String elementTextTrim(String name);
|
||||
|
||||
Node getXPathResult(int index);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
public class InvalidXPathException extends IllegalArgumentException {
|
||||
public InvalidXPathException(String xpath) {
|
||||
}
|
||||
|
||||
public InvalidXPathException(String xpath, String reason) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
119
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Namespace.java
Normal file
119
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Namespace.java
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
import org.dom4j.tree.AbstractNode;
|
||||
|
||||
public class Namespace extends AbstractNode {
|
||||
|
||||
public Namespace(String prefix, String uri) {
|
||||
}
|
||||
|
||||
public static Namespace get(String prefix, String uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Namespace get(String uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public short getNodeType() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public boolean equals(Object object) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getStringValue() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getPrefix() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getURI() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getXPathNameStep() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getPath(Element context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getUniquePath(Element context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String asXML() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void accept(Visitor visitor) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
75
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Node.java
Normal file
75
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Node.java
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface Node extends Cloneable {
|
||||
|
||||
List<Node> selectNodes(String xpathExpression);
|
||||
|
||||
Object selectObject(String xpathExpression);
|
||||
|
||||
List<Node> selectNodes(String xpathExpression, String comparisonXPathExpression);
|
||||
|
||||
List<Node> selectNodes(String xpathExpression, String comparisonXPathExpression, boolean removeDuplicates);
|
||||
|
||||
Node selectSingleNode(String xpathExpression);
|
||||
|
||||
String valueOf(String xpathExpression);
|
||||
|
||||
Number numberValueOf(String xpathExpression);
|
||||
|
||||
boolean matches(String xpathExpression);
|
||||
|
||||
XPath createXPath(String xpathExpression) throws InvalidXPathException;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
56
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/NodeFilter.java
Normal file
56
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/NodeFilter.java
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
public interface NodeFilter {
|
||||
boolean matches(Node node);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
60
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Visitor.java
Normal file
60
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/Visitor.java
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
public interface Visitor {
|
||||
void visit(Document document);
|
||||
|
||||
void visit(Element node);
|
||||
|
||||
void visit(Namespace namespace);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
86
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/XPath.java
Normal file
86
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/XPath.java
Normal file
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface XPath extends NodeFilter {
|
||||
String getText();
|
||||
|
||||
boolean matches(Node node);
|
||||
|
||||
Object evaluate(Object context);
|
||||
|
||||
Object selectObject(Object context);
|
||||
|
||||
List<Node> selectNodes(Object context);
|
||||
|
||||
List<Node> selectNodes(Object context, XPath sortXPath);
|
||||
|
||||
List<Node> selectNodes(Object context, XPath sortXPath, boolean distinct);
|
||||
|
||||
Node selectSingleNode(Object context);
|
||||
|
||||
String valueOf(Object context);
|
||||
|
||||
Number numberValueOf(Object context);
|
||||
|
||||
boolean booleanValueOf(Object context);
|
||||
|
||||
void sort(List<Node> list);
|
||||
|
||||
void sort(List<Node> list, boolean distinct);
|
||||
|
||||
void setNamespaceURIs(Map<String, String> map);
|
||||
|
||||
void setVariableContext(org.jaxen.VariableContext variableContext);
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
67
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/rule/Pattern.java
Normal file
67
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/rule/Pattern.java
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j.rule;
|
||||
|
||||
import org.dom4j.Node;
|
||||
import org.dom4j.NodeFilter;
|
||||
|
||||
public interface Pattern extends NodeFilter {
|
||||
boolean matches(Node node);
|
||||
|
||||
double getPriority();
|
||||
|
||||
Pattern[] getUnionPatterns();
|
||||
|
||||
short getMatchType();
|
||||
|
||||
String getMatchesNodeName();
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
183
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/tree/AbstractNode.java
Normal file
183
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/tree/AbstractNode.java
Normal file
@@ -0,0 +1,183 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j.tree;
|
||||
|
||||
import org.dom4j.*;
|
||||
import org.dom4j.rule.Pattern;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.io.Writer;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AbstractNode implements Node, Cloneable, Serializable {
|
||||
public AbstractNode() {
|
||||
}
|
||||
|
||||
public short getNodeType() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getNodeTypeName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Document getDocument() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setDocument(Document document) {
|
||||
}
|
||||
|
||||
public Element getParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setParent(Element parent) {
|
||||
}
|
||||
|
||||
public boolean supportsParent() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isReadOnly() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean hasContent() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getUniquePath() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object clone() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Node detach() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getStringValue() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
}
|
||||
|
||||
public void write(Writer writer) throws IOException {
|
||||
}
|
||||
|
||||
public Object selectObject(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Node> selectNodes(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Node> selectNodes(String xpathExpression, String comparisonXPathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Node> selectNodes(String xpathExpression, String comparisonXPathExpression, boolean removeDuplicates) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Node selectSingleNode(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String valueOf(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Number numberValueOf(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean matches(String patternText) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public XPath createXPath(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public NodeFilter createXPathFilter(String patternText) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Pattern createPattern(String patternText) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Node asXPathResult(Element parent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j.util;
|
||||
|
||||
import org.dom4j.Document;
|
||||
import org.dom4j.DocumentFactory;
|
||||
import org.dom4j.Element;
|
||||
import org.dom4j.NodeFilter;
|
||||
import org.dom4j.XPath;
|
||||
import org.dom4j.rule.Pattern;
|
||||
import org.jaxen.VariableContext;
|
||||
|
||||
public abstract class ProxyDocumentFactory {
|
||||
public ProxyDocumentFactory() {
|
||||
}
|
||||
|
||||
public ProxyDocumentFactory(DocumentFactory proxy) {
|
||||
}
|
||||
|
||||
public Document createDocument() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Document createDocument(Element rootElement) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Element createElement(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XPath createXPath(String xpathExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XPath createXPath(String xpathExpression, VariableContext variableContext) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public NodeFilter createXPathFilter(String xpathFilterExpression, VariableContext variableContext) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public NodeFilter createXPathFilter(String xpathFilterExpression) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Pattern createPattern(String xpathPattern) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
135
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/xpath/DefaultXPath.java
Normal file
135
java/ql/test/stubs/dom4j-2.1.1/org/dom4j/xpath/DefaultXPath.java
Normal file
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j.xpath;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.dom4j.InvalidXPathException;
|
||||
import org.dom4j.Node;
|
||||
import org.dom4j.XPath;
|
||||
|
||||
public class DefaultXPath implements org.dom4j.XPath, Serializable {
|
||||
public DefaultXPath(String text) throws InvalidXPathException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(Node node) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object evaluate(Object context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object selectObject(Object context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Node> selectNodes(Object context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Node> selectNodes(Object context, XPath sortXPath) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Node> selectNodes(Object context, XPath sortXPath, boolean distinct) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Node selectSingleNode(Object context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String valueOf(Object context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Number numberValueOf(Object context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean booleanValueOf(Object context) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sort(List<Node> list) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sort(List<Node> list, boolean distinct) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNamespaceURIs(Map<String, String> map) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVariableContext(org.jaxen.VariableContext variableContext) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*
|
||||
* This software is open source.
|
||||
* See the bottom of this file for the licence.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from DOM4J version 2.1.1 as available at
|
||||
* https://search.maven.org/remotecontent?filepath=org/dom4j/dom4j/2.1.1/dom4j-2.1.1-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.dom4j.xpath;
|
||||
|
||||
import org.dom4j.Node;
|
||||
|
||||
public class XPathPattern implements org.dom4j.rule.Pattern {
|
||||
public XPathPattern(String text) {
|
||||
}
|
||||
|
||||
public XPathPattern(org.jaxen.pattern.Pattern pattern) {
|
||||
}
|
||||
|
||||
public boolean matches(Node node) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public double getPriority() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public org.dom4j.rule.Pattern[] getUnionPatterns() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public short getMatchType() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getMatchesNodeName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Redistribution and use of this software and associated documentation
|
||||
* ("Software"), with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain copyright statements and
|
||||
* notices. Redistributions must also contain a copy of this document.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name "DOM4J" must not be used to endorse or promote products derived
|
||||
* from this Software without prior written permission of MetaStuff, Ltd. For
|
||||
* written permission, please contact dom4j-info@metastuff.com.
|
||||
*
|
||||
* 4. Products derived from this Software may not be called "DOM4J" nor may
|
||||
* "DOM4J" appear in their names without prior written permission of MetaStuff,
|
||||
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
|
||||
*
|
||||
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
|
||||
*/
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* $Header$
|
||||
* $Revision$
|
||||
* $Date$
|
||||
*
|
||||
* ====================================================================
|
||||
*
|
||||
* Copyright 2000-2002 bob mcwhirter & James Strachan.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of the Jaxen Project nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* ====================================================================
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Jaxen Project and was originally
|
||||
* created by bob mcwhirter <bob@werken.com> and
|
||||
* James Strachan <jstrachan@apache.org>. For more information on the
|
||||
* Jaxen Project, please see <http://www.jaxen.org/>.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
package org.jaxen;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class SimpleVariableContext implements VariableContext, Serializable {
|
||||
public SimpleVariableContext() {
|
||||
}
|
||||
|
||||
public void setVariableValue(String namespaceURI, String localName, Object value) {
|
||||
}
|
||||
|
||||
public void setVariableValue(String localName, Object value) {
|
||||
}
|
||||
|
||||
public Object getVariableValue(String namespaceURI, String prefix, String localName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* $Header$
|
||||
* $Revision$
|
||||
* $Date$
|
||||
*
|
||||
* ====================================================================
|
||||
*
|
||||
* Copyright 2000-2002 bob mcwhirter & James Strachan.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of the Jaxen Project nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* ====================================================================
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Jaxen Project and was originally
|
||||
* created by bob mcwhirter <bob@werken.com> and
|
||||
* James Strachan <jstrachan@apache.org>. For more information on the
|
||||
* Jaxen Project, please see <http://www.jaxen.org/>.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Adapted from Jaxen version 1.2.0 as available at
|
||||
* https://repo1.maven.org/maven2/jaxen/jaxen/1.2.0/jaxen-1.2.0-sources.jar
|
||||
* Only relevant stubs of this file have been retained for test purposes.
|
||||
*/
|
||||
|
||||
package org.jaxen;
|
||||
|
||||
public interface VariableContext {
|
||||
public Object getVariableValue(String namespaceURI, String prefix, String localName);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* $Header$
|
||||
* $Revision$
|
||||
* $Date$
|
||||
*
|
||||
* ====================================================================
|
||||
*
|
||||
* Copyright 2000-2002 bob mcwhirter & James Strachan.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of the Jaxen Project nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* ====================================================================
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Jaxen Project and was originally
|
||||
* created by bob mcwhirter <bob@werken.com> and
|
||||
* James Strachan <jstrachan@apache.org>. For more information on the
|
||||
* Jaxen Project, please see <http://www.jaxen.org/>.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
package org.jaxen.pattern;
|
||||
|
||||
public abstract class Pattern {
|
||||
public double getPriority() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public Pattern[] getUnionPatterns() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public short getMatchType() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getMatchesNodeName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Pattern simplify() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public abstract String getText();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.springframework.beans.factory.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface Autowired {
|
||||
boolean required() default true;
|
||||
}
|
||||
Reference in New Issue
Block a user