private AddressSpaceType createBrokeredType(List<AddressSpacePlan> addressSpacePlans, Collection<AddressPlan> addressPlans, List<InfraConfig> brokeredInfraConfigs) {
AddressSpaceTypeBuilder builder = new AddressSpaceTypeBuilder();
builder.withName("brokered");
builder.withDescription("A brokered address space consists of a broker combined with a console for managing addresses.");
builder.withAvailableEndpoints(Arrays.asList(
createEndpointSpec("messaging", "messaging", "amqps", TlsTermination.passthrough),
createEndpointSpec("messaging-wss", "messaging", "amqps", TlsTermination.reencrypt),
createEndpointSpec("console", "console", "https", TlsTermination.reencrypt)));
List<AddressSpacePlan> filteredAddressSpaceplans = addressSpacePlans.stream()
.filter(plan -> "brokered".equals(plan.getAddressSpaceType()))
.collect(Collectors.toList());
builder.withPlans(filteredAddressSpaceplans);
List<AddressPlan> filteredAddressPlans = addressPlans.stream()
.filter(plan -> filteredAddressSpaceplans.stream()
.filter(aPlan -> aPlan.getAddressPlans().contains(plan.getMetadata().getName()))
.count() > 0)
.collect(Collectors.toList());
builder.withInfraConfigs(brokeredInfraConfigs);
builder.withAddressTypes(Arrays.asList(
createAddressType(
"queue",
"A queue that supports selectors, message grouping and transactions",
filteredAddressPlans),
createAddressType(
"topic",
"A topic supports pub-sub semantics. Messages sent to a topic address is forwarded to all subscribes on that address.",
filteredAddressPlans)));
return builder.build();
}