diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/CustomJavaFileObject.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/CustomJavaFileObject.java index e34e89bc..5423370f 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/CustomJavaFileObject.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/CustomJavaFileObject.java @@ -21,6 +21,8 @@ */ package fun.asgc.neutrino.core.aop.compiler; +import fun.asgc.neutrino.core.aop.compiler.internal.SpringBootJarParser; + import javax.lang.model.element.Modifier; import javax.lang.model.element.NestingKind; import javax.tools.JavaFileObject; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/SpringBootJarParser.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/SpringBootJarParser.java deleted file mode 100644 index 59d96551..00000000 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/SpringBootJarParser.java +++ /dev/null @@ -1,50 +0,0 @@ -package fun.asgc.neutrino.core.aop.compiler; - -import org.springframework.boot.loader.jar.JarFile; -import org.springframework.boot.loader.jar.JarURLConnection; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.net.URI; -import java.net.URL; - -/** - * @author: aoshiguchen - * @date: 2023/2/23 - */ -public class SpringBootJarParser { - - /** - * 根据一个URI从SpringBoot jar包中解析出输入流 - * 1、先尝试直接获取流,若能获取则到此结束 - * 2、若不能获取,且URI标识定位的是一个jar包,则进行处理(只处理SpringBoot情况的jar) - * @param uri - * @return - */ - public static InputStream getInputStream(URI uri) { - try { - return uri.toURL().openStream(); - } catch (Exception e) { - try { - if (e instanceof FileNotFoundException && uri.getScheme().equals("jar")) { - URL url = uri.toURL(); - String path = url.getPath(); - int index = path.indexOf("!"); - if (index >= 0) { - path = path.substring(0, index); - } - if (path.startsWith("file:")) { - path = path.substring(5); - } - JarFile jarFile = new JarFile(new File(path)); - return JarURLConnection.get(url, jarFile).getInputStream(); - } - } catch (Exception e1) { - // ignore - System.out.println("1"); - } - } - return null; - } -} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/ClassPathIndexFile.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/ClassPathIndexFile.java similarity index 80% rename from neutrino-core/src/main/java/org/springframework/boot/loader/ClassPathIndexFile.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/ClassPathIndexFile.java index ce1334fd..b7db262d 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/ClassPathIndexFile.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/ClassPathIndexFile.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader; +package fun.asgc.neutrino.core.aop.compiler.internal; import java.io.*; import java.net.MalformedURLException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/ExecutableArchiveLauncher.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/ExecutableArchiveLauncher.java similarity index 88% rename from neutrino-core/src/main/java/org/springframework/boot/loader/ExecutableArchiveLauncher.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/ExecutableArchiveLauncher.java index 2302de4f..56d81c11 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/ExecutableArchiveLauncher.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/ExecutableArchiveLauncher.java @@ -1,23 +1,7 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal; -package org.springframework.boot.loader; - -import org.springframework.boot.loader.archive.Archive; -import org.springframework.boot.loader.archive.ExplodedArchive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.Archive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.ExplodedArchive; import java.io.IOException; import java.net.URL; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/MyJarLauncher.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/JarLauncher.java similarity index 57% rename from neutrino-core/src/main/java/org/springframework/boot/loader/MyJarLauncher.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/JarLauncher.java index a955869b..38a24bab 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/MyJarLauncher.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/JarLauncher.java @@ -1,25 +1,8 @@ -/* - * Copyright 2012-2021 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal; -package org.springframework.boot.loader; - -import org.springframework.boot.loader.archive.Archive; -import org.springframework.boot.loader.archive.Archive.EntryFilter; -import org.springframework.boot.loader.archive.ExplodedArchive; -import org.springframework.boot.loader.archive.JarFileArchive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.Archive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.ExplodedArchive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.JarFileArchive; import java.io.File; @@ -34,18 +17,18 @@ import java.io.File; * @author Scott Frederick * @since 1.0.0 */ -public class MyJarLauncher extends ExecutableArchiveLauncher { +public class JarLauncher extends ExecutableArchiveLauncher { private String path; - static final EntryFilter NESTED_ARCHIVE_ENTRY_FILTER = (entry) -> { + static final Archive.EntryFilter NESTED_ARCHIVE_ENTRY_FILTER = (entry) -> { if (entry.isDirectory()) { return entry.getName().equals("BOOT-INF/classes/"); } return entry.getName().startsWith("BOOT-INF/lib/"); }; - public MyJarLauncher(String path) { + public JarLauncher(String path) { this.path = path; try { this.setArchive(createArchive(this.path)); @@ -71,7 +54,7 @@ public class MyJarLauncher extends ExecutableArchiveLauncher { return (root.isDirectory() ? new ExplodedArchive(root) : new JarFileArchive(root)); } - protected MyJarLauncher(Archive archive) { + protected JarLauncher(Archive archive) { super(archive); } @@ -90,8 +73,4 @@ public class MyJarLauncher extends ExecutableArchiveLauncher { return "BOOT-INF/"; } -// public static void main(String[] args) throws Exception { -// new MyJarLauncher().launch(args); -// } - } diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/LaunchedURLClassLoader.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/LaunchedURLClassLoader.java similarity index 91% rename from neutrino-core/src/main/java/org/springframework/boot/loader/LaunchedURLClassLoader.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/LaunchedURLClassLoader.java index 583ae498..dfd76b4f 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/LaunchedURLClassLoader.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/LaunchedURLClassLoader.java @@ -1,23 +1,7 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal; -package org.springframework.boot.loader; - -import org.springframework.boot.loader.archive.Archive; -import org.springframework.boot.loader.jar.Handler; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.Archive; +import fun.asgc.neutrino.core.aop.compiler.internal.jar.Handler; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -307,8 +291,8 @@ public class LaunchedURLClassLoader extends URLClassLoader { private void clearCache(URLConnection connection) throws IOException { Object jarFile = ((JarURLConnection) connection).getJarFile(); - if (jarFile instanceof org.springframework.boot.loader.jar.JarFile) { - ((org.springframework.boot.loader.jar.JarFile) jarFile).clearCache(); + if (jarFile instanceof fun.asgc.neutrino.core.aop.compiler.internal.jar.JarFile) { + ((fun.asgc.neutrino.core.aop.compiler.internal.jar.JarFile) jarFile).clearCache(); } } diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/Launcher.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/Launcher.java similarity index 53% rename from neutrino-core/src/main/java/org/springframework/boot/loader/Launcher.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/Launcher.java index 10bdca69..3c97a75e 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/Launcher.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/Launcher.java @@ -1,25 +1,8 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal; -package org.springframework.boot.loader; - -import org.springframework.boot.loader.archive.Archive; -import org.springframework.boot.loader.archive.ExplodedArchive; -import org.springframework.boot.loader.archive.JarFileArchive; -import org.springframework.boot.loader.jar.JarFile; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.Archive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.ExplodedArchive; +import fun.asgc.neutrino.core.aop.compiler.internal.archive.JarFileArchive; import java.io.File; import java.net.URI; @@ -40,24 +23,6 @@ import java.util.List; */ public abstract class Launcher { - private static final String JAR_MODE_LAUNCHER = "org.springframework.boot.loader.jarmode.JarModeLauncher"; - - /** - * Launch the application. This method is the initial entry point that should be - * called by a subclass {@code public static void main(String[] args)} method. - * @param args the incoming arguments - * @throws Exception if the application fails to launch - */ - protected void launch(String[] args) throws Exception { - if (!isExploded()) { - JarFile.registerUrlProtocolHandler(); - } - ClassLoader classLoader = createClassLoader(getClassPathArchivesIterator()); - String jarMode = System.getProperty("jarmode"); - String launchClass = (jarMode != null && !jarMode.isEmpty()) ? JAR_MODE_LAUNCHER : getMainClass(); - launch(args, launchClass, classLoader); - } - /** * Create a classloader for the specified archives. * @param archives the archives @@ -83,29 +48,6 @@ public abstract class Launcher { return new LaunchedURLClassLoader(isExploded(), getArchive(), urls, getClass().getClassLoader()); } - /** - * Launch the application given the archive file and a fully configured classloader. - * @param args the incoming arguments - * @param launchClass the launch class to run - * @param classLoader the classloader - * @throws Exception if the launch fails - */ - protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception { - Thread.currentThread().setContextClassLoader(classLoader); - createMainMethodRunner(launchClass, args, classLoader).run(); - } - - /** - * Create the {@code MainMethodRunner} used to launch the application. - * @param mainClass the main class - * @param args the incoming arguments - * @param classLoader the classloader - * @return the main method runner - */ - protected MainMethodRunner createMainMethodRunner(String mainClass, String[] args, ClassLoader classLoader) { - return new MainMethodRunner(mainClass, args); - } - /** * Returns the main class that should be launched. * @return the name of the main class diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/SpringBootJarParser.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/SpringBootJarParser.java new file mode 100644 index 00000000..cfff65b2 --- /dev/null +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/SpringBootJarParser.java @@ -0,0 +1,44 @@ +package fun.asgc.neutrino.core.aop.compiler.internal; + +import fun.asgc.neutrino.core.aop.compiler.internal.jar.JarFile; +import fun.asgc.neutrino.core.aop.compiler.internal.jar.JarURLConnection; + +import java.io.File; +import java.io.InputStream; +import java.net.URI; +import java.net.URL; + +/** + * @author: aoshiguchen + * @date: 2023/2/23 + */ +public final class SpringBootJarParser { + + /** + * 根据一个URI从SpringBoot jar包中解析出输入流 + * 1、先尝试直接获取流,若能获取则到此结束 + * 2、若不能获取,且URI标识定位的是一个jar包,则进行处理(只处理SpringBoot情况的jar) + * @param uri + * @return + */ + public static InputStream getInputStream(URI uri) { + try { + if (uri.getScheme().equals("jar")) { + URL url = uri.toURL(); + String path = url.getPath(); + int index = path.indexOf("!"); + if (index >= 0) { + path = path.substring(0, index); + } + if (path.startsWith("file:")) { + path = path.substring(5); + } + JarFile jarFile = new JarFile(new File(path)); + return JarURLConnection.get(url, jarFile).getInputStream(); + } + } catch (Exception e1) { + // ignore + } + return null; + } +} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/util/SystemPropertyUtils.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/SystemPropertyUtils.java similarity index 91% rename from neutrino-core/src/main/java/org/springframework/boot/loader/util/SystemPropertyUtils.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/SystemPropertyUtils.java index b6f0e3a3..4f698fc2 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/util/SystemPropertyUtils.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/SystemPropertyUtils.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.util; +package fun.asgc.neutrino.core.aop.compiler.internal; import java.util.HashSet; import java.util.Locale; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/archive/Archive.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/Archive.java similarity index 76% rename from neutrino-core/src/main/java/org/springframework/boot/loader/archive/Archive.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/Archive.java index 919d30c0..3cecdad2 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/archive/Archive.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/Archive.java @@ -1,22 +1,6 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.archive; -package org.springframework.boot.loader.archive; - -import org.springframework.boot.loader.Launcher; +import fun.asgc.neutrino.core.aop.compiler.internal.Launcher; import java.io.IOException; import java.net.MalformedURLException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/archive/ExplodedArchive.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/ExplodedArchive.java similarity index 91% rename from neutrino-core/src/main/java/org/springframework/boot/loader/archive/ExplodedArchive.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/ExplodedArchive.java index 205601d0..3377a110 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/archive/ExplodedArchive.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/ExplodedArchive.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.archive; +package fun.asgc.neutrino.core.aop.compiler.internal.archive; import java.io.File; import java.io.FileInputStream; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/archive/JarFileArchive.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/JarFileArchive.java similarity index 91% rename from neutrino-core/src/main/java/org/springframework/boot/loader/archive/JarFileArchive.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/JarFileArchive.java index 9516cb3c..327642dd 100755 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/archive/JarFileArchive.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/archive/JarFileArchive.java @@ -1,22 +1,6 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.archive; -package org.springframework.boot.loader.archive; - -import org.springframework.boot.loader.jar.JarFile; +import fun.asgc.neutrino.core.aop.compiler.internal.jar.JarFile; import java.io.File; import java.io.IOException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/data/RandomAccessData.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/data/RandomAccessData.java similarity index 72% rename from neutrino-core/src/main/java/org/springframework/boot/loader/data/RandomAccessData.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/data/RandomAccessData.java index ec1aa5e4..b55aef44 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/data/RandomAccessData.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/data/RandomAccessData.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.data; +package fun.asgc.neutrino.core.aop.compiler.internal.data; import java.io.EOFException; import java.io.IOException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/data/RandomAccessDataFile.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/data/RandomAccessDataFile.java similarity index 89% rename from neutrino-core/src/main/java/org/springframework/boot/loader/data/RandomAccessDataFile.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/data/RandomAccessDataFile.java index 73877288..a77ce34d 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/data/RandomAccessDataFile.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/data/RandomAccessDataFile.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.data; +package fun.asgc.neutrino.core.aop.compiler.internal.data; import java.io.*; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/AbstractJarFile.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/AbstractJarFile.java similarity index 67% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/AbstractJarFile.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/AbstractJarFile.java index 88726e37..eed7b062 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/AbstractJarFile.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/AbstractJarFile.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.io.File; import java.io.IOException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/AsciiBytes.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/AsciiBytes.java similarity index 89% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/AsciiBytes.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/AsciiBytes.java index 4b6e2678..06caea44 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/AsciiBytes.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/AsciiBytes.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.nio.charset.StandardCharsets; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/Bytes.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/Bytes.java new file mode 100644 index 00000000..99fabb53 --- /dev/null +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/Bytes.java @@ -0,0 +1,21 @@ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; + +/** + * Utilities for dealing with bytes from ZIP files. + * + * @author Phillip Webb + */ +final class Bytes { + + private Bytes() { + } + + static long littleEndianValue(byte[] bytes, int offset, int length) { + long value = 0; + for (int i = length - 1; i >= 0; i--) { + value = ((value << 8) | (bytes[offset + i] & 0xFF)); + } + return value; + } + +} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryEndRecord.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryEndRecord.java similarity index 91% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryEndRecord.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryEndRecord.java index b1d24d65..75fa2761 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryEndRecord.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryEndRecord.java @@ -1,22 +1,6 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; -package org.springframework.boot.loader.jar; - -import org.springframework.boot.loader.data.RandomAccessData; +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessData; import java.io.IOException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryFileHeader.java similarity index 89% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryFileHeader.java index b532b611..340289c2 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryFileHeader.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryFileHeader.java @@ -1,22 +1,6 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; -package org.springframework.boot.loader.jar; - -import org.springframework.boot.loader.data.RandomAccessData; +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessData; import java.io.IOException; import java.time.ZoneId; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryParser.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryParser.java similarity index 78% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryParser.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryParser.java index 6ac0ca1b..3e81183b 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/CentralDirectoryParser.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryParser.java @@ -1,22 +1,6 @@ -/* - * Copyright 2012-2021 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; -package org.springframework.boot.loader.jar; - -import org.springframework.boot.loader.data.RandomAccessData; +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessData; import java.io.IOException; import java.util.ArrayList; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryVisitor.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryVisitor.java new file mode 100644 index 00000000..af1e84ed --- /dev/null +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/CentralDirectoryVisitor.java @@ -0,0 +1,18 @@ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; + +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessData; + +/** + * Callback visitor triggered by {@link CentralDirectoryParser}. + * + * @author Phillip Webb + */ +interface CentralDirectoryVisitor { + + void visitStart(CentralDirectoryEndRecord endRecord, RandomAccessData centralDirectoryData); + + void visitFileHeader(CentralDirectoryFileHeader fileHeader, long dataOffset); + + void visitEnd(); + +} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/FileHeader.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/FileHeader.java similarity index 60% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/FileHeader.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/FileHeader.java index 4b8de500..9180d093 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/FileHeader.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/FileHeader.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.util.zip.ZipEntry; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/Handler.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/Handler.java similarity index 94% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/Handler.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/Handler.java index d5cc8e74..44b60ebd 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/Handler.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/Handler.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.io.File; import java.io.IOException; @@ -82,10 +66,10 @@ public class Handler extends URLStreamHandler { @Override protected URLConnection openConnection(URL url) throws IOException { if (this.jarFile != null && isUrlInJarFile(url, this.jarFile)) { - return JarURLConnection.get(url, this.jarFile); + return fun.asgc.neutrino.core.aop.compiler.internal.jar.JarURLConnection.get(url, this.jarFile); } try { - return JarURLConnection.get(url, getRootJarFileFromUrl(url)); + return fun.asgc.neutrino.core.aop.compiler.internal.jar.JarURLConnection.get(url, getRootJarFileFromUrl(url)); } catch (Exception ex) { return openFallbackConnection(url, ex); @@ -418,7 +402,7 @@ public class Handler extends URLStreamHandler { resetCachedUrlHandlers(); jarContextUrl = new URL("jar:file:context.jar!/"); URLConnection connection = jarContextUrl.openConnection(); - if (connection instanceof JarURLConnection) { + if (connection instanceof fun.asgc.neutrino.core.aop.compiler.internal.jar.JarURLConnection) { jarContextUrl = null; } } diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarEntry.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntry.java similarity index 79% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarEntry.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntry.java index 5b8f3bed..9a6235a0 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarEntry.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntry.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.io.IOException; import java.net.MalformedURLException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarEntryCertification.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntryCertification.java similarity index 64% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarEntryCertification.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntryCertification.java index cbf66412..51bef47a 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarEntryCertification.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntryCertification.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.security.CodeSigner; import java.security.cert.Certificate; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntryFilter.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntryFilter.java new file mode 100644 index 00000000..e036d174 --- /dev/null +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarEntryFilter.java @@ -0,0 +1,19 @@ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; + +/** + * Interface that can be used to filter and optionally rename jar entries. + * + * @author Phillip Webb + */ +interface JarEntryFilter { + + /** + * Apply the jar entry filter. + * @param name the current entry name. This may be different that the original entry + * name if a previous filter has been applied + * @return the new name of the entry or {@code null} if the entry should not be + * included. + */ + AsciiBytes apply(AsciiBytes name); + +} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFile.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFile.java similarity index 93% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFile.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFile.java index 2e9bfb8a..ac1eaade 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFile.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFile.java @@ -1,23 +1,7 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; -package org.springframework.boot.loader.jar; - -import org.springframework.boot.loader.data.RandomAccessData; -import org.springframework.boot.loader.data.RandomAccessDataFile; +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessData; +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessDataFile; import java.io.File; import java.io.FilePermission; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFileEntries.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFileEntries.java similarity index 94% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFileEntries.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFileEntries.java index 3da8c5c9..f7e1aadd 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFileEntries.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFileEntries.java @@ -1,22 +1,6 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +package fun.asgc.neutrino.core.aop.compiler.internal.jar; -package org.springframework.boot.loader.jar; - -import org.springframework.boot.loader.data.RandomAccessData; +import fun.asgc.neutrino.core.aop.compiler.internal.data.RandomAccessData; import java.io.IOException; import java.io.InputStream; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFileWrapper.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFileWrapper.java similarity index 76% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFileWrapper.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFileWrapper.java index 61343ac8..f3b8cf3b 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarFileWrapper.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarFileWrapper.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.io.IOException; import java.io.InputStream; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarURLConnection.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarURLConnection.java similarity index 93% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarURLConnection.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarURLConnection.java index 26ced367..b9b16c7e 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/JarURLConnection.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/JarURLConnection.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.io.*; import java.net.*; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/StringSequence.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/StringSequence.java similarity index 82% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/StringSequence.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/StringSequence.java index ee1feb0a..4c2ab911 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/StringSequence.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/StringSequence.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.util.Objects; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/ZipInflaterInputStream.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/ZipInflaterInputStream.java similarity index 69% rename from neutrino-core/src/main/java/org/springframework/boot/loader/jar/ZipInflaterInputStream.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/ZipInflaterInputStream.java index 87587bed..f526f359 100644 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/jar/ZipInflaterInputStream.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/aop/compiler/internal/jar/ZipInflaterInputStream.java @@ -1,20 +1,4 @@ -/* - * Copyright 2012-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader.jar; +package fun.asgc.neutrino.core.aop.compiler.internal.jar; import java.io.EOFException; import java.io.IOException; diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/JarLauncher.java b/neutrino-core/src/main/java/org/springframework/boot/loader/JarLauncher.java deleted file mode 100644 index 2c86b3d4..00000000 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/JarLauncher.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2012-2021 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader; - -import org.springframework.boot.loader.archive.Archive; -import org.springframework.boot.loader.archive.Archive.EntryFilter; - -/** - * {@link Launcher} for JAR based archives. This launcher assumes that dependency jars are - * included inside a {@code /BOOT-INF/lib} directory and that application classes are - * included inside a {@code /BOOT-INF/classes} directory. - * - * @author Phillip Webb - * @author Andy Wilkinson - * @author Madhura Bhave - * @author Scott Frederick - * @since 1.0.0 - */ -public class JarLauncher extends ExecutableArchiveLauncher { - - static final EntryFilter NESTED_ARCHIVE_ENTRY_FILTER = (entry) -> { - if (entry.isDirectory()) { - return entry.getName().equals("BOOT-INF/classes/"); - } - return entry.getName().startsWith("BOOT-INF/lib/"); - }; - - public JarLauncher() { - } - - protected JarLauncher(Archive archive) { - super(archive); - } - - @Override - protected boolean isPostProcessingClassPathArchives() { - return false; - } - - @Override - protected boolean isNestedArchive(Archive.Entry entry) { - return NESTED_ARCHIVE_ENTRY_FILTER.matches(entry); - } - - @Override - protected String getArchiveEntryPathPrefix() { - return "BOOT-INF/"; - } - - public static void main(String[] args) throws Exception { - new JarLauncher().launch(args); - } - -} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/MainMethodRunner.java b/neutrino-core/src/main/java/org/springframework/boot/loader/MainMethodRunner.java deleted file mode 100644 index 9b7a551a..00000000 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/MainMethodRunner.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2012-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader; - -import java.lang.reflect.Method; - -/** - * Utility class that is used by {@link Launcher}s to call a main method. The class - * containing the main method is loaded using the thread context class loader. - * - * @author Phillip Webb - * @author Andy Wilkinson - * @since 1.0.0 - */ -public class MainMethodRunner { - - private final String mainClassName; - - private final String[] args; - - /** - * Create a new {@link MainMethodRunner} instance. - * @param mainClass the main class - * @param args incoming arguments - */ - public MainMethodRunner(String mainClass, String[] args) { - this.mainClassName = mainClass; - this.args = (args != null) ? args.clone() : null; - } - - public void run() throws Exception { - Class> mainClass = Class.forName(this.mainClassName, false, Thread.currentThread().getContextClassLoader()); - Method mainMethod = mainClass.getDeclaredMethod("main", String[].class); - mainMethod.setAccessible(true); - mainMethod.invoke(null, new Object[] { this.args }); - } - -} diff --git a/neutrino-core/src/main/java/org/springframework/boot/loader/PropertiesLauncher.java b/neutrino-core/src/main/java/org/springframework/boot/loader/PropertiesLauncher.java deleted file mode 100755 index 15b89120..00000000 --- a/neutrino-core/src/main/java/org/springframework/boot/loader/PropertiesLauncher.java +++ /dev/null @@ -1,716 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.loader; - -import org.springframework.boot.loader.archive.Archive; -import org.springframework.boot.loader.archive.Archive.Entry; -import org.springframework.boot.loader.archive.Archive.EntryFilter; -import org.springframework.boot.loader.archive.ExplodedArchive; -import org.springframework.boot.loader.archive.JarFileArchive; -import org.springframework.boot.loader.util.SystemPropertyUtils; - -import java.io.*; -import java.lang.reflect.Constructor; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLDecoder; -import java.util.*; -import java.util.jar.Manifest; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * {@link Launcher} for archives with user-configured classpath and main class through a - * properties file. This model is often more flexible and more amenable to creating - * well-behaved OS-level services than a model based on executable jars. - *
- * Looks in various places for a properties file to extract loader settings, defaulting to - * {@code loader.properties} either on the current classpath or in the current working - * directory. The name of the properties file can be changed by setting a System property - * {@code loader.config.name} (e.g. {@code -Dloader.config.name=foo} will look for - * {@code foo.properties}. If that file doesn't exist then tries - * {@code loader.config.location} (with allowed prefixes {@code classpath:} and - * {@code file:} or any valid URL). Once that file is located turns it into Properties and - * extracts optional values (which can also be provided overridden as System properties in - * case the file doesn't exist): - *
${loader.home}/META-INF.${user.dir}).
- */
- public static final String HOME = "loader.home";
-
- /**
- * Properties key for default command line arguments. These arguments (if present) are
- * prepended to the main method arguments before launching.
- */
- public static final String ARGS = "loader.args";
-
- /**
- * Properties key for name of external configuration file (excluding suffix). Defaults
- * to "application". Ignored if {@link #CONFIG_LOCATION loader config location} is
- * provided instead.
- */
- public static final String CONFIG_NAME = "loader.config.name";
-
- /**
- * Properties key for config file location (including optional classpath:, file: or
- * URL prefix).
- */
- public static final String CONFIG_LOCATION = "loader.config.location";
-
- /**
- * Properties key for boolean flag (default false) which, if set, will cause the
- * external configuration properties to be copied to System properties (assuming that
- * is allowed by Java security).
- */
- public static final String SET_SYSTEM_PROPERTIES = "loader.system";
-
- private static final Pattern WORD_SEPARATOR = Pattern.compile("\\W+");
-
- private static final String NESTED_ARCHIVE_SEPARATOR = "!" + File.separator;
-
- private final File home;
-
- private List