first commit
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
package org.openautonomousconnection.luascript.hosts;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Service container holding optional host capabilities.
|
||||
*
|
||||
* <p>This avoids one huge "bridge" interface.</p>
|
||||
*/
|
||||
public final class HostServices {
|
||||
|
||||
private final ConsoleHost console;
|
||||
private final DomHost dom;
|
||||
private final EventHost events;
|
||||
private final ResourceHost resources;
|
||||
private final UiHost ui;
|
||||
|
||||
private HostServices(Builder b) {
|
||||
this.console = b.console;
|
||||
this.ui = b.ui;
|
||||
this.dom = b.dom;
|
||||
this.events = b.events;
|
||||
this.resources = b.resources;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return optional DomHost capability
|
||||
*/
|
||||
public Optional<DomHost> dom() {
|
||||
return Optional.ofNullable(dom);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return optional EventHost capability
|
||||
*/
|
||||
public Optional<EventHost> events() {
|
||||
return Optional.ofNullable(events);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return optional ResourceHost capability
|
||||
*/
|
||||
public Optional<ResourceHost> resources() {
|
||||
return Optional.ofNullable(resources);
|
||||
}
|
||||
|
||||
/** @return optional console host */
|
||||
public Optional<ConsoleHost> console() {
|
||||
return Optional.ofNullable(console);
|
||||
}
|
||||
|
||||
/** @return optional ui host */
|
||||
public Optional<UiHost> ui() {
|
||||
return Optional.ofNullable(ui);
|
||||
}
|
||||
|
||||
/** @return builder */
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder for HostServices.
|
||||
*/
|
||||
public static final class Builder {
|
||||
private ConsoleHost console;
|
||||
private DomHost dom;
|
||||
private EventHost events;
|
||||
private ResourceHost resources;
|
||||
private UiHost ui;
|
||||
|
||||
public Builder console(ConsoleHost console) {
|
||||
this.console = Objects.requireNonNull(console, "console");
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder ui(UiHost ui) {
|
||||
this.ui = Objects.requireNonNull(ui, "ui");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides dom capability.
|
||||
*
|
||||
* @param dom dom host
|
||||
* @return this
|
||||
*/
|
||||
public Builder dom(DomHost dom) {
|
||||
this.dom = Objects.requireNonNull(dom, "dom");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides event subscription capability.
|
||||
*
|
||||
* @param events event host
|
||||
* @return this
|
||||
*/
|
||||
public Builder events(EventHost events) {
|
||||
this.events = Objects.requireNonNull(events, "events");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides resource loading capability.
|
||||
*
|
||||
* @param resources resource host
|
||||
* @return this
|
||||
*/
|
||||
public Builder resources(ResourceHost resources) {
|
||||
this.resources = Objects.requireNonNull(resources, "resources");
|
||||
return this;
|
||||
}
|
||||
|
||||
public HostServices build() {
|
||||
return new HostServices(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user