samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 30 Oct 2014 21:30:10 +0100
changeset 409 40cabcdcd2be
parent 99 4bf599099de7
permissions -rw-r--r--
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
jtulach@99
     1
package org.apidesign.sidemeanings;
jtulach@99
     2
jtulach@324
     3
public abstract class Public {
jtulach@324
     4
    int counter;
jtulach@324
     5
jtulach@324
     6
    Public() {}
jtulach@324
     7
jtulach@324
     8
    public abstract void increment();
jtulach@324
     9
jtulach@324
    10
    public final void incrementTenTimes() {
jtulach@324
    11
        for (int i = 0; i < 10; i++) {
jtulach@324
    12
            increment();
jtulach@324
    13
        }
jtulach@324
    14
    }
jtulach@324
    15
jtulach@324
    16
    public final void assertCounter(int expected) {
jtulach@324
    17
        assert expected == counter : "Expected " + expected + " but was " + counter;
jtulach@324
    18
    }
jtulach@99
    19
jtulach@99
    20
    
jtulach@324
    21
    public static abstract class Dirty extends Public {
jtulach@99
    22
        // BEGIN: sidemeanings.Public.Dirty
jtulach@324
    23
        public void increment() {
jtulach@324
    24
            // internal implementation
jtulach@324
    25
            counter++;
jtulach@99
    26
        }
jtulach@99
    27
        // END: sidemeanings.Public.Dirty
jtulach@99
    28
    }
jtulach@99
    29
    
jtulach@99
    30
    
jtulach@324
    31
    public static abstract class Clean extends Public {
jtulach@99
    32
        // BEGIN: sidemeanings.Public.Clean
jtulach@324
    33
        public final void increment() {
jtulach@324
    34
            overridableIncrement();
jtulach@99
    35
        }
jtulach@324
    36
        protected abstract void overridableIncrement();
jtulach@324
    37
        protected final void defaultIncrement() {
jtulach@324
    38
            counter++;
jtulach@99
    39
        }
jtulach@99
    40
        // END: sidemeanings.Public.Clean
jtulach@99
    41
    }
jtulach@99
    42
}