samples/friendpackage/src/org/apidesign/friendpackage/impl/Accessor.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 30 Oct 2014 21:30:10 +0100
changeset 409 40cabcdcd2be
parent 287 e1186601a720
permissions -rw-r--r--
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
     1 package org.apidesign.friendpackage.impl;
     2 
     3 import javax.swing.event.ChangeListener;
     4 import org.apidesign.friendpackage.api.Item;
     5 
     6 /**
     7  *
     8  * @author Jaroslav Tulach
     9  */
    10 // BEGIN: design.less.friend.Accessor
    11 public abstract class Accessor {
    12     private static volatile Accessor DEFAULT;
    13     public static Accessor getDefault() {
    14         Accessor a = DEFAULT;
    15         if (a == null) {
    16             throw new IllegalStateException("Something is wrong: " + a);
    17         }
    18         return a;
    19     }
    20 
    21     public static void setDefault(Accessor accessor) {
    22         if (DEFAULT != null) {
    23             throw new IllegalStateException();
    24         }
    25         DEFAULT = accessor;
    26     }
    27     
    28     public Accessor() {
    29     }
    30 
    31     protected abstract Item newItem();
    32     protected abstract void addChangeListener(Item item, ChangeListener l);
    33 // FINISH: design.less.friend.Accessor
    34 
    35     // BEGIN: design.less.friend.InitAPI
    36     private static final Class<?> INIT_API_CLASS = loadClass(
    37         Item.class.getName()
    38     );
    39     private static Class<?> loadClass(String name) {
    40         try {
    41             return Class.forName(
    42                 name, true, Accessor.class.getClassLoader()
    43             );
    44         } catch (Exception ex) {
    45             throw new RuntimeException(ex);
    46         }
    47     }
    48     // END: design.less.friend.InitAPI
    49 }