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:47:58 UTC
svn commit: r1869185 - in
/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base:
component/ComponentConfig.java container/ComponentContainer.java
Author: mthl
Date: Wed Oct 30 15:47:58 2019
New Revision: 1869185
URL: http://svn.apache.org/viewvc?rev=1869185&view=rev
Log:
Improved: Turn ‘DependsOnInfo’ into a String
(OFBIZ-11264)
`depends-on` XML tag doesn't have any `loader` or `location` attribute so
DependsOnInfo does not need to extend ResourceInfo.
When removing the class derivation, DependsOnInfo now becomes a simple box
containing a String attribute. In order to make the manipulation of dependency
information simpler, the attribute is now inlined as a simple String value.
Thanks: Samuel Trégouët for your contribution
Modified:
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java
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/component/ComponentConfig.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java?rev=1869185&r1=1869184&r2=1869185&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java Wed Oct 30 15:47:58 2019
@@ -262,7 +262,7 @@ public final class ComponentConfig {
private final boolean enabled;
private final Map<String, ResourceLoaderInfo> resourceLoaderInfos;
private final List<ClasspathInfo> classpathInfos;
- private final List<DependsOnInfo> dependsOnInfos;
+ private final List<String> dependsOnInfos;
private final List<EntityResourceInfo> entityResourceInfos;
private final List<ServiceResourceInfo> serviceResourceInfos;
private final List<TestSuiteInfo> testSuiteInfos;
@@ -305,7 +305,7 @@ public final class ComponentConfig {
private boolean enabled = true;
private Map<String, ResourceLoaderInfo> resourceLoaderInfos;
private List<ClasspathInfo> classpathInfos;
- private List<DependsOnInfo> dependsOnInfos;
+ private List<String> dependsOnInfos;
private List<EntityResourceInfo> entityResourceInfos;
private List<ServiceResourceInfo> serviceResourceInfos;
private List<TestSuiteInfo> testSuiteInfos;
@@ -343,7 +343,7 @@ public final class ComponentConfig {
return this;
}
- public Builder dependsOnInfos(List<DependsOnInfo> dependsOnInfos) {
+ public Builder dependsOnInfos(List<String> dependsOnInfos) {
this.dependsOnInfos = dependsOnInfos;
return this;
}
@@ -416,7 +416,7 @@ public final class ComponentConfig {
componentName = componentElement.getAttribute("name");
enabled = "true".equalsIgnoreCase(componentElement.getAttribute("enabled"));
this.globalName = UtilValidate.isEmpty(globalName) ? componentName : globalName;
- dependsOnInfos = collectElements(componentElement, "depends-on", DependsOnInfo::new);
+ dependsOnInfos = collectElements(componentElement, "depends-on", (c, e) -> e.getAttribute("component-name"));
classpathInfos = collectElements(componentElement, "classpath", ClasspathInfo::new);
entityResourceInfos = collectElements(componentElement, "entity-resource", EntityResourceInfo::new);
serviceResourceInfos = collectElements(componentElement, "service-resource", ServiceResourceInfo::new);
@@ -518,7 +518,7 @@ public final class ComponentConfig {
*
* @return an immutable list containing the dependency information.
*/
- public List<DependsOnInfo> getDependsOn() {
+ public List<String> getDependsOn() {
return this.dependsOnInfos;
}
@@ -676,7 +676,7 @@ public final class ComponentConfig {
// ComponentConfig instances need to be looked up by their global name and root location,
// so this class encapsulates the Maps and synchronization code required to do that.
- private static final class ComponentConfigCache {
+ static final class ComponentConfigCache {
// Key is the global name.
private final Map<String, ComponentConfig> componentConfigs = new LinkedHashMap<>();
// Root location mapped to global name.
@@ -694,14 +694,14 @@ public final class ComponentConfig {
return componentConfigs.get(globalName);
}
- private synchronized ComponentConfig put(ComponentConfig config) {
+ synchronized ComponentConfig put(ComponentConfig config) {
String globalName = config.getGlobalName();
String fileLocation = config.rootLocation().toString();
componentLocations.put(fileLocation, globalName);
return componentConfigs.put(globalName, config);
}
- private synchronized Collection<ComponentConfig> values() {
+ synchronized Collection<ComponentConfig> values() {
return Collections.unmodifiableList(new ArrayList<>(componentConfigs.values()));
}
}
@@ -723,15 +723,6 @@ public final class ComponentConfig {
}
}
- public static final class DependsOnInfo extends ResourceInfo {
- public final String componentName;
-
- private DependsOnInfo(ComponentConfig componentConfig, Element element) {
- super(componentConfig, element);
- this.componentName = element.getAttribute("component-name");
- }
- }
-
/**
* An object that models the <code><keystore></code> element.
*
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=1869185&r1=1869184&r2=1869185&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:47:58 2019
@@ -38,7 +38,6 @@ 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;
import org.apache.ofbiz.base.component.ComponentException;
import org.apache.ofbiz.base.component.ComponentLoaderConfig;
import org.apache.ofbiz.base.component.ComponentLoaderConfig.ComponentDef;
@@ -65,7 +64,7 @@ public class ComponentContainer implemen
private final AtomicBoolean loaded = new AtomicBoolean(false);
/** The set of ready components in their inverse dependency order. */
private final LinkedHashSet<ComponentConfig> readyComponents = new LinkedHashSet<>();
- private static Map<String, List<DependsOnInfo>> toBeLoadedComponents = new ConcurrentHashMap<>();
+ private static Map<String, List<String>> toBeLoadedComponents = new ConcurrentHashMap<>();
@Override
public void init(List<StartupCommand> ofbizCommands, String name, String configFile) throws ContainerException {
@@ -227,10 +226,10 @@ public class ComponentContainer implemen
if (UtilValidate.isEmpty(toBeLoadedComponents)) {
return;
} else {
- for (Map.Entry<String, List<DependsOnInfo>> entries : toBeLoadedComponents.entrySet()) {
+ for (Map.Entry<String, List<String>> entries : toBeLoadedComponents.entrySet()) {
ComponentConfig config = retrieveComponentConfig(entries.getKey(), null);
if (config.enabled()) {
- List<DependsOnInfo> dependencyList = checkDependencyForComponent(config);
+ List<String> dependencyList = checkDependencyForComponent(config);
if (UtilValidate.isNotEmpty(dependencyList)) {
toBeLoadedComponents.replace(config.getComponentName(), dependencyList);
String msg = "Not loading component [" + config.getComponentName() + "] because it's dependent Component is not loaded [ " + dependencyList + "]";
@@ -277,7 +276,7 @@ public class ComponentContainer implemen
*/
private void loadSingleComponent(ComponentConfig config) throws ComponentException {
if (config.enabled()) {
- List<DependsOnInfo> dependencyList = checkDependencyForComponent(config);
+ List<String> dependencyList = checkDependencyForComponent(config);
if (UtilValidate.isEmpty(dependencyList)) {
readyComponents.add(config);
}
@@ -293,18 +292,18 @@ public class ComponentContainer implemen
* @param config the component configuration
* @throws ComponentException
*/
- private List<DependsOnInfo> checkDependencyForComponent(ComponentConfig config) throws ComponentException {
- List<DependsOnInfo> dependencyList = new ArrayList<>(config.getDependsOn());
+ private List<String> checkDependencyForComponent(ComponentConfig config) throws ComponentException {
+ List<String> dependencyList = new ArrayList<>(config.getDependsOn());
if (UtilValidate.isNotEmpty(dependencyList)) {
- Set<DependsOnInfo> resolvedDependencyList = new HashSet<>();
- for (DependsOnInfo dependency : dependencyList) {
- Debug.logInfo("Component : " + config.getComponentName() + " is Dependent on " + dependency.componentName, module);
- ComponentConfig componentConfig = ComponentConfig.getComponentConfig(String.valueOf(dependency.componentName));
+ Set<String> resolvedDependencyList = new HashSet<>();
+ for (String dependency : dependencyList) {
+ Debug.logInfo("Component : " + config.getComponentName() + " is Dependent on " + dependency, module);
+ ComponentConfig componentConfig = ComponentConfig.getComponentConfig(String.valueOf(dependency));
if (readyComponents.contains(componentConfig)) {
resolvedDependencyList.add(dependency);
}
}
- resolvedDependencyList.forEach(resolvedDependency -> Debug.logInfo("Resolved : " + resolvedDependency.componentName + " Dependency for Component " + config.getComponentName(), module));
+ resolvedDependencyList.forEach(resolvedDependency -> Debug.logInfo("Resolved : " + resolvedDependency + " Dependency for Component " + config.getComponentName(), module));
dependencyList.removeAll(resolvedDependencyList);
if (UtilValidate.isEmpty(dependencyList)) {
toBeLoadedComponents.remove(config.getComponentName());