private EndpointConfig(Builder builder) { this.annotations = Collections.unmodifiableMap(new EnumMap<>(builder.annotations)); this.attributes = BasicAttributes.create(builder.attributes); this.customObjects = new ClassToInstanceStore<>(); this.customObjects.putAll(builder.customObjects); this.configMap = new HashMap<>(builder.configMap); }
/** * Create a new instance based on explicit instances. * This method creates a MUTABLE instance (contrary to such methods on java collections). * * @param instances instances to add to the new store * @param <T> type of the store * @return new store with instances inserted as when calling {@link #putInstance(Object)} for each of them */ @SafeVarargs public static <T> ClassToInstanceStore<T> create(T... instances) { ClassToInstanceStore<T> result = new ClassToInstanceStore<>(); for (T instance : instances) { result.putInstance(instance); } return result; }
private SecurityHandler(Builder builder) { // must copy values to be safely immutable this.rolesAllowed = builder.rolesAllowed.flatMap(strings -> { Set<String> newRoles = new HashSet<>(strings); return Optional.of(newRoles); }); // must copy values to be safely immutable this.customObjects = builder.customObjects.flatMap(store -> { ClassToInstanceStore<Object> ctis = new ClassToInstanceStore<>(); ctis.putAll(store); return Optional.of(ctis); }); config = builder.config; explicitAuthenticator = builder.explicitAuthenticator; explicitAuthorizer = builder.explicitAuthorizer; authenticate = builder.authenticate; authenticationOptional = builder.authenticationOptional; audited = builder.audited; auditEventType = builder.auditEventType; auditMessageFormat = builder.auditMessageFormat; authorize = builder.authorize; combined = builder.combined; queryParamHandlers.addAll(builder.queryParamHandlers); config.ifPresent(conf -> conf.asNodeList().get().forEach(node -> configMap.put(node.name(), node))); }
private Builder customObjects(ClassToInstanceStore<Object> store) { OptionalHelper.from(customObjects) .ifPresentOrElse(myStore -> myStore.putAll(store), () -> { ClassToInstanceStore<Object> ctis = new ClassToInstanceStore<>(); ctis.putAll(store); this.customObjects = Optional.of(ctis); }); return this; }
/** * Register a custom object for security request(s). * This creates a hard dependency on a specific security provider, so use with care. * * @param object An object expected by security provider * @return updated builder instance */ Builder customObject(Object object) { OptionalHelper.from(customObjects) .ifPresentOrElse(store -> store.putInstance(object), () -> { ClassToInstanceStore<Object> ctis = new ClassToInstanceStore<>(); ctis.putInstance(object); customObjects = Optional.of(ctis); }); return this; }
.derive() .configMap(configMap) .customObjects(customObjects.orElse(new ClassToInstanceStore<>())) .build());
private SecurityHandler(Builder builder) { // must copy values to be safely immutable this.rolesAllowed = builder.rolesAllowed.flatMap(strings -> { Set<String> newRoles = new HashSet<>(strings); return Optional.of(newRoles); }); // must copy values to be safely immutable this.customObjects = builder.customObjects.flatMap(store -> { ClassToInstanceStore<Object> ctis = new ClassToInstanceStore<>(); ctis.putAll(store); return Optional.of(ctis); }); config = builder.config; explicitAuthenticator = builder.explicitAuthenticator; explicitAuthorizer = builder.explicitAuthorizer; authenticate = builder.authenticate; authenticationOptional = builder.authenticationOptional; audited = builder.audited; auditEventType = builder.auditEventType; auditMessageFormat = builder.auditMessageFormat; authorize = builder.authorize; combined = builder.combined; queryParamHandlers.addAll(builder.queryParamHandlers); config.ifPresent(conf -> conf.asNodeList().forEach(node -> configMap.put(node.name(), node))); }
private Builder customObjects(ClassToInstanceStore<Object> store) { OptionalHelper.from(customObjects) .ifPresentOrElse(myStore -> myStore.putAll(store), () -> { ClassToInstanceStore<Object> ctis = new ClassToInstanceStore<>(); ctis.putAll(store); this.customObjects = Optional.of(ctis); }); return this; }
/** * Register a custom object for security request(s). * This creates a hard dependency on a specific security provider, so use with care. * * @param object An object expected by security provider * @return updated builder instance */ Builder customObject(Object object) { OptionalHelper.from(customObjects) .ifPresentOrElse(store -> store.putInstance(object), () -> { ClassToInstanceStore<Object> ctis = new ClassToInstanceStore<>(); ctis.putInstance(object); customObjects = Optional.of(ctis); }); return this; }
.derive() .configMap(configMap) .customObjects(customObjects.orElse(new ClassToInstanceStore<>())) .build());