/***
 * Excerpted from "Domain-Driven Design Using Naked Objects",
 * published by The Pragmatic Bookshelf.
 * Copyrights apply to this code. It may not be used to create training material, 
 * courses, books, articles, and the like. Contact us if you are in doubt.
 * We make no guarantees that this code is fit for any purpose. 
 * Visit http://www.pragmaticprogrammer.com/titles/dhnako for more book information.
***/
class EditCustomerForm extends Form ... {
    private static final class LoadableDetachableModelUsingOid 
            extends LoadableDetachableModel {
        private final Oid oid;
        private LoadableDetachableModelUsingOid(Oid oid) {
            this.oid = oid;
        }
        protected Object load() {
            NakedObject adapter = 
                getAdapterManager().getAdapterFor(oid);
            return adapter.getObject();
        }
    }
    private Oid oid;
    EditCustomerForm(final String id, final Oid oid) {
        super(id, new CompoundPropertyModel(
                    new LoadableDetachableModelUsingOid(oid)));
        this.oid = oid;
    }
    ...
}
