public class nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher extends java.lang.Object implements nl.basjes.parse.useragent.utils.springframework.util.PathMatcher
{
public static final java.lang.String DEFAULT_PATH_SEPARATOR;
private static final int CACHE_TURNOFF_THRESHOLD;
private static final char[] WILDCARD_CHARS;
private final java.lang.String pathSeparator;
private volatile java.lang.Boolean cachePatterns;
private final java.util.Map tokenizedPatternCache;
final java.util.Map stringMatcherCache;
public void <init>()
{
java.util.concurrent.ConcurrentHashMap v, v;
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(256);
v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map tokenizedPatternCache> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(256);
v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map stringMatcherCache> = v;
v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator> = "/";
return;
}
private void deactivatePatternCache()
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.util.Map v, v;
java.lang.Boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(0);
v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.Boolean cachePatterns> = v;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map tokenizedPatternCache>;
interfaceinvoke v.<java.util.Map: void clear()>();
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map stringMatcherCache>;
interfaceinvoke v.<java.util.Map: void clear()>();
return;
}
public boolean isPattern(java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
int v, v;
char v;
java.lang.String v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
if v != null goto label;
return 0;
label:
v = 0;
v = 0;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= v goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v == 42 goto label;
if v != 63 goto label;
label:
return 1;
label:
if v != 123 goto label;
v = 1;
goto label;
label:
if v != 125 goto label;
if v == 0 goto label;
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
public boolean match(java.lang.String, java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.lang.String v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean doMatch(java.lang.String,java.lang.String,boolean,java.util.Map)>(v, v, 1, null);
return v;
}
public boolean matchStart(java.lang.String, java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.lang.String v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean doMatch(java.lang.String,java.lang.String,boolean,java.util.Map)>(v, v, 0, null);
return v;
}
protected boolean doMatch(java.lang.String, java.lang.String, boolean, java.util.Map)
{
java.util.Map v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.lang.String[] v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v := @parameter: java.util.Map;
if v == null goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
if v == v goto label;
label:
return 0;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String[] tokenizePattern(java.lang.String)>(v);
if v == 0 goto label;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean isPotentialMatch(java.lang.String,java.lang.String[])>(v, v);
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String[] tokenizePath(java.lang.String)>(v);
v = 0;
v = lengthof v;
v = v - 1;
v = 0;
v = lengthof v;
v = v - 1;
label:
if v > v goto label;
if v > v goto label;
v = v[v];
v = "**";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v[v];
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean matchStrings(java.lang.String,java.lang.String,java.util.Map)>(v, v, v);
if v != 0 goto label;
return 0;
label:
v = v + 1;
v = v + 1;
goto label;
label:
if v <= v goto label;
if v <= v goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(v);
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(v);
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
if v != 0 goto label;
return 1;
label:
if v != v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("*");
if v == 0 goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(v);
if v == 0 goto label;
return 1;
label:
v = v;
label:
if v > v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("**");
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
label:
if v <= v goto label;
return 0;
label:
if v != 0 goto label;
v = "**";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return 1;
label:
if v > v goto label;
if v > v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("**");
if v != 0 goto label;
v = v[v];
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean matchStrings(java.lang.String,java.lang.String,java.util.Map)>(v, v, v);
if v != 0 goto label;
return 0;
label:
v = v - 1;
v = v - 1;
goto label;
label:
if v <= v goto label;
v = v;
label:
if v > v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("**");
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
label:
if v == v goto label;
if v > v goto label;
v = (int) -1;
v = v;
v = v + 1;
label:
if v > v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("**");
if v == 0 goto label;
v = v;
goto label;
label:
v = v + 1;
goto label;
label:
v = v + 1;
if v != v goto label;
v = v + 1;
goto label;
label:
v = v - v;
v = v - 1;
v = v - v;
v = v + 1;
v = (int) -1;
v = v;
v = 0;
label:
v = v - v;
if v > v goto label;
v = 0;
label:
if v >= v goto label;
v = v + v;
v = v + 1;
v = v[v];
v = v + v;
v = v + v;
v = v[v];
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean matchStrings(java.lang.String,java.lang.String,java.util.Map)>(v, v, v);
if v == 0 goto label;
v = v + 1;
goto label;
label:
v = v + v;
goto label;
label:
v = v + 1;
goto label;
label:
v = (int) -1;
if v != v goto label;
return 0;
label:
v = v;
v = v + v;
goto label;
label:
v = v;
label:
if v > v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("**");
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
private boolean isPotentialMatch(java.lang.String, java.lang.String[])
{
java.lang.String[] v;
int v, v, v, v, v, v, v, v;
java.lang.String v, v, v;
boolean v, v;
char v;
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String[];
v = 0;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: int skipSeparator(java.lang.String,int,java.lang.String)>(v, v, v);
v = v + v;
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: int skipSegment(java.lang.String,int,java.lang.String)>(v, v, v);
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= v goto label;
if v > 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean isWildcardChar(char)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
v = v + v;
v = v + 1;
goto label;
label:
return 1;
}
private int skipSegment(java.lang.String, int, java.lang.String)
{
char v, v;
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
int v, v, v, v, v, v;
java.lang.String v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v = 0;
v = 0;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= v goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
v = specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: boolean isWildcardChar(char)>(v);
if v == 0 goto label;
return v;
label:
v = v + v;
v = virtualinvoke v.<java.lang.String: int length()>();
if v < v goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != v goto label;
v = v + 1;
label:
v = v + 1;
goto label;
label:
return v;
}
private int skipSeparator(java.lang.String, int, java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
int v, v, v, v;
java.lang.String v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v = 0;
label:
v = v + v;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String,int)>(v, v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
goto label;
label:
return v;
}
private boolean isWildcardChar(char)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
int v, v;
char[] v;
char v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: char;
v = <nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: char[] WILDCARD_CHARS>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
if v != v goto label;
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
protected java.lang.String[] tokenizePattern(java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.util.Map v, v, v;
int v;
java.lang.Boolean v;
java.lang.Object v;
java.lang.String v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.Boolean cachePatterns>;
if v == null goto label;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map tokenizedPatternCache>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
label:
if v != null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String[] tokenizePath(java.lang.String)>(v);
if v != null goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map tokenizedPatternCache>;
v = interfaceinvoke v.<java.util.Map: int size()>();
if v < 65536 goto label;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: void deactivatePatternCache()>();
return v;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map tokenizedPatternCache>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return v;
}
protected java.lang.String[] tokenizePath(java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.lang.String[] v;
java.lang.String v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.String pathSeparator>;
v = staticinvoke <nl.basjes.parse.useragent.utils.springframework.util.StringUtils: java.lang.String[] tokenizeToStringArray(java.lang.String,java.lang.String,boolean,boolean)>(v, v, 0, 1);
return v;
}
private boolean matchStrings(java.lang.String, java.lang.String, java.util.Map)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher v;
java.util.Map v;
java.lang.String v, v;
boolean v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.util.Map;
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher getStringMatcher(java.lang.String)>(v);
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher: boolean matchStrings(java.lang.String,java.util.Map)>(v, v);
return v;
}
protected nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher getStringMatcher(java.lang.String)
{
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher v;
nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher v;
java.util.Map v, v, v;
int v;
java.lang.Boolean v;
java.lang.Object v;
java.lang.String v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.lang.Boolean cachePatterns>;
if v == null goto label;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map stringMatcherCache>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
label:
if v != null goto label;
v = new nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher$AntPathStringMatcher: void <init>(java.lang.String,boolean)>(v, 1);
v = v;
if v != null goto label;
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map stringMatcherCache>;
v = interfaceinvoke v.<java.util.Map: int size()>();
if v < 65536 goto label;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: void deactivatePatternCache()>();
return v;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
label:
v = v.<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: java.util.Map stringMatcherCache>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return v;
}
static void <clinit>()
{
char[] v;
v = newarray (char)[3];
v[0] = 42;
v[1] = 63;
v[2] = 123;
<nl.basjes.parse.useragent.utils.springframework.util.AntPathMatcher: char[] WILDCARD_CHARS> = v;
return;
}
}