protected void fixOutboundSocketBindings(SocketBindingGroup group) { ConfigKey key = ROOT.append(group.name()).append("outbound-socket-bindings"); List<SimpleKey> names = this.configView.simpleSubkeys(key); names.stream() .map(e -> e.name()) .map(name -> group.outboundSocketBindings() .stream() .filter(e -> e.name().equals(name)) .findFirst() .orElseGet(() -> { OutboundSocketBinding binding = new OutboundSocketBinding(name); group.outboundSocketBinding(binding); return binding; })) .forEach(e -> { applyConfiguration(key, e); }); }
@Override public void customize() { List<Server> servers = fraction.subresources().servers(); servers.stream() .filter(e -> e instanceof EnhancedServer) .forEach(server -> { ((EnhancedServer) server).remoteConnections() .forEach(connection -> { OutboundSocketBinding binding = new OutboundSocketBinding(connection.name()); binding.remoteHost(connection.host()) .remotePort(connection.port()); group.outboundSocketBinding(binding); }); }); } }
protected void fixOutboundSocketBindings(SocketBindingGroup group) { ConfigKey key = ROOT.append(group.name()).append("outbound-socket-bindings"); List<SimpleKey> names = this.configView.simpleSubkeys(key); names.stream() .map(e -> e.name()) .map(name -> group.outboundSocketBindings() .stream() .filter(e -> e.name().equals(name)) .findFirst() .orElseGet(() -> { OutboundSocketBinding binding = new OutboundSocketBinding(name); group.outboundSocketBinding(binding); return binding; })) .forEach(e -> { applyConfiguration(key, e); }); }
@SuppressWarnings("unused") void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager beanManager) throws Exception { try (AutoCloseable handle = Performance.time("OutboundSocketBindingExtension.afterBeanDiscovery")) { for (OutboundSocketBindingRequest each : this.bindings) { Supplier<Customizer> customizerSupplier = () -> (Customizer) () -> { Set<Bean<?>> groups = beanManager.getBeans(SocketBindingGroup.class, Any.Literal.INSTANCE); groups.stream() .map((Bean<?> e) -> { CreationalContext<?> ctx = beanManager.createCreationalContext(e); return (SocketBindingGroup) beanManager.getReference(e, SocketBindingGroup.class, ctx); }) .filter(group -> group.name().equals(each.socketBindingGroup())) .findFirst() .ifPresent((group) -> group.outboundSocketBinding(each.outboundSocketBinding())); }; CommonBean<Customizer> customizerBean = CommonBeanBuilder.newBuilder(Customizer.class) .beanClass(OutboundSocketBindingExtension.class) .scope(Singleton.class) .addQualifier(Pre.Literal.INSTANCE) .addQualifier(Any.Literal.INSTANCE) .createSupplier(customizerSupplier) .addType(Customizer.class) .addType(Object.class).build(); abd.addBean(customizerBean); } } } }
protected void fixOutboundSocketBindings(SocketBindingGroup group) { ConfigKey key = ROOT.append(group.name()).append("outbound-socket-bindings"); List<SimpleKey> names = this.configView.simpleSubkeys(key); names.stream() .map(e -> e.name()) .map(name -> group.outboundSocketBindings() .stream() .filter(e -> e.name().equals(name)) .findFirst() .orElseGet(() -> { OutboundSocketBinding binding = new OutboundSocketBinding(name); group.outboundSocketBinding(binding); return binding; })) .forEach(e -> { applyConfiguration(key, e); }); }
@SuppressWarnings("unused") void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager beanManager) throws Exception { try (AutoCloseable handle = Performance.time("OutboundSocketBindingExtension.afterBeanDiscovery")) { for (OutboundSocketBindingRequest each : this.bindings) { Supplier<Customizer> customizerSupplier = () -> (Customizer) () -> { Set<Bean<?>> groups = beanManager.getBeans(SocketBindingGroup.class, AnyLiteral.INSTANCE); groups.stream() .map((Bean<?> e) -> { CreationalContext<?> ctx = beanManager.createCreationalContext(e); return (SocketBindingGroup) beanManager.getReference(e, SocketBindingGroup.class, ctx); }) .filter(group -> group.name().equals(each.socketBindingGroup())) .findFirst() .ifPresent((group) -> group.outboundSocketBinding(each.outboundSocketBinding())); }; CommonBean<Customizer> customizerBean = CommonBeanBuilder.newBuilder(Customizer.class) .beanClass(OutboundSocketBindingExtension.class) .scope(Singleton.class) .addQualifier(Pre.Literal.INSTANCE) .addQualifier(AnyLiteral.INSTANCE) .createSupplier(customizerSupplier) .addType(Customizer.class) .addType(Object.class).build(); abd.addBean(customizerBean); } } } }
@SuppressWarnings("unused") void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager beanManager) throws Exception { try (AutoCloseable handle = Performance.time("OutboundSocketBindingExtension.afterBeanDiscovery")) { for (OutboundSocketBindingRequest each : this.bindings) { Supplier<Customizer> customizerSupplier = () -> (Customizer) () -> { Set<Bean<?>> groups = beanManager.getBeans(SocketBindingGroup.class, Any.Literal.INSTANCE); groups.stream() .map((Bean<?> e) -> { CreationalContext<?> ctx = beanManager.createCreationalContext(e); return (SocketBindingGroup) beanManager.getReference(e, SocketBindingGroup.class, ctx); }) .filter(group -> group.name().equals(each.socketBindingGroup())) .findFirst() .ifPresent((group) -> group.outboundSocketBinding(each.outboundSocketBinding())); }; CommonBean<Customizer> customizerBean = CommonBeanBuilder.newBuilder(Customizer.class) .beanClass(OutboundSocketBindingExtension.class) .scope(Singleton.class) .addQualifier(Pre.Literal.INSTANCE) .addQualifier(Any.Literal.INSTANCE) .createSupplier(customizerSupplier) .addType(Customizer.class) .addType(Object.class).build(); abd.addBean(customizerBean); } } } }
private void applySocketBindingGroupDefaults(Container config) { if (config.socketBindingGroups().isEmpty()) { config.socketBindingGroup( new SocketBindingGroup("default-sockets", "public", SwarmProperties.propertyVar(SwarmProperties.PORT_OFFSET, "0")) ); } Set<String> groupNames = config.socketBindings().keySet(); for (String each : groupNames) { List<SocketBinding> bindings = config.socketBindings().get(each); SocketBindingGroup group = config.getSocketBindingGroup(each); if (group == null) { throw new RuntimeException("No socket-binding-group for '" + each + "'"); } for (SocketBinding binding : bindings) { group.socketBinding(binding); } } groupNames = config.outboundSocketBindings().keySet(); for (String each : groupNames) { List<OutboundSocketBinding> bindings = config.outboundSocketBindings().get(each); SocketBindingGroup group = config.getSocketBindingGroup(each); if (group == null) { throw new RuntimeException("No socket-binding-group for '" + each + "'"); } for (OutboundSocketBinding binding : bindings) { group.outboundSocketBinding(binding); } } }
@Override public void customize() { if (!mailInstance.isUnsatisfied()) { MailFraction mailFraction = mailInstance.get(); for (MailSession session : mailFraction.subresources().mailSessions()) { SMTPServer server = session.subresources().smtpServer(); if (server != null && server instanceof EnhancedSMTPServer) { if (server.outboundSocketBindingRef() == null) { String ref = "mail-smtp-" + ((EnhancedSMTPServer) server).sessionKey(); this.group.outboundSocketBinding( new OutboundSocketBinding(ref) .remoteHost(((EnhancedSMTPServer) server).host()) .remotePort(((EnhancedSMTPServer) server).port())); ((EnhancedSMTPServer) server).outboundSocketBindingRef(ref); } } } } } }