New samples for converting sidemeaning modifiers to clarity ones
authorJaroslav Tulach <jtulach@netbeans.org>
Wed, 25 Mar 2009 22:14:46 +0100
changeset 324a9ad091ed069
parent 323 4e59b6b0e907
child 325 4553c2885ce6
New samples for converting sidemeaning modifiers to clarity ones
samples/sidemeanings/src/org/apidesign/sidemeanings/Protected.java
samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java
samples/sidemeanings/src/org/apidesign/sidemeanings/PublicAbstract.java
samples/sidemeanings/test/org/apidesign/sidemeanings/test/ProtectedTest.java
samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicAbstractTest.java
samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicTest.java
     1.1 --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/Protected.java	Sun Feb 15 15:42:28 2009 +0100
     1.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/Protected.java	Wed Mar 25 22:14:46 2009 +0100
     1.3 @@ -1,24 +1,40 @@
     1.4  package org.apidesign.sidemeanings;
     1.5  
     1.6 -public final class Protected {
     1.7 -    private Protected() {}
     1.8 +public abstract class Protected {
     1.9 +    int counter;
    1.10 +
    1.11 +    Protected() {}
    1.12 +
    1.13 +    protected void increment() {
    1.14 +        counter++;
    1.15 +    }
    1.16 +
    1.17 +    public final void incrementTenTimes() {
    1.18 +        for (int i = 0; i < 10; i++) {
    1.19 +            increment();
    1.20 +        }
    1.21 +    }
    1.22 +
    1.23 +    public final void assertCounter(int expected) {
    1.24 +        assert expected == counter : "Expected " + expected + " but was " + counter;
    1.25 +    }
    1.26  
    1.27      
    1.28 -    public class Dirty {
    1.29 +    public static class Dirty extends Protected {
    1.30          // BEGIN: sidemeanings.Protected.Dirty
    1.31 -        protected void method() {
    1.32 -            someCode();
    1.33 +        protected void increment() {
    1.34 +            // implementation:
    1.35 +            counter++;
    1.36          }
    1.37          // END: sidemeanings.Protected.Dirty
    1.38 -        private void someCode() {
    1.39 -        }
    1.40      }
    1.41      
    1.42      
    1.43 -    public abstract class Clean {
    1.44 +    public static abstract class Clean extends Protected {
    1.45          // BEGIN: sidemeanings.Protected.Clean
    1.46 -        protected abstract void method();
    1.47 -        protected final void someCode() {
    1.48 +        protected abstract void increment();
    1.49 +        protected final void defaultIncrement() {
    1.50 +            counter++;
    1.51          }
    1.52          // END: sidemeanings.Protected.Clean
    1.53      }
     2.1 --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java	Sun Feb 15 15:42:28 2009 +0100
     2.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java	Wed Mar 25 22:14:46 2009 +0100
     2.3 @@ -1,27 +1,41 @@
     2.4  package org.apidesign.sidemeanings;
     2.5  
     2.6 -public final class Public {
     2.7 -    private Public() {}
     2.8 +public abstract class Public {
     2.9 +    int counter;
    2.10 +
    2.11 +    Public() {}
    2.12 +
    2.13 +    public abstract void increment();
    2.14 +
    2.15 +    public final void incrementTenTimes() {
    2.16 +        for (int i = 0; i < 10; i++) {
    2.17 +            increment();
    2.18 +        }
    2.19 +    }
    2.20 +
    2.21 +    public final void assertCounter(int expected) {
    2.22 +        assert expected == counter : "Expected " + expected + " but was " + counter;
    2.23 +    }
    2.24  
    2.25      
    2.26 -    public abstract class Dirty {
    2.27 +    public static abstract class Dirty extends Public {
    2.28          // BEGIN: sidemeanings.Public.Dirty
    2.29 -        public void method() {
    2.30 -            someCode();
    2.31 +        public void increment() {
    2.32 +            // internal implementation
    2.33 +            counter++;
    2.34          }
    2.35          // END: sidemeanings.Public.Dirty
    2.36 -        private void someCode() {
    2.37 -        }
    2.38      }
    2.39      
    2.40      
    2.41 -    public abstract class Clean {
    2.42 +    public static abstract class Clean extends Public {
    2.43          // BEGIN: sidemeanings.Public.Clean
    2.44 -        public final void method() {
    2.45 -            methodImpl();
    2.46 +        public final void increment() {
    2.47 +            overridableIncrement();
    2.48          }
    2.49 -        protected abstract void methodImpl();
    2.50 -        protected final void someCode() {
    2.51 +        protected abstract void overridableIncrement();
    2.52 +        protected final void defaultIncrement() {
    2.53 +            counter++;
    2.54          }
    2.55          // END: sidemeanings.Public.Clean
    2.56      }
     3.1 --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/PublicAbstract.java	Sun Feb 15 15:42:28 2009 +0100
     3.2 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/PublicAbstract.java	Wed Mar 25 22:14:46 2009 +0100
     3.3 @@ -1,22 +1,29 @@
     3.4  package org.apidesign.sidemeanings;
     3.5  
     3.6 -public final class PublicAbstract {
     3.7 -    private PublicAbstract() {}
     3.8 +public abstract class PublicAbstract {
     3.9 +    PublicAbstract() {}
    3.10  
    3.11 -    
    3.12 -    public abstract class Dirty {
    3.13 +    public abstract void increment();
    3.14 +
    3.15 +    public final void incrementTenTimes() {
    3.16 +        for (int i = 0; i < 10; i++) {
    3.17 +            increment();
    3.18 +        }
    3.19 +    }
    3.20 +
    3.21 +    public static abstract class Dirty extends PublicAbstract {
    3.22          // BEGIN: sidemeanings.PublicAbstract.Dirty
    3.23 -        public abstract void method();
    3.24 +        public abstract void increment();
    3.25          // END: sidemeanings.PublicAbstract.Dirty
    3.26      }
    3.27      
    3.28      
    3.29 -    public abstract class Clean {
    3.30 +    public static abstract class Clean extends PublicAbstract {
    3.31          // BEGIN: sidemeanings.PublicAbstract.Clean
    3.32 -        public final void method() {
    3.33 -            methodImpl();
    3.34 +        public final void increment() {
    3.35 +            overridableIncrement();
    3.36          }
    3.37 -        protected abstract void methodImpl();
    3.38 +        protected abstract void overridableIncrement();
    3.39          // END: sidemeanings.PublicAbstract.Clean
    3.40      }
    3.41  }
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/ProtectedTest.java	Wed Mar 25 22:14:46 2009 +0100
     4.3 @@ -0,0 +1,40 @@
     4.4 +package org.apidesign.sidemeanings.test;
     4.5 +
     4.6 +import org.apidesign.sidemeanings.Protected;
     4.7 +import org.junit.Test;
     4.8 +
     4.9 +public class ProtectedTest {
    4.10 +
    4.11 +    @Test public void testCallTenDoubleIncrementOnDirtyAPI() {
    4.12 +        // BEGIN: sidemeanings.Protected.Dirty.test
    4.13 +        class DoubleIncrement extends Protected.Dirty {
    4.14 +            @Override
    4.15 +            protected void increment() {
    4.16 +                super.increment();
    4.17 +                super.increment();
    4.18 +            }
    4.19 +        }
    4.20 +        DoubleIncrement doubleIncr = new DoubleIncrement();
    4.21 +        doubleIncr.incrementTenTimes();
    4.22 +        doubleIncr.assertCounter(20);
    4.23 +        // END: sidemeanings.Protected.Dirty.test
    4.24 +    }
    4.25 +
    4.26 +    @Test public void testCallTenDoubleIncrementOnCleanAPI() {
    4.27 +        // BEGIN: sidemeanings.Protected.Clean.test
    4.28 +        class DoubleIncrement extends Protected.Clean {
    4.29 +            @Override
    4.30 +            protected void increment() {
    4.31 +                // cannot be access directly, it is abstract:
    4.32 +                // super.increment();
    4.33 +                // we need to call default implementation instead
    4.34 +                defaultIncrement();
    4.35 +                defaultIncrement();
    4.36 +            }
    4.37 +        }
    4.38 +        DoubleIncrement doubleIncr = new DoubleIncrement();
    4.39 +        doubleIncr.incrementTenTimes();
    4.40 +        doubleIncr.assertCounter(20);
    4.41 +        // END: sidemeanings.Protected.Clean.test
    4.42 +    }
    4.43 +}
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicAbstractTest.java	Wed Mar 25 22:14:46 2009 +0100
     5.3 @@ -0,0 +1,41 @@
     5.4 +package org.apidesign.sidemeanings.test;
     5.5 +
     5.6 +import org.apidesign.sidemeanings.PublicAbstract;
     5.7 +import org.junit.Assert;
     5.8 +import org.junit.Test;
     5.9 +
    5.10 +public class PublicAbstractTest {
    5.11 +
    5.12 +    @Test public void testCallTenDoubleIncrementOnDirtyAPI() {
    5.13 +        // BEGIN: sidemeanings.PublicAbstract.Dirty.test
    5.14 +        class DoubleIncrement extends PublicAbstract.Dirty {
    5.15 +            int counter;
    5.16 +
    5.17 +            @Override
    5.18 +            public void increment() {
    5.19 +                counter += 2;
    5.20 +            }
    5.21 +        }
    5.22 +        DoubleIncrement doubleIncr = new DoubleIncrement();
    5.23 +        doubleIncr.incrementTenTimes();
    5.24 +        Assert.assertEquals(20, doubleIncr.counter);
    5.25 +        // END: sidemeanings.PublicAbstract.Dirty.test
    5.26 +    }
    5.27 +
    5.28 +    @Test public void testCallTenDoubleIncrementOnCleanAPI() {
    5.29 +        // BEGIN: sidemeanings.PublicAbstract.Clean.test
    5.30 +        class DoubleIncrement extends PublicAbstract.Clean {
    5.31 +            int counter;
    5.32 +
    5.33 +            @Override
    5.34 +            protected void overridableIncrement() {
    5.35 +                counter += 2;
    5.36 +            }
    5.37 +        }
    5.38 +        DoubleIncrement doubleIncr = new DoubleIncrement();
    5.39 +        doubleIncr.incrementTenTimes();
    5.40 +        Assert.assertEquals(20, doubleIncr.counter);
    5.41 +        // END: sidemeanings.PublicAbstract.Clean.test
    5.42 +    }
    5.43 +
    5.44 +}
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicTest.java	Wed Mar 25 22:14:46 2009 +0100
     6.3 @@ -0,0 +1,38 @@
     6.4 +package org.apidesign.sidemeanings.test;
     6.5 +
     6.6 +import org.apidesign.sidemeanings.Public;
     6.7 +import org.junit.Test;
     6.8 +
     6.9 +public class PublicTest {
    6.10 +
    6.11 +    @Test public void testCallTenDoubleIncrementOnDirtyAPI() {
    6.12 +        // BEGIN: sidemeanings.Public.Dirty.test
    6.13 +        class DoubleIncrement extends Public.Dirty {
    6.14 +            @Override
    6.15 +            public void increment() {
    6.16 +                super.increment();
    6.17 +                super.increment();
    6.18 +            }
    6.19 +        }
    6.20 +        DoubleIncrement doubleIncr = new DoubleIncrement();
    6.21 +        doubleIncr.incrementTenTimes();
    6.22 +        doubleIncr.assertCounter(20);
    6.23 +        // END: sidemeanings.Public.Dirty.test
    6.24 +    }
    6.25 +
    6.26 +    @Test public void testCallTenDoubleIncrementOnCleanAPI() {
    6.27 +        // BEGIN: sidemeanings.Public.Clean.test
    6.28 +        class DoubleIncrement extends Public.Clean {
    6.29 +            @Override
    6.30 +            protected void overridableIncrement() {
    6.31 +                defaultIncrement();
    6.32 +                defaultIncrement();
    6.33 +            }
    6.34 +        }
    6.35 +        DoubleIncrement doubleIncr = new DoubleIncrement();
    6.36 +        doubleIncr.incrementTenTimes();
    6.37 +        doubleIncr.assertCounter(20);
    6.38 +        // END: sidemeanings.Public.Clean.test
    6.39 +    }
    6.40 +
    6.41 +}