public class org.apache.shiro.web.env.EnvironmentLoader extends java.lang.Object
{
public static final java.lang.String ENVIRONMENT_CLASS_PARAM;
public static final java.lang.String CONFIG_LOCATIONS_PARAM;
public static final java.lang.String ENVIRONMENT_ATTRIBUTE_KEY;
private static final org.slf4j.Logger log;
public void <init>()
{
org.apache.shiro.web.env.EnvironmentLoader v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public org.apache.shiro.web.env.WebEnvironment initEnvironment(javax.servlet.ServletContext) throws java.lang.IllegalStateException
{
java.lang.IllegalStateException v;
java.lang.Error v;
long v, v, v;
java.lang.Long v;
java.lang.String v, v, v, v, v;
org.apache.shiro.web.env.EnvironmentLoader v;
boolean v;
org.slf4j.Logger v, v, v, v, v, v;
org.apache.shiro.web.env.WebEnvironment v;
java.lang.RuntimeException v;
java.lang.Object v;
javax.servlet.ServletContext v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: javax.servlet.ServletContext;
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
v = interfaceinvoke v.<javax.servlet.ServletContext: java.lang.Object getAttribute(java.lang.String)>(v);
if v == null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("There is already a Shiro environment associated with the current ServletContext.  Check if you have multiple EnvironmentLoader* definitions in your web.xml!");
throw v;
label:
interfaceinvoke v.<javax.servlet.ServletContext: void log(java.lang.String)>("Initializing Shiro environment");
v = <org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Starting Shiro environment initialization.");
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
label:
v = virtualinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: org.apache.shiro.web.env.WebEnvironment createEnvironment(javax.servlet.ServletContext)>(v);
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
interfaceinvoke v.<javax.servlet.ServletContext: void setAttribute(java.lang.String,java.lang.Object)>(v, v);
v = <org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log>;
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Published WebEnvironment as ServletContext attribute with name [{}]", v);
v = <org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isInfoEnabled()>();
if v == 0 goto label;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v - v;
v = <org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Shiro environment initialized in {} ms.", v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Shiro environment initialization failed", v);
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
interfaceinvoke v.<javax.servlet.ServletContext: void setAttribute(java.lang.String,java.lang.Object)>(v, v);
throw v;
label:
v := @caughtexception;
v = <org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Shiro environment initialization failed", v);
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
interfaceinvoke v.<javax.servlet.ServletContext: void setAttribute(java.lang.String,java.lang.Object)>(v, v);
throw v;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Error from label to label with label;
}
protected java.lang.Class determineWebEnvironmentClass(javax.servlet.ServletContext)
{
java.lang.Class v, v;
javax.servlet.ServletContext v;
org.apache.shiro.web.env.EnvironmentLoader v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: javax.servlet.ServletContext;
v = specialinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: java.lang.Class webEnvironmentClassFromServletContext(javax.servlet.ServletContext)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: java.lang.Class getDefaultWebEnvironmentClass()>();
return v;
}
private java.lang.Class webEnvironmentClassFromServletContext(javax.servlet.ServletContext)
{
org.apache.shiro.config.ConfigurationException v;
java.lang.Class v;
javax.servlet.ServletContext v;
java.lang.String v, v;
org.apache.shiro.util.UnknownClassException v;
org.apache.shiro.web.env.EnvironmentLoader v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: javax.servlet.ServletContext;
v = null;
v = interfaceinvoke v.<javax.servlet.ServletContext: java.lang.String getInitParameter(java.lang.String)>("shiroEnvironmentClass");
if v == null goto label;
label:
v = staticinvoke <org.apache.shiro.util.ClassUtils: java.lang.Class forName(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.shiro.config.ConfigurationException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to load custom WebEnvironment class [\u]");
specialinvoke v.<org.apache.shiro.config.ConfigurationException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
return v;
catch org.apache.shiro.util.UnknownClassException from label to label with label;
}
private org.apache.shiro.web.env.WebEnvironment webEnvironmentFromServiceLoader()
{
java.util.Iterator v;
java.util.ServiceLoader v;
java.util.ArrayList v;
org.apache.shiro.config.ConfigurationException v;
java.lang.Class v, v;
java.lang.Object v, v;
java.lang.String v, v, v;
org.apache.shiro.web.env.EnvironmentLoader v;
boolean v, v, v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v = staticinvoke <java.util.ServiceLoader: java.util.ServiceLoader load(java.lang.Class)>(class "Lorg/apache/shiro/web/env/WebEnvironment;");
v = virtualinvoke v.<java.util.ServiceLoader: java.util.Iterator iterator()>();
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new org.apache.shiro.config.ConfigurationException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Class,java.util.ArrayList)>(class "Lorg/apache/shiro/web/env/WebEnvironment;", v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("ServiceLoader for class [\u] returned more then one result.  ServiceLoader must return zero or exactly one result for this class. Select one using the servlet init parameter \'shiroEnvironmentClass\'. Found: \u0001");
specialinvoke v.<org.apache.shiro.config.ConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
protected java.lang.Class getDefaultWebEnvironmentClass()
{
org.apache.shiro.web.env.EnvironmentLoader v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
return class "Lorg/apache/shiro/web/env/IniWebEnvironment;";
}
protected org.apache.shiro.web.env.WebEnvironment determineWebEnvironment(javax.servlet.ServletContext)
{
org.apache.shiro.web.env.WebEnvironment v;
java.lang.Class v;
java.lang.Object v;
javax.servlet.ServletContext v;
org.apache.shiro.web.env.EnvironmentLoader v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: javax.servlet.ServletContext;
v = specialinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: java.lang.Class webEnvironmentClassFromServletContext(javax.servlet.ServletContext)>(v);
if v != null goto label;
v = specialinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: org.apache.shiro.web.env.WebEnvironment webEnvironmentFromServiceLoader()>();
if v != null goto label;
if v != null goto label;
v = virtualinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: java.lang.Class getDefaultWebEnvironmentClass()>();
label:
if v == null goto label;
v = staticinvoke <org.apache.shiro.util.ClassUtils: java.lang.Object newInstance(java.lang.Class)>(v);
label:
return v;
}
protected org.apache.shiro.web.env.WebEnvironment createEnvironment(javax.servlet.ServletContext)
{
org.apache.shiro.config.ConfigurationException v, v;
java.lang.String v, v, v, v, v, v, v;
org.apache.shiro.web.env.EnvironmentLoader v;
boolean v, v, v, v;
org.apache.shiro.web.env.MutableWebEnvironment v;
org.apache.shiro.web.env.WebEnvironment v;
java.lang.Class v, v, v, v, v, v;
javax.servlet.ServletContext v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: javax.servlet.ServletContext;
v = virtualinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: org.apache.shiro.web.env.WebEnvironment determineWebEnvironment(javax.servlet.ServletContext)>(v);
v = class "Lorg/apache/shiro/web/env/MutableWebEnvironment;";
v = virtualinvoke v.<java.lang.Class: boolean isInstance(java.lang.Object)>(v);
if v != 0 goto label;
v = new org.apache.shiro.config.ConfigurationException;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = class "Lorg/apache/shiro/web/env/MutableWebEnvironment;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Custom WebEnvironment class [\u] is not of required type [\u]");
specialinvoke v.<org.apache.shiro.config.ConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
v = interfaceinvoke v.<javax.servlet.ServletContext: java.lang.String getInitParameter(java.lang.String)>("shiroConfigLocations");
v = staticinvoke <org.apache.shiro.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
v = class "Lorg/apache/shiro/config/ResourceConfigurable;";
v = virtualinvoke v.<java.lang.Class: boolean isInstance(java.lang.Object)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = class "Lorg/apache/shiro/config/ResourceConfigurable;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("WebEnvironment class [\u] does not implement the \u0001interface.  This is required to accept any configured shiroConfigLocationsvalue(s).");
v = new org.apache.shiro.config.ConfigurationException;
specialinvoke v.<org.apache.shiro.config.ConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
interfaceinvoke v.<org.apache.shiro.web.env.MutableWebEnvironment: void setServletContext(javax.servlet.ServletContext)>(v);
if v == 0 goto label;
v = v instanceof org.apache.shiro.config.ResourceConfigurable;
if v == 0 goto label;
interfaceinvoke v.<org.apache.shiro.config.ResourceConfigurable: void setConfigLocations(java.lang.String)>(v);
label:
virtualinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: void customizeEnvironment(org.apache.shiro.web.env.WebEnvironment)>(v);
staticinvoke <org.apache.shiro.util.LifecycleUtils: void init(java.lang.Object)>(v);
return v;
}
protected void customizeEnvironment(org.apache.shiro.web.env.WebEnvironment)
{
org.apache.shiro.web.env.EnvironmentLoader v;
org.apache.shiro.web.env.WebEnvironment v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: org.apache.shiro.web.env.WebEnvironment;
return;
}
public void destroyEnvironment(javax.servlet.ServletContext)
{
java.lang.Throwable v;
java.lang.Object v;
javax.servlet.ServletContext v;
java.lang.String v, v, v;
org.apache.shiro.web.env.EnvironmentLoader v;
boolean v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: javax.servlet.ServletContext;
interfaceinvoke v.<javax.servlet.ServletContext: void log(java.lang.String)>("Cleaning up Shiro Environment");
label:
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
v = interfaceinvoke v.<javax.servlet.ServletContext: java.lang.Object getAttribute(java.lang.String)>(v);
v = v instanceof org.apache.shiro.web.env.WebEnvironment;
if v == 0 goto label;
virtualinvoke v.<org.apache.shiro.web.env.EnvironmentLoader: void finalizeEnvironment(org.apache.shiro.web.env.WebEnvironment)>(v);
label:
staticinvoke <org.apache.shiro.util.LifecycleUtils: void destroy(java.lang.Object)>(v);
label:
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
interfaceinvoke v.<javax.servlet.ServletContext: void removeAttribute(java.lang.String)>(v);
goto label;
label:
v := @caughtexception;
v = <org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY>;
interfaceinvoke v.<javax.servlet.ServletContext: void removeAttribute(java.lang.String)>(v);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
protected void finalizeEnvironment(org.apache.shiro.web.env.WebEnvironment)
{
org.apache.shiro.web.env.EnvironmentLoader v;
org.apache.shiro.web.env.WebEnvironment v;
v := @this: org.apache.shiro.web.env.EnvironmentLoader;
v := @parameter: org.apache.shiro.web.env.WebEnvironment;
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
java.lang.Class v;
java.lang.String v, v;
v = class "Lorg/apache/shiro/web/env/EnvironmentLoader;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u.ENVIRONMENT_ATTRIBUTE_KEY");
<org.apache.shiro.web.env.EnvironmentLoader: java.lang.String ENVIRONMENT_ATTRIBUTE_KEY> = v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/shiro/web/env/EnvironmentLoader;");
<org.apache.shiro.web.env.EnvironmentLoader: org.slf4j.Logger log> = v;
return;
}
}