Skip to content

Commit c6e520c

Browse files
committed
Simplifying prune method
LMCROSSITXSADEPLOY-2301
1 parent 5340053 commit c6e520c

1 file changed

Lines changed: 33 additions & 32 deletions

File tree

multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/builders/ExtensionDescriptorChainBuilder.java

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayList;
44
import java.util.Collections;
5+
import java.util.LinkedHashMap;
56
import java.util.List;
67
import java.util.Map;
78
import java.util.Optional;
@@ -34,6 +35,7 @@ private boolean isSecureDescriptor(ExtensionDescriptor extensionDescriptor) {
3435
}
3536

3637
public List<ExtensionDescriptor> build(DeploymentDescriptor deploymentDescriptor, List<ExtensionDescriptor> extensionDescriptors) throws ContentException {
38+
saveSecureExtensionDescriptor(extensionDescriptors);
3739
Map<String, ExtensionDescriptor> extensionDescriptorsPerParent = getExtensionDescriptorsPerParent(extensionDescriptors);
3840
return build(deploymentDescriptor, extensionDescriptorsPerParent);
3941
}
@@ -42,25 +44,14 @@ private List<ExtensionDescriptor> build(DeploymentDescriptor deploymentDescripto
4244
Map<String, ExtensionDescriptor> extensionDescriptorsPerParent) {
4345
List<ExtensionDescriptor> chain = new ArrayList<>();
4446
Descriptor currentDescriptor = deploymentDescriptor;
45-
ExtensionDescriptor secureDescriptor = null;
4647

4748
while (currentDescriptor != null) {
4849
ExtensionDescriptor nextDescriptor = extensionDescriptorsPerParent.remove(currentDescriptor.getId());
49-
50-
if(nextDescriptor != null && isSecureDescriptor(nextDescriptor)) {
51-
secureDescriptor = nextDescriptor;
52-
continue;
53-
}
54-
5550
CollectionUtils.addIgnoreNull(chain, nextDescriptor);
5651
currentDescriptor = nextDescriptor;
5752
}
5853

59-
CollectionUtils.addIgnoreNull(chain, secureDescriptor);
60-
61-
if(secureDescriptor == null && this.secureExtensionDescriptor != null) {
62-
CollectionUtils.addIgnoreNull(chain, this.secureExtensionDescriptor);
63-
}
54+
CollectionUtils.addIgnoreNull(chain, this.secureExtensionDescriptor);
6455

6556
if (!extensionDescriptorsPerParent.isEmpty() && isStrict) {
6657
throw new ContentException(Messages.CANNOT_BUILD_EXTENSION_DESCRIPTOR_CHAIN_BECAUSE_DESCRIPTORS_0_HAVE_AN_UNKNOWN_PARENT,
@@ -77,25 +68,23 @@ private Map<String, ExtensionDescriptor> getExtensionDescriptorsPerParent(List<E
7768
}
7869

7970
private Map<String, ExtensionDescriptor> prune(Map<String, List<ExtensionDescriptor>> extensionDescriptorsPerParent) {
80-
return extensionDescriptorsPerParent.entrySet()
81-
.stream()
82-
.collect(Collectors.toMap(Map.Entry::getKey, entry -> {
83-
List<ExtensionDescriptor> localList = entry.getValue();
84-
85-
for(ExtensionDescriptor extensionDescriptor : localList) {
86-
if(extensionDescriptor.getId().equals(Constants.SECURE_EXTENSION_DESCRIPTOR_ID)) {
87-
this.secureExtensionDescriptor = extensionDescriptor;
88-
}
89-
}
90-
91-
for(ExtensionDescriptor extensionDescriptor : localList) {
92-
if(!extensionDescriptor.getId().equals(Constants.SECURE_EXTENSION_DESCRIPTOR_ID)) {
93-
return extensionDescriptor;
94-
}
95-
}
96-
97-
return localList.get(0);
98-
}));
71+
Map<String, ExtensionDescriptor> resultMap = new LinkedHashMap<>();
72+
73+
for (Map.Entry<String, List<ExtensionDescriptor>> entry : extensionDescriptorsPerParent.entrySet()) {
74+
ExtensionDescriptor firstNonSecureExtensionDescriptor = null;
75+
76+
for (ExtensionDescriptor currentExtensionDescriptorForParent : entry.getValue()) {
77+
if (!isSecureDescriptor(currentExtensionDescriptorForParent)) {
78+
firstNonSecureExtensionDescriptor = currentExtensionDescriptorForParent;
79+
break;
80+
}
81+
}
82+
83+
if (firstNonSecureExtensionDescriptor != null) {
84+
resultMap.put(entry.getKey(), firstNonSecureExtensionDescriptor);
85+
}
86+
}
87+
return resultMap;
9988
}
10089

10190
private void validateSingleExtensionDescriptorPerParent(Map<String, List<ExtensionDescriptor>> extensionDescriptorsPerParent) {
@@ -109,4 +98,16 @@ private void validateSingleExtensionDescriptorPerParent(Map<String, List<Extensi
10998
}
11099
}
111100

112-
}
101+
private void saveSecureExtensionDescriptor(List<ExtensionDescriptor> extensionDescriptors) {
102+
ExtensionDescriptor lastSecureExtensionDescriptor = null;
103+
104+
for(ExtensionDescriptor extensionDescriptor : extensionDescriptors) {
105+
if(isSecureDescriptor(extensionDescriptor)) {
106+
lastSecureExtensionDescriptor = extensionDescriptor;
107+
}
108+
}
109+
110+
this.secureExtensionDescriptor = lastSecureExtensionDescriptor;
111+
}
112+
113+
}

0 commit comments

Comments
 (0)