samples/aserverinfo/src/org/apidesign/aserverinfo/factories/ServerConnector.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 15 Nov 2008 06:53:43 +0100
changeset 292 60bb8519cb2d
child 293 4feb55fa3c91
permissions -rw-r--r--
Renaming the AServerInfo class to ServerConnector and spliting it into three separate classes.
     1 package org.apidesign.aserverinfo.factories;
     2 
     3 import org.apidesign.aserverinfo.spi.ShutdownHandler;
     4 import java.net.URL;
     5 import org.apidesign.aserverinfo.spi.NameProvider;
     6 import org.apidesign.aserverinfo.spi.ResetHandler;
     7 import org.apidesign.aserverinfo.spi.URLProvider;
     8 
     9 /** A class to connect to server, identify it and manipulate with
    10  * it state. The <a href="http://apidesign.org">Practical API Design</a>
    11  * book used to call it AServerInfo.
    12  * <p>
    13  */
    14 public final class ServerConnector {
    15     public String getName() {
    16         return name == null ? "noname" : name.getName();
    17     }
    18 
    19     public URL getURL() {
    20         return url == null ? null : url.getURL();
    21     }
    22 
    23     public void reset() {
    24         if (reset != null) {
    25             reset.reset();
    26         }
    27     }
    28 
    29     /** Additional method for API clients not available from first version.
    30      * @since 2.0
    31      */
    32     public void shutdown() {
    33         if (shutdown != null) {
    34             shutdown.shutdown();
    35         }
    36     }
    37 
    38     //
    39     // factories
    40     //
    41     
    42     // BEGIN: aserverinfo.regularcreate
    43     public static ServerConnector create(
    44         NameProvider nameProvider, 
    45         URLProvider urlProvider, 
    46         ResetHandler reset
    47     )
    48     // END: aserverinfo.regularcreate
    49     {
    50         return new ServerConnector(nameProvider, urlProvider, reset, null);
    51     }
    52     
    53     /** @since 2.0 */
    54     public static ServerConnector create(
    55         NameProvider nameProvider, 
    56         URLProvider urlProvider, 
    57         ResetHandler reset, 
    58         ShutdownHandler shutdown
    59     )
    60     // END: aserverinfo.regularcreate.withshutdown
    61     {
    62         return new ServerConnector(nameProvider, urlProvider, reset, shutdown);
    63     }
    64 
    65     //
    66     // private part
    67     //
    68 
    69     private final NameProvider name;
    70     private final URLProvider url;
    71     private final ResetHandler reset;
    72     private final ShutdownHandler shutdown;
    73 
    74     private ServerConnector(
    75         NameProvider name, URLProvider url,
    76         ResetHandler reset, ShutdownHandler shutdown
    77     ) {
    78         this.name = name;
    79         this.url = url;
    80         this.reset = reset;
    81         this.shutdown = shutdown;
    82     }
    83 
    84 }