Skip to content

Commit 7e242cc

Browse files
committed
Update to use streaming API and support Jars
1 parent 98e0b5c commit 7e242cc

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

operator/src/main/java/oracle/kubernetes/operator/helpers/ConfigMapHelper.java

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33

44
package oracle.kubernetes.operator.helpers;
55

6-
import java.io.ByteArrayOutputStream;
76
import java.io.IOException;
8-
import java.io.InputStream;
97
import java.net.URI;
108
import java.net.URISyntaxException;
9+
import java.nio.charset.StandardCharsets;
1110
import java.nio.file.FileSystem;
1211
import java.nio.file.FileSystems;
1312
import java.nio.file.Files;
1413
import java.nio.file.Path;
14+
import java.nio.file.Paths;
1515
import java.util.Collections;
1616
import java.util.HashMap;
17-
import java.util.Iterator;
1817
import java.util.List;
1918
import java.util.Map;
19+
import java.util.stream.Collectors;
2020
import java.util.stream.Stream;
2121

2222
import io.kubernetes.client.ApiException;
@@ -25,7 +25,6 @@
2525
import oracle.kubernetes.operator.KubernetesConstants;
2626
import oracle.kubernetes.operator.LabelConstants;
2727
import oracle.kubernetes.operator.ProcessingConstants;
28-
import oracle.kubernetes.operator.WebLogicConstants;
2928
import oracle.kubernetes.operator.logging.LoggingFacade;
3029
import oracle.kubernetes.operator.logging.LoggingFactory;
3130
import oracle.kubernetes.operator.logging.MessageKeys;
@@ -37,7 +36,8 @@
3736
public class ConfigMapHelper {
3837
private static final LoggingFacade LOGGER = LoggingFactory.getLogger("Operator", "Operator");
3938

40-
private static final String SCRIPT_LOCATION = "/scripts";
39+
private static final String SCRIPTS = "scripts";
40+
private static final String SCRIPT_LOCATION = "/" + SCRIPTS;
4141

4242
private ConfigMapHelper() {}
4343

@@ -163,38 +163,38 @@ private synchronized Map<String, String> loadScripts() {
163163
LOGGER.warning(MessageKeys.EXCEPTION, e);
164164
throw new RuntimeException(e);
165165
}
166-
167-
try (FileSystem fileSystem = FileSystems.newFileSystem(uri, Collections.<String, Object>emptyMap())) {
168-
Stream<Path> walk = Files.walk(fileSystem.getPath(SCRIPT_LOCATION), 1);
169-
Map<String, String> data = new HashMap<>();
170-
for (Iterator<Path> it = walk.iterator(); it.hasNext();) {
171-
Path script = it.next();
172-
String scriptName = script.toString();
173-
if (!SCRIPT_LOCATION.equals(scriptName)) {
174-
data.put(script.getFileName().toString(), readScript(scriptName));
166+
167+
try {
168+
if ("jar".equals(uri.getScheme())) {
169+
try (FileSystem fileSystem = FileSystems.newFileSystem(uri, Collections.<String, Object>emptyMap())) {
170+
return walkScriptsPath(fileSystem.getPath(SCRIPTS));
175171
}
172+
} else {
173+
return walkScriptsPath(Paths.get(uri));
176174
}
177-
LOGGER.info(MessageKeys.SCRIPT_LOADED, domainNamespace);
178-
return data;
179175
} catch (IOException e) {
180176
LOGGER.warning(MessageKeys.EXCEPTION, e);
181177
throw new RuntimeException(e);
182178
}
183179
}
184-
185-
private String readScript(String scriptName) throws IOException {
186-
try (
187-
InputStream inputStream = getClass().getResourceAsStream(scriptName);
188-
ByteArrayOutputStream result = new ByteArrayOutputStream()
189-
) {
190-
byte[] buffer = new byte[1024];
191-
int length;
192-
while ((length = inputStream.read(buffer)) != -1) {
193-
result.write(buffer, 0, length);
194-
}
195-
return result.toString();
180+
181+
private Map<String, String> walkScriptsPath(Path scriptsDir) throws IOException {
182+
try (Stream<Path> walk = Files.walk(scriptsDir, 1)) {
183+
Map<String, String> data = walk.filter(i -> !Files.isDirectory(i)).collect(Collectors.toMap(
184+
i -> i.getFileName().toString(),
185+
i -> new String(read(i), StandardCharsets.UTF_8)));
186+
LOGGER.info(MessageKeys.SCRIPT_LOADED, domainNamespace);
187+
return data;
196188
}
197189
}
190+
191+
private byte[] read(Path path) {
192+
try {
193+
return Files.readAllBytes(path);
194+
} catch (IOException io) {
195+
LOGGER.warning(MessageKeys.EXCEPTION, io);
196+
}
197+
return null;
198+
}
198199
}
199-
200200
}

0 commit comments

Comments
 (0)