diff --git a/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/SpringBootVFS.java b/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/SpringBootVFS.java index 067954bf..a6d81953 100644 --- a/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/SpringBootVFS.java +++ b/mybatis-flex-spring-boot-starter/src/main/java/com/mybatisflex/spring/boot/SpringBootVFS.java @@ -1,17 +1,17 @@ -/** - * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). - *

- * 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 - *

- * http://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. +/* + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *

+ * 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 + *

+ * http://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 com.mybatisflex.spring.boot; @@ -31,59 +31,58 @@ import java.util.stream.Collectors; import java.util.stream.Stream; /** - * Mybatis 的 VFS 支持 + * MyBatis 的 VFS 支持。 */ public class SpringBootVFS extends VFS { - private static Charset urlDecodingCharset; - private final ResourcePatternResolver resourceResolver; + private static Charset urlDecodingCharset; - static { - setUrlDecodingCharset(Charset.defaultCharset()); - } - - public SpringBootVFS() { - this.resourceResolver = new PathMatchingResourcePatternResolver(getClass().getClassLoader()); - } - - @Override - public boolean isValid() { - return true; - } - - @Override - protected List list(URL url, String path) throws IOException { - String urlString = URLDecoder.decode(url.toString(), urlDecodingCharset.name()); - String baseUrlString = urlString.endsWith("/") ? urlString : urlString.concat("/"); - Resource[] resources = resourceResolver.getResources(baseUrlString + "**/*.class"); - return Stream.of(resources).map(resource -> preserveSubpackageName(baseUrlString, resource, path)) - .collect(Collectors.toList()); - } - - /** - * Set the charset for decoding an encoded URL string. - *

- * Default is system default charset. - *

- * - * @param charset - * the charset for decoding an encoded URL string - * - * @since 2.3.0 - */ - public static void setUrlDecodingCharset(Charset charset) { - urlDecodingCharset = charset; - } - - private static String preserveSubpackageName(final String baseUrlString, final Resource resource, - final String rootPath) { - try { - return rootPath + (rootPath.endsWith("/") ? "" : "/") + Normalizer - .normalize(URLDecoder.decode(resource.getURL().toString(), urlDecodingCharset.name()), Normalizer.Form.NFC) - .substring(baseUrlString.length()); - } catch (IOException e) { - throw new UncheckedIOException(e); + static { + setUrlDecodingCharset(Charset.defaultCharset()); + } + + private final ResourcePatternResolver resourceResolver; + + public SpringBootVFS() { + this.resourceResolver = new PathMatchingResourcePatternResolver(getClass().getClassLoader()); + } + + /** + * Set the charset for decoding an encoded URL string. + *

+ * Default is system default charset. + *

+ * + * @param charset the charset for decoding an encoded URL string + * @since 2.3.0 + */ + public static void setUrlDecodingCharset(Charset charset) { + urlDecodingCharset = charset; + } + + private static String preserveSubpackageName(final String baseUrlString, final Resource resource, + final String rootPath) { + try { + return rootPath + (rootPath.endsWith("/") ? "" : "/") + Normalizer + .normalize(URLDecoder.decode(resource.getURL().toString(), urlDecodingCharset.name()), Normalizer.Form.NFC) + .substring(baseUrlString.length()); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + @Override + public boolean isValid() { + return true; + } + + @Override + protected List list(URL url, String path) throws IOException { + String urlString = URLDecoder.decode(url.toString(), urlDecodingCharset.name()); + String baseUrlString = urlString.endsWith("/") ? urlString : urlString.concat("/"); + Resource[] resources = resourceResolver.getResources(baseUrlString + "**/*.class"); + return Stream.of(resources).map(resource -> preserveSubpackageName(baseUrlString, resource, path)) + .collect(Collectors.toList()); } - } }