# HG changeset patch # User Jaroslav Tulach # Date 1238015686 -3600 # Node ID a9ad091ed0690655515016969c1d0ac0d95aa157 # Parent 4e59b6b0e907db6ee0f4f5d9ee20b9954307dbaa New samples for converting sidemeaning modifiers to clarity ones diff -r 4e59b6b0e907 -r a9ad091ed069 samples/sidemeanings/src/org/apidesign/sidemeanings/Protected.java --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/Protected.java Sun Feb 15 15:42:28 2009 +0100 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/Protected.java Wed Mar 25 22:14:46 2009 +0100 @@ -1,24 +1,40 @@ package org.apidesign.sidemeanings; -public final class Protected { - private Protected() {} +public abstract class Protected { + int counter; + + Protected() {} + + protected void increment() { + counter++; + } + + public final void incrementTenTimes() { + for (int i = 0; i < 10; i++) { + increment(); + } + } + + public final void assertCounter(int expected) { + assert expected == counter : "Expected " + expected + " but was " + counter; + } - public class Dirty { + public static class Dirty extends Protected { // BEGIN: sidemeanings.Protected.Dirty - protected void method() { - someCode(); + protected void increment() { + // implementation: + counter++; } // END: sidemeanings.Protected.Dirty - private void someCode() { - } } - public abstract class Clean { + public static abstract class Clean extends Protected { // BEGIN: sidemeanings.Protected.Clean - protected abstract void method(); - protected final void someCode() { + protected abstract void increment(); + protected final void defaultIncrement() { + counter++; } // END: sidemeanings.Protected.Clean } diff -r 4e59b6b0e907 -r a9ad091ed069 samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java Sun Feb 15 15:42:28 2009 +0100 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java Wed Mar 25 22:14:46 2009 +0100 @@ -1,27 +1,41 @@ package org.apidesign.sidemeanings; -public final class Public { - private Public() {} +public abstract class Public { + int counter; + + Public() {} + + public abstract void increment(); + + public final void incrementTenTimes() { + for (int i = 0; i < 10; i++) { + increment(); + } + } + + public final void assertCounter(int expected) { + assert expected == counter : "Expected " + expected + " but was " + counter; + } - public abstract class Dirty { + public static abstract class Dirty extends Public { // BEGIN: sidemeanings.Public.Dirty - public void method() { - someCode(); + public void increment() { + // internal implementation + counter++; } // END: sidemeanings.Public.Dirty - private void someCode() { - } } - public abstract class Clean { + public static abstract class Clean extends Public { // BEGIN: sidemeanings.Public.Clean - public final void method() { - methodImpl(); + public final void increment() { + overridableIncrement(); } - protected abstract void methodImpl(); - protected final void someCode() { + protected abstract void overridableIncrement(); + protected final void defaultIncrement() { + counter++; } // END: sidemeanings.Public.Clean } diff -r 4e59b6b0e907 -r a9ad091ed069 samples/sidemeanings/src/org/apidesign/sidemeanings/PublicAbstract.java --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/PublicAbstract.java Sun Feb 15 15:42:28 2009 +0100 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/PublicAbstract.java Wed Mar 25 22:14:46 2009 +0100 @@ -1,22 +1,29 @@ package org.apidesign.sidemeanings; -public final class PublicAbstract { - private PublicAbstract() {} +public abstract class PublicAbstract { + PublicAbstract() {} - - public abstract class Dirty { + public abstract void increment(); + + public final void incrementTenTimes() { + for (int i = 0; i < 10; i++) { + increment(); + } + } + + public static abstract class Dirty extends PublicAbstract { // BEGIN: sidemeanings.PublicAbstract.Dirty - public abstract void method(); + public abstract void increment(); // END: sidemeanings.PublicAbstract.Dirty } - public abstract class Clean { + public static abstract class Clean extends PublicAbstract { // BEGIN: sidemeanings.PublicAbstract.Clean - public final void method() { - methodImpl(); + public final void increment() { + overridableIncrement(); } - protected abstract void methodImpl(); + protected abstract void overridableIncrement(); // END: sidemeanings.PublicAbstract.Clean } } diff -r 4e59b6b0e907 -r a9ad091ed069 samples/sidemeanings/test/org/apidesign/sidemeanings/test/ProtectedTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/ProtectedTest.java Wed Mar 25 22:14:46 2009 +0100 @@ -0,0 +1,40 @@ +package org.apidesign.sidemeanings.test; + +import org.apidesign.sidemeanings.Protected; +import org.junit.Test; + +public class ProtectedTest { + + @Test public void testCallTenDoubleIncrementOnDirtyAPI() { + // BEGIN: sidemeanings.Protected.Dirty.test + class DoubleIncrement extends Protected.Dirty { + @Override + protected void increment() { + super.increment(); + super.increment(); + } + } + DoubleIncrement doubleIncr = new DoubleIncrement(); + doubleIncr.incrementTenTimes(); + doubleIncr.assertCounter(20); + // END: sidemeanings.Protected.Dirty.test + } + + @Test public void testCallTenDoubleIncrementOnCleanAPI() { + // BEGIN: sidemeanings.Protected.Clean.test + class DoubleIncrement extends Protected.Clean { + @Override + protected void increment() { + // cannot be access directly, it is abstract: + // super.increment(); + // we need to call default implementation instead + defaultIncrement(); + defaultIncrement(); + } + } + DoubleIncrement doubleIncr = new DoubleIncrement(); + doubleIncr.incrementTenTimes(); + doubleIncr.assertCounter(20); + // END: sidemeanings.Protected.Clean.test + } +} diff -r 4e59b6b0e907 -r a9ad091ed069 samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicAbstractTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicAbstractTest.java Wed Mar 25 22:14:46 2009 +0100 @@ -0,0 +1,41 @@ +package org.apidesign.sidemeanings.test; + +import org.apidesign.sidemeanings.PublicAbstract; +import org.junit.Assert; +import org.junit.Test; + +public class PublicAbstractTest { + + @Test public void testCallTenDoubleIncrementOnDirtyAPI() { + // BEGIN: sidemeanings.PublicAbstract.Dirty.test + class DoubleIncrement extends PublicAbstract.Dirty { + int counter; + + @Override + public void increment() { + counter += 2; + } + } + DoubleIncrement doubleIncr = new DoubleIncrement(); + doubleIncr.incrementTenTimes(); + Assert.assertEquals(20, doubleIncr.counter); + // END: sidemeanings.PublicAbstract.Dirty.test + } + + @Test public void testCallTenDoubleIncrementOnCleanAPI() { + // BEGIN: sidemeanings.PublicAbstract.Clean.test + class DoubleIncrement extends PublicAbstract.Clean { + int counter; + + @Override + protected void overridableIncrement() { + counter += 2; + } + } + DoubleIncrement doubleIncr = new DoubleIncrement(); + doubleIncr.incrementTenTimes(); + Assert.assertEquals(20, doubleIncr.counter); + // END: sidemeanings.PublicAbstract.Clean.test + } + +} diff -r 4e59b6b0e907 -r a9ad091ed069 samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/sidemeanings/test/org/apidesign/sidemeanings/test/PublicTest.java Wed Mar 25 22:14:46 2009 +0100 @@ -0,0 +1,38 @@ +package org.apidesign.sidemeanings.test; + +import org.apidesign.sidemeanings.Public; +import org.junit.Test; + +public class PublicTest { + + @Test public void testCallTenDoubleIncrementOnDirtyAPI() { + // BEGIN: sidemeanings.Public.Dirty.test + class DoubleIncrement extends Public.Dirty { + @Override + public void increment() { + super.increment(); + super.increment(); + } + } + DoubleIncrement doubleIncr = new DoubleIncrement(); + doubleIncr.incrementTenTimes(); + doubleIncr.assertCounter(20); + // END: sidemeanings.Public.Dirty.test + } + + @Test public void testCallTenDoubleIncrementOnCleanAPI() { + // BEGIN: sidemeanings.Public.Clean.test + class DoubleIncrement extends Public.Clean { + @Override + protected void overridableIncrement() { + defaultIncrement(); + defaultIncrement(); + } + } + DoubleIncrement doubleIncr = new DoubleIncrement(); + doubleIncr.incrementTenTimes(); + doubleIncr.assertCounter(20); + // END: sidemeanings.Public.Clean.test + } + +}