1 package org.apidesign.aserverinfo;
4 import org.openide.util.Lookup;
6 // BEGIN: aserverinfo.api
7 public final class AServerInfo {
8 public String getName() {
9 return name == null ? "noname" : name.getName();
13 return url == null ? null : url.getURL();
22 public void shutdown() {
23 if (shutdown != null) {
27 // FINISH: aserverinfo.api
33 private final NameProvider name;
34 private final URLProvider url;
35 private final ResetHandler reset;
36 private final ShutdownHandler shutdown;
39 NameProvider name, URLProvider url,
40 ResetHandler reset, ShutdownHandler shutdown
45 this.shutdown = shutdown;
52 // BEGIN: aserverinfo.create
53 public interface NameProvider {
54 public String getName();
56 public interface URLProvider {
59 public interface ResetHandler {
63 public static AServerInfo create(final Lookup interfaces)
64 // END: aserverinfo.create
66 NameProvider nameP = new NameProvider() {
67 public String getName() {
68 NameProvider p = interfaces.lookup(NameProvider.class);
69 return p == null ? "noname" : p.getName();
72 URLProvider urlP = new URLProvider() {
74 URLProvider p = interfaces.lookup(URLProvider.class);
75 return p == null ? null : p.getURL();
78 ResetHandler resetP = new ResetHandler() {
80 ResetHandler h = interfaces.lookup(ResetHandler.class);
87 return new AServerInfo(nameP, urlP, resetP, null);
90 // BEGIN: aserverinfo.regularcreate
91 public static AServerInfo create(
92 NameProvider nameProvider,
93 URLProvider urlProvider,
96 // END: aserverinfo.regularcreate
98 return new AServerInfo(nameProvider, urlProvider, reset, null);
101 // BEGIN: aserverinfo.regularcreate.withshutdown
103 public interface ShutdownHandler {
104 public void shutdown();
108 public static AServerInfo create(
109 NameProvider nameProvider,
110 URLProvider urlProvider,
112 ShutdownHandler shutdown
114 // END: aserverinfo.regularcreate.withshutdown
116 return new AServerInfo(nameProvider, urlProvider, reset, shutdown);
120 // cumulative factory methods
123 // BEGIN: aserverinfo.cumulative.factory
124 public static AServerInfo empty() {
125 return new AServerInfo(null, null, null, null);
128 public final AServerInfo nameProvider(final NameProvider np) {
129 return new AServerInfo(np, this.url, this.reset, this.shutdown);
131 // END: aserverinfo.cumulative.factory
133 public final AServerInfo urlProvider(final URLProvider up) {
134 return new AServerInfo(this.name, up, this.reset, this.shutdown);
136 public final AServerInfo reset(final ResetHandler h) {
137 return new AServerInfo(this.name, this.url, h, this.shutdown);
139 public final AServerInfo shutdown(final ShutdownHandler s) {
140 return new AServerInfo(this.name, this.url, this.reset, s);