You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mt...@apache.org on 2019/10/30 15:41:30 UTC
svn commit: r1869183 -
/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java
Author: mthl
Date: Wed Oct 30 15:41:29 2019
New Revision: 1869183
URL: http://svn.apache.org/viewvc?rev=1869183&view=rev
Log:
Improved: Rewrite ‘ComponentContainer#loadComponentsInDirectory’
(OFBIZ-11264)
Use a more declarative style with the stream API.
Modified:
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java
Modified: ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java?rev=1869183&r1=1869182&r2=1869183&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java Wed Oct 30 15:41:29 2019
@@ -26,15 +26,16 @@ import java.net.URLClassLoader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.apache.ofbiz.base.component.ComponentConfig;
import org.apache.ofbiz.base.component.ComponentConfig.DependsOnInfo;
@@ -193,29 +194,22 @@ public class ComponentContainer implemen
* a load-components.xml file. The components are sorted alphabetically
* for loading purposes
*
- * @param directoryPath the absolute path of the directory
+ * @param directoryPath a valid absolute path of a component directory
* @throws IOException
* @throws ComponentException
*/
private void loadComponentsInDirectory(Path directoryPath) throws IOException, ComponentException {
- List<Path> sortedComponentNames = Files.list(directoryPath).collect(Collectors.toList());
- List<ComponentConfig> componentConfigs = new ArrayList<>();
- if (sortedComponentNames == null) {
- throw new IllegalArgumentException("sortedComponentNames is null, directory path is invalid " + directoryPath);
- }
- Collections.sort(sortedComponentNames);
-
- for (Path componentName: sortedComponentNames) {
- Path componentDir = directoryPath.resolve(componentName).toAbsolutePath().normalize();
- Path configFile = componentDir.resolve(ComponentConfig.OFBIZ_COMPONENT_XML_FILENAME);
- if (Files.isDirectory(componentDir) && Files.exists(configFile)) {
- ComponentConfig config = retrieveComponentConfig(null, componentDir);
- componentConfigs.add(config);
- }
- }
- for (ComponentConfig componentConfig : componentConfigs) {
- if (componentConfig != null) {
- loadSingleComponent(componentConfig);
+ try (Stream<Path> paths = Files.list(directoryPath)) {
+ List<ComponentConfig> componentConfigs = paths.sorted()
+ .map(cmpnt -> directoryPath.resolve(cmpnt).toAbsolutePath().normalize())
+ .filter(Files::isDirectory)
+ .filter(dir -> Files.exists(dir.resolve(ComponentConfig.OFBIZ_COMPONENT_XML_FILENAME)))
+ .map(componentDir -> retrieveComponentConfig(null, componentDir))
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+
+ for (ComponentConfig cmpnt : componentConfigs) {
+ loadSingleComponent(cmpnt);
}
}
loadComponentWithDependency();