1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/friendpackage/src/org/apidesign/friendpackage/impl/Accessor.java Fri Oct 24 21:15:50 2008 +0200
1.3 @@ -0,0 +1,47 @@
1.4 +package org.apidesign.friendpackage.impl;
1.5 +
1.6 +import javax.swing.event.ChangeListener;
1.7 +import org.apidesign.friendpackage.api.Item;
1.8 +
1.9 +/**
1.10 + *
1.11 + * @author Jaroslav Tulach
1.12 + */
1.13 +// BEGIN: design.less.friend.Accessor
1.14 +public abstract class Accessor {
1.15 + private static volatile Accessor DEFAULT;
1.16 + public static Accessor getDefault() {
1.17 + Accessor a = DEFAULT;
1.18 + if (a == null) {
1.19 + throw new IllegalStateException("Something is wrong: " + a);
1.20 + }
1.21 + return a;
1.22 + }
1.23 +
1.24 + public static void setDefault(Accessor accessor) {
1.25 + if (DEFAULT != null) {
1.26 + throw new IllegalStateException();
1.27 + }
1.28 + DEFAULT = accessor;
1.29 + }
1.30 +
1.31 + public Accessor() {
1.32 + }
1.33 +
1.34 + protected abstract Item newItem();
1.35 + protected abstract void addChangeListener(Item item, ChangeListener l);
1.36 +// FINISH: design.less.friend.Accessor
1.37 +
1.38 + // BEGIN: design.less.friend.InitAPI
1.39 + private static final Class<?> INIT_API_CLASS = loadClass(Item.class.getName());
1.40 + private static Class<?> loadClass(String name) {
1.41 + try {
1.42 + return Class.forName(
1.43 + name, true, Accessor.class.getClassLoader()
1.44 + );
1.45 + } catch (Exception ex) {
1.46 + throw new RuntimeException(ex);
1.47 + }
1.48 + }
1.49 + // END: design.less.friend.InitAPI
1.50 +}