#cfcatch.stacktrace#
FILE_SEPERATOR
*/
@@ -163,7 +165,7 @@ public static final String URIToFilename(String str) {
*/
public static boolean isLocked(Resource res) {
- if (!(res instanceof File) || !SystemUtil.isWindows() || !res.exists()) return false;
+ if (!(res instanceof File) || !IS_WINDOWS || !res.exists()) return false;
try {
InputStream is = res.getInputStream();
is.close();
diff --git a/core/src/main/java/lucee/commons/io/res/type/file/FileResource.java b/core/src/main/java/lucee/commons/io/res/type/file/FileResource.java
index fc74dc9940..841f70e69f 100644
--- a/core/src/main/java/lucee/commons/io/res/type/file/FileResource.java
+++ b/core/src/main/java/lucee/commons/io/res/type/file/FileResource.java
@@ -64,6 +64,8 @@ public final class FileResource extends File implements Resource {
private static final long serialVersionUID = -6856656594615376447L;
private static final CopyOption[] COPY_OPTIONS = new CopyOption[] { StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES };
+ private static final boolean IS_WINDOWS = SystemUtil.isWindows();
+ private static final boolean IS_UNIX = SystemUtil.isUnix();
private final FileResourceProvider provider;
@@ -461,7 +463,7 @@ public boolean isSystem() {
@Override
public int getMode() {
if (!exists()) return 0;
- if (SystemUtil.isUnix()) {
+ if (IS_UNIX) {
try {
PosixFileAttributes attrs = Files.readAttributes(toPath(), PosixFileAttributes.class);
SetFILE_SEPERATOR
@@ -354,7 +355,7 @@ public static Resource toResourceNotExisting(PageContext pc, String destination,
Config cw = pc.getConfig();
Resource[] sources = ((ConfigPro) cw).getResources(pci,
ExpandPath.mergeMappings(pc.getApplicationContext().getMappings(), pc.getApplicationContext().getComponentMappings()), destination, false,
- pci.useSpecialMappings(), SystemUtil.isWindows(), checkComponentMappings, false);
+ pci.useSpecialMappings(), IS_WINDOWS, checkComponentMappings, false);
if (!ArrayUtil.isEmpty(sources)) {
for (int i = 0; i < sources.length; i++) {
res = sources[i];
@@ -396,11 +397,11 @@ private static Resource getRealResource(PageContext pc, String destination, Reso
}
public static boolean isUNCPath(String path) {
- return SystemUtil.isWindows() && (path.startsWith("//") || path.startsWith("\\\\"));
+ return IS_WINDOWS && (path.startsWith("//") || path.startsWith("\\\\"));
}
public static boolean isWindowsPath(String path) {
- return SystemUtil.isWindows() && path.length() > 1 && path.charAt(1) == ':';
+ return IS_WINDOWS && path.length() > 1 && path.charAt(1) == ':';
}
/**
diff --git a/core/src/main/java/lucee/commons/io/res/util/WildcardPatternFilter.java b/core/src/main/java/lucee/commons/io/res/util/WildcardPatternFilter.java
index ca8d0b9a41..07e79ee067 100644
--- a/core/src/main/java/lucee/commons/io/res/util/WildcardPatternFilter.java
+++ b/core/src/main/java/lucee/commons/io/res/util/WildcardPatternFilter.java
@@ -23,6 +23,8 @@
public final class WildcardPatternFilter implements ResourceAndResourceNameFilter {
+ private static final boolean IS_WINDOWS = SystemUtil.isWindows();
+
private final WildcardPattern matcher;
public WildcardPatternFilter(String patt, boolean ignoreCase, String patternDelimiters) {
@@ -32,7 +34,7 @@ public WildcardPatternFilter(String patt, boolean ignoreCase, String patternDeli
public WildcardPatternFilter(String pattern, String patternDelimiters) {
- this(pattern, SystemUtil.isWindows(), patternDelimiters);
+ this(pattern, IS_WINDOWS, patternDelimiters);
}
@Override
diff --git a/core/src/main/java/lucee/commons/lang/MemoryClassLoader.java b/core/src/main/java/lucee/commons/lang/MemoryClassLoader.java
index 959b2f559e..b670a37e5b 100644
--- a/core/src/main/java/lucee/commons/lang/MemoryClassLoader.java
+++ b/core/src/main/java/lucee/commons/lang/MemoryClassLoader.java
@@ -134,7 +134,7 @@ public Class> loadClass(String name, byte[] barr) throws UnmodifiableClassExce
}
private Class> rename(Class> clazz, byte[] barr) {
- String newName = clazz.getName() + "$" + PhysicalClassLoader.uid();
+ String newName = clazz.getName() + "$" + PhysicalClassLoaderFactory.uid();
return _loadClass(newName, ClassRenamer.rename(barr, newName));
}
diff --git a/core/src/main/java/lucee/commons/lang/PhysicalClassLoader.java b/core/src/main/java/lucee/commons/lang/PhysicalClassLoader.java
index e0a8985fb4..f0c036b73c 100644
--- a/core/src/main/java/lucee/commons/lang/PhysicalClassLoader.java
+++ b/core/src/main/java/lucee/commons/lang/PhysicalClassLoader.java
@@ -18,49 +18,32 @@
*/
package lucee.commons.lang;
-import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.instrument.UnmodifiableClassException;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-import org.apache.felix.framework.BundleWiringImpl.BundleClassLoader;
-
-import lucee.commons.digest.HashUtil;
-import lucee.commons.io.CharsetUtil;
import lucee.commons.io.IOUtil;
import lucee.commons.io.SystemUtil;
+import lucee.commons.io.log.Log;
import lucee.commons.io.log.LogUtil;
import lucee.commons.io.res.Resource;
-import lucee.commons.io.res.type.file.FileResource;
-import lucee.commons.io.res.util.ResourceUtil;
import lucee.commons.lang.ClassUtil.ClassLoading;
import lucee.runtime.PageSourcePool;
import lucee.runtime.config.Config;
import lucee.runtime.config.ConfigPro;
-import lucee.runtime.converter.ConverterException;
-import lucee.runtime.converter.JSONConverter;
-import lucee.runtime.converter.JSONDateFormat;
-import lucee.runtime.exp.ApplicationException;
-import lucee.runtime.listener.JavaSettings;
-import lucee.runtime.listener.JavaSettingsImpl;
-import lucee.runtime.listener.SerializationSettings;
+import lucee.runtime.op.Caster;
import lucee.runtime.osgi.OSGiUtil;
-import lucee.runtime.type.Struct;
-import lucee.runtime.type.StructImpl;
-import lucee.runtime.type.util.KeyConstants;
import lucee.transformer.bytecode.util.ASMUtil;
import lucee.transformer.bytecode.util.ClassRenamer;
+import lucee.transformer.dynamic.DynamicInvoker;
+import lucee.transformer.dynamic.meta.dynamic.ClazzDynamic;
/**
* Directory ClassLoader
@@ -71,18 +54,17 @@ public final class PhysicalClassLoader extends URLClassLoader implements Extenda
boolean res = registerAsParallelCapable();
}
- private static RC rc = new RC();
-
- private static Map