¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, DreamLu All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: DreamLu 墿¥æ¢¦ (596392912@qq.com) |
| | | */ |
| | | package org.springblade.core.auto.service; |
| | | |
| | | import java.io.*; |
| | | import java.nio.charset.Charset; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Collection; |
| | | import java.util.HashSet; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * A helper class for reading and writing Services files. |
| | | * |
| | | * @author L.cm |
| | | */ |
| | | class ServicesFiles { |
| | | private static final Charset UTF_8 = StandardCharsets.UTF_8; |
| | | |
| | | /** |
| | | * Reads the set of service classes from a service file. |
| | | * |
| | | * @param input not {@code null}. Closed after use. |
| | | * @return a not {@code null Set} of service class names. |
| | | * @throws IOException |
| | | */ |
| | | static Set<String> readServiceFile(InputStream input) throws IOException { |
| | | HashSet<String> serviceClasses = new HashSet<>(); |
| | | try ( |
| | | InputStreamReader isr = new InputStreamReader(input, UTF_8); |
| | | BufferedReader r = new BufferedReader(isr) |
| | | ) { |
| | | String line; |
| | | while ((line = r.readLine()) != null) { |
| | | int commentStart = line.indexOf('#'); |
| | | if (commentStart >= 0) { |
| | | line = line.substring(0, commentStart); |
| | | } |
| | | line = line.trim(); |
| | | if (!line.isEmpty()) { |
| | | serviceClasses.add(line); |
| | | } |
| | | } |
| | | return serviceClasses; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Writes the set of service class names to a service file. |
| | | * |
| | | * @param output not {@code null}. Not closed after use. |
| | | * @param services a not {@code null Collection} of service class names. |
| | | * @throws IOException |
| | | */ |
| | | static void writeServiceFile(Collection<String> services, OutputStream output) throws IOException { |
| | | BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, UTF_8)); |
| | | for (String service : services) { |
| | | writer.write(service); |
| | | writer.newLine(); |
| | | } |
| | | writer.flush(); |
| | | } |
| | | } |