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;
13 NameProvider name, URLProvider url,
14 ResetHandler reset, ShutdownHandler shutdown
19 this.shutdown = shutdown;
27 public String getName() {
28 return name == null ? "noname" : name.getName();
32 return url == null ? null : url.getURL();
41 public void shutdown() {
42 if (shutdown != null) {
51 // BEGIN: aserverinfo.create
52 public interface NameProvider {
53 public String getName();
55 public interface URLProvider {
58 public interface ResetHandler {
62 public static AServerInfo create(final Lookup interfaces)
63 // END: aserverinfo.create
65 NameProvider nameP = new NameProvider() {
66 public String getName() {
67 NameProvider p = interfaces.lookup(NameProvider.class);
68 return p == null ? "noname" : p.getName();
71 URLProvider urlP = new URLProvider() {
73 URLProvider p = interfaces.lookup(URLProvider.class);
74 return p == null ? null : p.getURL();
77 ResetHandler resetP = new ResetHandler() {
79 ResetHandler h = interfaces.lookup(ResetHandler.class);
86 return new AServerInfo(nameP, urlP, resetP, null);
89 // BEGIN: aserverinfo.regularcreate
90 public static AServerInfo create(
91 NameProvider nameProvider,
92 URLProvider urlProvider,
95 // END: aserverinfo.regularcreate
97 return new AServerInfo(nameProvider, urlProvider, reset, null);
100 // BEGIN: aserverinfo.regularcreate.withshutdown
102 public interface ShutdownHandler {
103 public void shutdown();
107 public static AServerInfo create(
108 NameProvider nameProvider,
109 URLProvider urlProvider,
111 ShutdownHandler shutdown
113 // END: aserverinfo.regularcreate.withshutdown
115 return new AServerInfo(nameProvider, urlProvider, reset, shutdown);
119 // cumulative factory methods
122 // BEGIN: aserverinfo.cumulative.factory
123 public static AServerInfo empty() {
124 return new AServerInfo(null, null, null, null);
127 public final AServerInfo nameProvider(final NameProvider np) {
128 return new AServerInfo(np, this.url, this.reset, this.shutdown);
130 // END: aserverinfo.cumulative.factory
132 public final AServerInfo urlProvider(final URLProvider up) {
133 return new AServerInfo(this.name, up, this.reset, this.shutdown);
135 public final AServerInfo reset(final ResetHandler h) {
136 return new AServerInfo(this.name, this.url, h, this.shutdown);
138 public final AServerInfo shutdown(final ShutdownHandler s) {
139 return new AServerInfo(this.name, this.url, this.reset, s);