1 package org.apidesign.aserverinfo;
4 import org.openide.util.Lookup;
6 public final class AServerInfo {
7 private final NameProvider name;
8 private final URLProvider url;
9 private final ResetHandler reset;
10 private final ShutdownHandler shutdown;
12 private AServerInfo(NameProvider name, URLProvider url, ResetHandler reset, ShutdownHandler shutdown) {
16 this.shutdown = shutdown;
24 public String getName() {
25 return name == null ? "noname" : name.getName();
29 return url == null ? null : url.getURL();
38 public void shutdown() {
39 if (shutdown != null) {
48 // BEGIN: aserverinfo.create
49 public interface NameProvider {
50 public String getName();
52 public interface URLProvider {
55 public interface ResetHandler {
59 public static AServerInfo create(final Lookup interfaces)
60 // END: aserverinfo.create
62 NameProvider nameP = new NameProvider() {
63 public String getName() {
64 NameProvider p = interfaces.lookup(NameProvider.class);
65 return p == null ? "noname" : p.getName();
68 URLProvider urlP = new URLProvider() {
70 URLProvider p = interfaces.lookup(URLProvider.class);
71 return p == null ? null : p.getURL();
74 ResetHandler resetP = new ResetHandler() {
76 ResetHandler h = interfaces.lookup(ResetHandler.class);
83 return new AServerInfo(nameP, urlP, resetP, null);
86 // BEGIN: aserverinfo.regularcreate
87 public static AServerInfo create(NameProvider nameProvider, URLProvider urlProvider, ResetHandler reset)
88 // END: aserverinfo.regularcreate
90 return new AServerInfo(nameProvider, urlProvider, reset, null);
93 // BEGIN: aserverinfo.regularcreate.withshutdown
95 public interface ShutdownHandler {
96 public void shutdown();
100 public static AServerInfo create(NameProvider nameProvider, URLProvider urlProvider, ResetHandler reset, ShutdownHandler shutdown)
101 // END: aserverinfo.regularcreate.withshutdown
103 return new AServerInfo(nameProvider, urlProvider, reset, shutdown);
107 // cumulative factory methods
110 // BEGIN: aserverinfo.cumulative.factory
111 public static AServerInfo empty() {
112 return new AServerInfo(null, null, null, null);
115 public final AServerInfo nameProvider(final NameProvider np) {
116 return new AServerInfo(np, this.url, this.reset, this.shutdown);
118 // END: aserverinfo.cumulative.empty
120 public final AServerInfo urlProvider(final URLProvider up) {
121 return new AServerInfo(this.name, up, this.reset, this.shutdown);
123 public final AServerInfo reset(final ResetHandler h) {
124 return new AServerInfo(this.name, this.url, h, this.shutdown);
126 public final AServerInfo shutdown(final ShutdownHandler s) {
127 return new AServerInfo(this.name, this.url, this.reset, s);