samples/aserverinfo/src/org/apidesign/aserverinfo/builder/ServerInfo.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 30 Oct 2014 21:30:10 +0100
changeset 409 40cabcdcd2be
parent 300 b704be5f8463
permissions -rw-r--r--
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
jtulach@294
     1
package org.apidesign.aserverinfo.builder;
jtulach@294
     2
jtulach@294
     3
import org.apidesign.aserverinfo.spi.NameProvider;
jtulach@294
     4
import org.apidesign.aserverinfo.spi.ResetHandler;
jtulach@294
     5
import org.apidesign.aserverinfo.spi.ShutdownHandler;
jtulach@294
     6
import org.apidesign.aserverinfo.spi.URLProvider;
jtulach@294
     7
jtulach@294
     8
/**
jtulach@337
     9
 * Mutable "setter" methods for the builder pattern.
jtulach@294
    10
 *
jtulach@294
    11
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jtulach@294
    12
 */
jtulach@300
    13
// BEGIN: aserverinfo.builder.factory
jtulach@294
    14
public class ServerInfo {
jtulach@294
    15
jtulach@294
    16
    public static ServerInfo empty() {
jtulach@294
    17
        return new ServerInfo(null, null, null, null);
jtulach@294
    18
    }
jtulach@294
    19
jtulach@294
    20
    public final ServerInfo nameProvider(NameProvider np) {
jtulach@337
    21
        this.name = np;
jtulach@337
    22
        return this;
jtulach@294
    23
    }
jtulach@294
    24
jtulach@294
    25
    public final ServerInfo urlProvider(URLProvider up) {
jtulach@337
    26
        this.url = up;
jtulach@337
    27
        return this;
jtulach@294
    28
    }
jtulach@337
    29
    // BEGIN: aserverinfo.builder.setter
jtulach@294
    30
    public final ServerInfo reset(ResetHandler h) {
jtulach@337
    31
        this.reset = h;
jtulach@337
    32
        return this;
jtulach@294
    33
    }
jtulach@337
    34
    // END: aserverinfo.builder.setter
jtulach@337
    35
    
jtulach@294
    36
    /** All one needs to do when there is a need to add new
jtulach@294
    37
     * style of creation is to add new method for a builder.
jtulach@294
    38
     * @param handler
jtulach@294
    39
     * @return
jtulach@294
    40
     * @since 2.0
jtulach@294
    41
     */
jtulach@294
    42
    public final ServerInfo shutdown(ShutdownHandler handler) {
jtulach@337
    43
        this.shutdown = handler;
jtulach@337
    44
        return this;
jtulach@294
    45
    }
jtulach@294
    46
    
jtulach@294
    47
    /** Creates the server connector based on current values in the 
jtulach@294
    48
     * info. Builder factory method.
jtulach@294
    49
     * @return server connector
jtulach@294
    50
     */
jtulach@294
    51
    public final ServerConnector connect() {
jtulach@294
    52
        return new ServerConnector(name, url, reset, shutdown);
jtulach@294
    53
    }
jtulach@300
    54
    // FINISH: aserverinfo.builder.factory
jtulach@294
    55
jtulach@337
    56
    private NameProvider name;
jtulach@337
    57
    private URLProvider url;
jtulach@337
    58
    private ResetHandler reset;
jtulach@337
    59
    private ShutdownHandler shutdown;
jtulach@294
    60
jtulach@294
    61
    private ServerInfo(
jtulach@294
    62
        NameProvider name, URLProvider url,
jtulach@294
    63
        ResetHandler reset, ShutdownHandler shutdown
jtulach@294
    64
    ) {
jtulach@294
    65
        this.name = name;
jtulach@294
    66
        this.url = url;
jtulach@294
    67
        this.reset = reset;
jtulach@294
    68
        this.shutdown = shutdown;
jtulach@294
    69
    }
jtulach@294
    70
jtulach@294
    71
}