You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2016/10/23 14:23:56 UTC

[15/28] zest-java git commit: ZEST-180, ZEST-186, ZEST-187, ZEST-188 Big Identity refactoring UnitOfWorkFactory is auto added to all modules that doesn't declare one IdentityGenerator is auto-added to all modules that deosn't declare one. Removed DCI/DDD

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvent.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvent.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvent.java
deleted file mode 100644
index 057ea23..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvent.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling;
-
-import java.time.LocalDate;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.common.Optional;
-import org.apache.zest.api.common.UseDefaults;
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.property.Immutable;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.TrackingId;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-
-/**
- * A HandlingEvent is used to register the event when, for instance,
- * a cargo is unloaded from a carrier at some location at a given time.
- *
- * The HandlingEvent's are sent from different Incident Logging Applications
- * some time after the event occurred and contain information about the
- * {@link TrackingId}, {@link Location}, timestamp of the completion of the event,
- * and possibly, if applicable a {@link Voyage}.
- *
- * HandlingEvent's could contain information about a {@link Voyage} and if so,
- * the event type must be either {@link HandlingEventType#LOAD} or
- * {@link HandlingEventType#UNLOAD}.
- *
- * All other events must be of {@link HandlingEventType#RECEIVE},
- * {@link HandlingEventType#CLAIM} or {@link HandlingEventType#CUSTOMS}.
- * (Handling event type is mandatory).
- */
-public interface HandlingEvent extends Identity
-{
-    @Immutable
-    Property<LocalDate> registrationDate();
-
-    @Immutable
-    Property<LocalDate> completionDate();
-
-    @Immutable
-    Property<TrackingId> trackingId();
-
-    @Immutable
-    Property<HandlingEventType> handlingEventType();
-
-    @Immutable
-    Association<Location> location();
-
-    @Optional
-    @Immutable
-    Association<Voyage> voyage();
-
-    @Optional
-    @UseDefaults
-    Property<Boolean> wasUnexpected();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEventType.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEventType.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEventType.java
deleted file mode 100644
index c826d3e..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEventType.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling;
-
-/**
- * A handling event type either requires or prohibits a voyage association.
- */
-public enum HandlingEventType
-{
-    RECEIVE( false ),
-    LOAD( true ),
-    UNLOAD( true ),
-    CUSTOMS( false ),
-    CLAIM( false );
-
-    private final boolean voyageRequired;
-
-    /**
-     * Private enum constructor.
-     *
-     * @param voyageRequired whether or not a voyage is associated with this event type
-     */
-    private HandlingEventType( final boolean voyageRequired )
-    {
-        this.voyageRequired = voyageRequired;
-    }
-
-    /**
-     * @return True if a voyage association is required for this event type.
-     */
-    public boolean requiresVoyage()
-    {
-        return voyageRequired;
-    }
-
-    /**
-     * @return True if a voyage association is prohibited for this event type.
-     */
-    public boolean prohibitsVoyage()
-    {
-        return !requiresVoyage();
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvents.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvents.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvents.java
deleted file mode 100644
index 2a11e11..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/handling/HandlingEvents.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.handling;
-
-import java.time.LocalDate;
-import org.apache.zest.api.common.Optional;
-import org.apache.zest.api.entity.EntityBuilder;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.cargo.TrackingId;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-
-/**
- * HandlingEvent "collection" - could have had a many-association to
- * Handling Events if it was part of the domain model.
- */
-@Mixins( HandlingEvents.Mixin.class )
-public interface HandlingEvents
-{
-    String HANDLING_EVENTS_ID = "Handling_events_id";
-
-    HandlingEvent createHandlingEvent( LocalDate registrationDate,
-                                       LocalDate completionDate,
-                                       TrackingId trackingId,
-                                       HandlingEventType handlingEventType,
-                                       Location location,
-                                       @Optional Voyage voyage
-    )
-        throws IllegalArgumentException;
-
-    public abstract class Mixin
-        implements HandlingEvents
-    {
-        @Structure
-        UnitOfWorkFactory uowf;
-
-        public HandlingEvent createHandlingEvent( LocalDate registrationDate,
-                                                  LocalDate completionDate,
-                                                  TrackingId trackingId,
-                                                  HandlingEventType handlingEventType,
-                                                  Location location,
-                                                  Voyage voyage
-        )
-            throws IllegalArgumentException
-        {
-            if( voyage == null && handlingEventType.requiresVoyage() )
-            {
-                throw new IllegalArgumentException( "Voyage is required for handling event type " + handlingEventType );
-            }
-
-            else if( voyage != null && handlingEventType.prohibitsVoyage() )
-            {
-                throw new IllegalArgumentException( "Voyage is not allowed with handling event type " + handlingEventType );
-            }
-
-            UnitOfWork uow = uowf.currentUnitOfWork();
-            EntityBuilder<HandlingEvent> handlingEventBuilder = uow.newEntityBuilder( HandlingEvent.class );
-            handlingEventBuilder.instance().registrationDate().set( registrationDate );
-            handlingEventBuilder.instance().completionDate().set( completionDate );
-            handlingEventBuilder.instance().trackingId().set( trackingId );
-            handlingEventBuilder.instance().handlingEventType().set( handlingEventType );
-            handlingEventBuilder.instance().location().set( location );
-            handlingEventBuilder.instance().voyage().set( voyage );  // could be null
-
-            // Save and return
-            return handlingEventBuilder.newInstance();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Itinerary.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Itinerary.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Itinerary.java
deleted file mode 100644
index 90b4228..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Itinerary.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary;
-
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.library.constraints.annotation.NotEmpty;
-
-import static java.time.ZoneOffset.UTC;
-
-/**
- * An itinerary is a description of a planned route for a cargo.
- *
- * The itinerary has a list of Legs each describing expected
- * loading onto/ unloading from voyages at different locations.
- *
- * List of legs is mandatory and immutable.
- */
-@Mixins( Itinerary.Mixin.class )
-public interface Itinerary
-{
-    @NotEmpty
-    Property<List<Leg>> legs();
-
-    // Side-effects free and UI agnostic convenience methods
-    Leg firstLeg();
-
-    Leg lastLeg();
-
-    LocalDate finalArrivalDate();
-
-    long days();
-
-    public abstract class Mixin
-        implements Itinerary
-    {
-        public Leg firstLeg()
-        {
-            if( legs().get().isEmpty() )
-            {
-                return null;
-            }
-
-            return legs().get().get( 0 );
-        }
-
-        public Leg lastLeg()
-        {
-            if( legs().get().isEmpty() )
-            {
-                return null;
-            }
-
-            return legs().get().get( legs().get().size() - 1 );
-        }
-
-        public LocalDate finalArrivalDate()
-        {
-            if( lastLeg() == null )
-            {
-                return LocalDate.MAX;
-            }
-
-            return lastLeg().unloadDate().get();
-        }
-
-        public long days()
-        {
-            LocalDate dep = firstLeg().loadDate().get();
-            LocalDate arr = lastLeg().unloadDate().get();
-            return Duration.between(dep, arr).toDays();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Leg.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Leg.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Leg.java
deleted file mode 100644
index 8c985a2..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/itinerary/Leg.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.itinerary;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.value.ValueComposite;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage.Voyage;
-
-/**
- * A leg describes an expected segment of a route:
- * - loading onto a voyage at a load location
- * - unloading from the voyage at a unload location
- *
- * All properties are mandatory and immutable.
- */
-public interface Leg
-{
-    Association<Location> loadLocation();
-
-    Property<LocalDate> loadDate();
-
-    Association<Voyage> voyage();
-
-    Property<LocalDate> unloadDate();
-
-    Association<Location> unloadLocation();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/Location.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/Location.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/Location.java
deleted file mode 100644
index 8d86b68..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/Location.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.location;
-
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.property.Immutable;
-import org.apache.zest.api.property.Property;
-
-/**
- * A location is stops on a journey, such as cargo
- * origin or destination, or carrier movement endpoints.
- *
- * It is uniquely identified by a {@link UnLocode}.
- *
- * All properties are mandatory and immutable.
- */
-@Immutable
-@Mixins( Location.Mixin.class )
-public interface Location
-{
-    Property<UnLocode> unLocode();
-
-    Property<String> name();
-
-    // Side-effects free and UI agnostic convenience methods
-    String getCode();
-
-    String getString();
-
-    abstract class Mixin
-        implements Location
-    {
-        public String getCode()
-        {
-            return unLocode().get().code().get();
-        }
-
-        public String getString()
-        {
-            return name().get() + " (" + getCode() + ")";
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/UnLocode.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/UnLocode.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/UnLocode.java
deleted file mode 100644
index f0ee71f..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/location/UnLocode.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.location;
-
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.value.ValueComposite;
-import org.apache.zest.library.constraints.annotation.Matches;
-
-/**
- * United Nations location code.
- *
- * http://www.unece.org/cefact/locode/
- * http://www.unece.org/cefact/locode/DocColumnDescription.htm#LOCODE
- *
- * UnLocode is mandatory and immutable.
- */
-public interface UnLocode
-{
-    // Country code is exactly two letters.
-    // Location code is usually three letters, but may contain the numbers 2-9 as well
-    @Matches( "[a-zA-Z]{2}[a-zA-Z2-9]{3}" )
-    Property<String> code();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/CarrierMovement.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/CarrierMovement.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/CarrierMovement.java
deleted file mode 100644
index b48b5fd..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/CarrierMovement.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage;
-
-import java.time.LocalDate;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.value.ValueComposite;
-import org.apache.zest.sample.dcicargo.sample_a.data.shipping.location.Location;
-
-/**
- * A carrier movement is a vessel voyage from one location to another.
- *
- * All properties are mandatory and immutable.
- */
-public interface CarrierMovement
-{
-    Association<Location> departureLocation();
-
-    Association<Location> arrivalLocation();
-
-    Property<LocalDate> departureDate();
-
-    Property<LocalDate> arrivalDate();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Schedule.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Schedule.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Schedule.java
deleted file mode 100644
index f13c682..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Schedule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage;
-
-import java.util.List;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.value.ValueComposite;
-
-/**
- * A schedule is a series of {@link CarrierMovement}s.
- *
- * List of carrier movements is mandatory and immutable.
- */
-public interface Schedule
-{
-    Property<List<CarrierMovement>> carrierMovements();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Voyage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Voyage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Voyage.java
deleted file mode 100644
index 88a8a53..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/Voyage.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage;
-
-import org.apache.zest.api.property.Property;
-
-/**
- * A voyage is a ship, train, flight etc carrying a cargo from one location
- * to another. A {@link Schedule} describes the route it takes.
- *
- * A cargo can be loaded onto part of, or the whole voyage.
- *
- * All properties are mandatory and immutable.
- */
-public interface Voyage
-{
-    Property<VoyageNumber> voyageNumber();
-
-    Property<Schedule> schedule();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/VoyageNumber.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/VoyageNumber.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/VoyageNumber.java
deleted file mode 100644
index 9571cb1..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/data/shipping/voyage/VoyageNumber.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.data.shipping.voyage;
-
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.value.ValueComposite;
-
-/**
- * Identifies a {@link Voyage}.
- *
- * Voyage number is mandatory and immutable.
- */
-public interface VoyageNumber
-{
-    Property<String> number();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/WicketZestApplication.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/WicketZestApplication.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/WicketZestApplication.java
deleted file mode 100644
index 696a67f..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/WicketZestApplication.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure;
-
-import javax.servlet.http.HttpServletRequest;
-import org.apache.wicket.Page;
-import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.zest.api.ZestAPI;
-import org.apache.zest.api.composite.TransientBuilderFactory;
-import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.query.QueryBuilderFactory;
-import org.apache.zest.api.structure.Application;
-import org.apache.zest.api.structure.Module;
-import org.apache.zest.api.unitofwork.ConcurrentEntityModificationException;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.usecase.UsecaseBuilder;
-import org.apache.zest.api.value.ValueBuilderFactory;
-import org.apache.zest.bootstrap.ApplicationAssembler;
-import org.apache.zest.bootstrap.Energy4Java;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.dci.Context;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.Queries;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.model.ReadOnlyModel;
-import org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.page.BaseWebPage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Base Wicket Web Application containing the Zest application.
- */
-public class WicketZestApplication
-    extends WebApplication
-{
-    public Logger logger = LoggerFactory.getLogger( WicketZestApplication.class );
-
-    protected Application zestApp;
-    protected Module zestModule;
-
-    @Structure
-    protected UnitOfWorkFactory uowf;
-
-    @Structure
-    protected ValueBuilderFactory vbf;
-
-    @Structure
-    protected QueryBuilderFactory qbf;
-
-    @Structure
-    protected TransientBuilderFactory tbf;
-
-    @Structure
-    protected ZestAPI api;
-
-    /**
-     * Zest Assembler
-     *
-     * To let the custom application class (DCISampleApplication_x) focus on starting up the
-     * Wicket environment, I made a convention of having Zest Assembler files in an 'assembly'
-     * folder beside the custom application class.
-     *
-     * There's always only one application file, but we could split the assemblage into several
-     * files ie. one for each layer. In that case, the Assembler file would be distributing to
-     * the individual LayerXAssembler classes.
-     *
-     * If you like, you can also override this method in the custom application class and simply
-     * return an instance of YourAssembler:
-     *
-     * &#64;Override protected ApplicationAssembler getAssembler() {
-     * return new YourAssemblerInAnyPath();
-     * }
-     */
-    protected ApplicationAssembler getAssembler()
-        throws Exception
-    {
-        String appPath = getClass().getCanonicalName();
-        String expectedPathFromApplication = ".assembly.Assembler";
-        String assemblerPath = appPath.substring( 0, appPath.lastIndexOf( "." ) ) + expectedPathFromApplication;
-        try
-        {
-            return (ApplicationAssembler) Class.forName( assemblerPath ).newInstance();
-        }
-        catch( ClassNotFoundException e )
-        {
-            throw new Exception( "Couldn't find Zest assembler in path '" + assemblerPath + "'" );
-        }
-    }
-
-    protected String defaultLayerName()
-    {
-        return "BOOTSTRAP";
-    }
-
-    protected String defaultModuleName()
-    {
-        return "BOOTSTRAP-Bootstrap";
-    }
-
-    // Override this to bootstrap the wicket application
-    protected void wicketInit()
-    {
-    }
-
-    @Override
-    protected void init()
-    {
-        startZest();
-        handleUnitOfWork();
-
-        Context.prepareContextBaseClass( uowf );
-        BaseWebPage.prepareBaseWebPageClass( tbf );
-        ReadOnlyModel.prepareModelBaseClass( zestModule, api );
-        Queries.prepareQueriesBaseClass( uowf, qbf );
-
-        wicketInit();
-    }
-
-    private void startZest()
-    {
-        try
-        {
-            logger.info( "Starting Zest application" );
-            Energy4Java zest = new Energy4Java();
-            zestApp = zest.newApplication( getAssembler() );
-            zestApp.activate();
-            zestModule = zestApp.findModule( defaultLayerName(), defaultModuleName() );
-
-            // Zest injects @Structure and @Service elements into this application instance
-            //zestModule.newObject( WicketZestApplication.class );
-            zestModule.injectTo( this );
-
-            logger.info( "Started Zest application" );
-        }
-        catch( Exception e )
-        {
-            logger.error( "Could not start Zest application." );
-            e.printStackTrace();
-            System.exit( 100 );
-        }
-    }
-
-    private void handleUnitOfWork()
-    {
-        getRequestCycleListeners().add( new AbstractRequestCycleListener()
-        {
-            @Override
-            public void onBeginRequest( final RequestCycle requestCycle )
-            {
-                super.onBeginRequest( requestCycle );
-
-                logger.debug( "================================" );
-                logger.debug( "REQUEST start" );
-                logger.debug( requestCycle.getRequest().toString() );
-                logger.debug( requestCycle.getRequest().getRequestParameters().toString() );
-
-                UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "REQUEST" ) );
-                logger.debug( "  ### NEW " + uow + "   ### MODULE: " + zestModule );
-            }
-
-            @Override
-            public void onEndRequest( final RequestCycle requestCycle )
-            {
-                UnitOfWork uow = uowf.currentUnitOfWork();
-                if( uow != null )
-                {
-                    try
-                    {
-                        if( "POST".equals( ( (HttpServletRequest) requestCycle.getRequest()
-                            .getContainerRequest() ).getMethod() ) )
-                        {
-                            // "Save"
-                            logger.debug( "  ### COMPLETE " + uow + "   ### MODULE: " + zestModule );
-                            uow.complete();
-                        }
-                        else
-                        {
-                            // GET requests
-                            logger.debug( "  ### DISCARD " + uow + "   ### MODULE: " + zestModule );
-                            uow.discard();
-                        }
-                    }
-                    catch( ConcurrentEntityModificationException e )
-                    {
-                        logger.error( "  ### DISCARD " + uow + "   ### MODULE: " + zestModule );
-                        uow.discard();
-                        e.printStackTrace();
-                    }
-                    catch( UnitOfWorkCompletionException e )
-                    {
-                        logger.error( "  ### DISCARD " + uow + "   ### MODULE: " + zestModule );
-                        uow.discard();
-                        e.printStackTrace();
-                    }
-                }
-                logger.debug( "REQUEST end" );
-                logger.debug( "------------------------------------" );
-            }
-        } );
-    }
-
-    // Since Zest can only add concrete classes in the assembly, we need to implement a (dummy) getHomePage()
-    // method here. Override in wicket application class with a real returned page class.
-    @Override
-    public Class<? extends Page> getHomePage()
-    {
-        return null;
-    }
-
-    @Override
-    protected void onDestroy()
-    {
-        if( zestApp == null )
-        {
-            return;
-        }
-
-        try
-        {
-            logger.info( "Passivating Zest application" );
-            zestApp.passivate();
-        }
-        catch( Exception e )
-        {
-            e.printStackTrace();
-        }
-    }
-
-    public String appVersion()
-    {
-        return zestApp.version();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/conversion/DTO.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/conversion/DTO.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/conversion/DTO.java
deleted file mode 100644
index 6f0434b..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/conversion/DTO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.conversion;
-
-import org.apache.zest.api.property.Immutable;
-import org.apache.zest.api.value.ValueComposite;
-
-/**
- * ValueComposites that extend DTO are candidates to have association types converted and assigned
- */
-@Immutable
-public interface DTO extends ValueComposite
-{
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/Context.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/Context.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/Context.java
deleted file mode 100644
index bb0c346..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/Context.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.dci;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Context
- *
- * Base class for DCI contexts.
- *
- * Helps assigning Entity objects to Roles and to "inject" the Context object into Methodful Roles.
- */
-public abstract class Context
-{
-    protected Logger logger = LoggerFactory.getLogger( getClass() );
-
-    protected static UnitOfWorkFactory uowf;
-
-    /*
-    * Role assignment + Context "injection"
-    *
-    * Cast a Data object to a Role, set the Context object in the Role and return the RolePlayer.
-    *
-    * Requirements:
-    * 1) SomeRole interface declares a 'void setContext(YourContext context);' method
-    * 2) SomeRole.Mixin class extends RoleMixin<YourContext>
-    *
-    * The RolePlayer can then use the context pointer to lookup other Roles in the current Context.
-    */
-    protected <T> T rolePlayer( Class<T> roleClass, Object dataObject )
-    {
-        if( dataObject == null )
-        {
-            return null;
-        }
-
-        objectCanPlayRole( roleClass, dataObject );
-        T rolePlayer = roleClass.cast( dataObject );
-        setContext( rolePlayer, this );
-        return rolePlayer;
-    }
-
-    private <T> void objectCanPlayRole( Class<T> roleClass, Object dataObject )
-    {
-        if( roleClass.isAssignableFrom( dataObject.getClass() ) )
-        {
-            return;
-        }
-
-        String className;
-        if( dataObject instanceof Proxy )
-        {
-            className = Proxy.getInvocationHandler( dataObject ).getClass().getSimpleName();
-        }
-        else
-        {
-            className = dataObject.getClass().getSimpleName();
-        }
-
-        throw new IllegalArgumentException(
-            "Object '" + className + "' can't play Role of '" + roleClass.getSimpleName() + "'" );
-    }
-
-    /*
-    * Poor mans Context injection
-    * */
-    private <T> void setContext( T rolePlayer, Context context )
-    {
-        try
-        {
-            Method setContextMethod = rolePlayer.getClass().getDeclaredMethod( "setContext", context.getClass() );
-
-            // Set Context in Role
-            setContextMethod.invoke( rolePlayer, context );
-        }
-        catch( Exception e )
-        {
-            String c = context.getClass().getSimpleName();
-            String r = rolePlayer.getClass().getSimpleName();
-            String msg = "Couldn't invoke 'void setContext( " + c + " context);' on " + r + "." +
-                         "\nPlease check the following requirements: " +
-                         "\n1) 'void setContext( " + c + " context);' is declared in " + r + " interface." +
-                         "\n2) " + r + " extends RoleMixin<" + c + ">";
-            logger.error( msg, e.getMessage() );
-            e.printStackTrace();
-            throw new RuntimeException( msg );
-        }
-    }
-
-    // Entity object instantiation
-
-    protected <T, U> T rolePlayer( Class<T> roleClass, Class<U> dataClass, String entityId )
-    {
-        U dataObject = uowf.currentUnitOfWork().get( dataClass, entityId );
-        return rolePlayer( roleClass, dataObject );
-    }
-
-    protected static <T> T loadEntity( Class<T> roleClass, String entityId )
-    {
-        return uowf.currentUnitOfWork().get( roleClass, entityId );
-    }
-
-    public static void prepareContextBaseClass( UnitOfWorkFactory unitOfWorkFactory )
-    {
-        uowf = unitOfWorkFactory;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/RoleMixin.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/RoleMixin.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/RoleMixin.java
deleted file mode 100644
index c6e4cc8..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/dci/RoleMixin.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.dci;
-
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.query.QueryBuilderFactory;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.value.ValueBuilderFactory;
-
-/**
- * Methodful Role implementation base class
- *
- * Helps "inject" the Context object into the Role Player.
- */
-public abstract class RoleMixin<T extends Context>
-{
-    public T context;
-
-    // Other common role services/methods could be added here...
-
-    @Structure
-    public UnitOfWorkFactory uowf;
-
-    @Structure
-    public QueryBuilderFactory qbf;
-
-    @Structure
-    public ValueBuilderFactory vbf;
-
-    /**
-     * setContext is called with method invocation in {@link Context#setContext(Object, Context)}
-     * (therefore "never used" according to IDE)
-     */
-    public void setContext( T context )
-    {
-        this.context = context;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/EntityModel.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/EntityModel.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/EntityModel.java
deleted file mode 100644
index fdf1e9b..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/EntityModel.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.model;
-
-import org.apache.wicket.model.IModel;
-import org.apache.zest.api.entity.EntityReference;
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.unitofwork.NoSuchEntityException;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.usecase.Usecase;
-
-/**
- * Javadoc
- */
-public class EntityModel<T extends Identity>
-    extends ReadOnlyModel<T>
-{
-    private Class<T> entityClass;
-    private String identity;
-    private Class<T> dtoClass;
-
-    private transient T dtoComposite;
-
-    @Structure
-    private UnitOfWorkFactory uowf;
-
-    public EntityModel( Class<T> entityClass, String identity, Class<T> dtoClass )
-    {
-        this.entityClass = entityClass;
-        this.identity = identity;
-        this.dtoClass = dtoClass;
-    }
-
-    public static <T extends Identity> IModel<T> of( Class<T> entityClass, String identity, Class<T> dtoClass )
-    {
-        return new EntityModel<>( entityClass, identity, dtoClass );
-    }
-
-    public T getObject()
-    {
-        if( dtoComposite == null && identity != null )
-        {
-            dtoComposite = uowf.currentUnitOfWork().toValue( dtoClass, loadEntity() );
-        }
-        return dtoComposite;
-    }
-
-    public void detach()
-    {
-        dtoComposite = null;
-    }
-
-    private T loadEntity()
-    {
-        T entity = module.unitOfWorkFactory().currentUnitOfWork().get( entityClass, identity );
-        if( entity == null )
-        {
-            Usecase usecase = module.unitOfWorkFactory().currentUnitOfWork().usecase();
-            throw new NoSuchEntityException( EntityReference.parseEntityReference( identity ), entityClass, usecase );
-        }
-        return entity;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/JSONModel.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/JSONModel.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/JSONModel.java
deleted file mode 100644
index ced6501..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/JSONModel.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.model;
-
-import org.apache.zest.api.value.ValueComposite;
-import org.apache.zest.api.value.ValueSerializer;
-
-/**
- * Model that can serialize/de-serialize an object to/from a JSON string.
- */
-public class JSONModel<T, U extends ValueComposite>
-    extends ReadOnlyModel<T>
-{
-    private Class<U> valueCompositeClass;
-    private String json;
-    private transient T valueComposite;
-
-    @SuppressWarnings( "unchecked" )
-    public JSONModel( T valueComposite, Class<U> valueCompositeClass )
-    {
-        json = module.findService( ValueSerializer.class ).get().serialize( (U) valueComposite );;
-        this.valueCompositeClass = valueCompositeClass;
-    }
-
-    @SuppressWarnings( "unchecked" )
-    public static <T, U extends ValueComposite> JSONModel<T, U> of( T value )
-    {
-        if( !( value instanceof ValueComposite ) )
-        {
-            throw new RuntimeException( value + " has to be an instance of a ValueComposite." );
-        }
-
-        // Get ValueComposite interface
-        Class<U> valueCompositeClass = (Class<U>) api.valueDescriptorFor( value ).valueType().mainType();
-
-        return new JSONModel<T, U>( value, valueCompositeClass );
-    }
-
-    @SuppressWarnings( "unchecked" )
-    public T getObject()
-    {
-        if( valueComposite == null && json != null )
-        {
-            // De-serialize
-            valueComposite = (T) module.newValueFromSerializedState( valueCompositeClass, json ); // Unchecked cast
-        }
-        return valueComposite;
-    }
-
-    public void detach()
-    {
-        valueComposite = null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/Queries.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/Queries.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/Queries.java
deleted file mode 100644
index de576a8..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/Queries.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.model;
-
-import java.io.Serializable;
-import org.apache.zest.api.query.QueryBuilderFactory;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-
-/**
- * Queries base class
- */
-public class Queries
-    implements Serializable // For Wicket (don't remove)
-{
-    static protected UnitOfWorkFactory uowf;
-    static protected QueryBuilderFactory qbf;
-
-    public static void prepareQueriesBaseClass( UnitOfWorkFactory unitOfWorkFactory,
-                                                QueryBuilderFactory queryBuilderFactory
-    )
-    {
-        uowf = unitOfWorkFactory;
-        qbf = queryBuilderFactory;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/QueryModel.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/QueryModel.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/QueryModel.java
deleted file mode 100644
index b2ee967..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/QueryModel.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.model;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.zest.api.entity.EntityComposite;
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.query.Query;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-
-/**
- * Callback Wicket model that holds a Zest Query object that can be called when needed to
- * retrieve fresh data.
- */
-public abstract class QueryModel<T extends Identity>
-    extends ReadOnlyModel<List<T>>
-{
-    private Class<T> dtoClass;
-    private transient List<T> dtoList;
-
-    @Structure
-    private UnitOfWorkFactory uowf;
-
-    public QueryModel( Class<T> dtoClass )
-    {
-        this.dtoClass = dtoClass;
-    }
-
-    public List<T> getObject()
-    {
-        if( dtoList != null )
-        {
-            return dtoList;
-        }
-
-        dtoList = new ArrayList<>();
-        for( T entity : getQuery() )
-        {
-            dtoList.add( getValue( entity ) );
-        }
-
-        return dtoList;
-    }
-
-    // Callback to retrieve the (unserializable) Zest Query object
-    public abstract Query<T> getQuery();
-
-    public T getValue( T entity )
-    {
-        return uowf.currentUnitOfWork().toValue( dtoClass, entity );
-    }
-
-    public void detach()
-    {
-        dtoList = null;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/ReadOnlyModel.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/ReadOnlyModel.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/ReadOnlyModel.java
deleted file mode 100644
index 34593fb..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/model/ReadOnlyModel.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.model;
-
-import org.apache.wicket.model.IModel;
-import org.apache.zest.api.ZestAPI;
-import org.apache.zest.api.structure.Module;
-
-/**
- * Abstract base model for Wicket model objects taking Zest objects.
- */
-public abstract class ReadOnlyModel<T>
-    implements IModel<T>
-{
-    private static final long serialVersionUID = 1L;
-
-    static protected ZestAPI api;
-    static protected Module module;
-
-    /**
-     * This default implementation of setObject unconditionally throws an
-     * UnsupportedOperationException. Since the method is final, any subclass is effectively a
-     * read-only model.
-     *
-     * @param object The object to set into the model
-     *
-     * @throws UnsupportedOperationException
-     */
-    public final void setObject( final T object )
-    {
-        throw new UnsupportedOperationException( "Model " + getClass() +
-                                                 " does not support setObject(Object)" );
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder( "Model:classname=[" );
-        sb.append( getClass().getName() ).append( "]" );
-        return sb.toString();
-    }
-
-    public static void prepareModelBaseClass( Module m,
-                                              ZestAPI api
-    )
-    {
-        module = m;
-        ReadOnlyModel.api = api;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/CorrectColor.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/CorrectColor.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/CorrectColor.java
deleted file mode 100644
index 88c5880..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/CorrectColor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.color;
-
-import org.apache.wicket.AttributeModifier;
-
-/**
- * Javadoc
- */
-public class CorrectColor extends AttributeModifier
-{
-    public CorrectColor( Boolean condition )
-    {
-        super( "class", condition ? "correctColor" : "VA_REMOVE" );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/ErrorColor.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/ErrorColor.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/ErrorColor.java
deleted file mode 100644
index 84306ae..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/color/ErrorColor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.color;
-
-import org.apache.wicket.AttributeModifier;
-
-/**
- * Javadoc
- */
-public class ErrorColor
-        extends AttributeModifier
-{
-
-    public ErrorColor( Boolean condition )
-    {
-        super( "class", condition ? "errorColor" : "VA_REMOVE" );
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/AbstractForm.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/AbstractForm.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/AbstractForm.java
deleted file mode 100644
index 5dcaea3..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/AbstractForm.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.form;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Button;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.markup.html.form.RadioChoice;
-import org.apache.wicket.markup.html.form.StatelessForm;
-import org.apache.wicket.util.visit.IVisit;
-import org.apache.wicket.util.visit.IVisitor;
-
-/**
- *
- */
-//public abstract class AbstractForm<T> extends Form<T>
-public abstract class AbstractForm<T> extends StatelessForm<T>
-{
-    public AbstractForm( String id )
-    {
-        super( id );
-    }
-
-    public AbstractForm()
-    {
-        super( "form" );
-    }
-
-    public void focusFirstError( final AjaxRequestTarget target )
-    {
-        visitFormComponents( new IVisitor<FormComponent<?>, Void>()
-        {
-            public void component( FormComponent<?> fc, IVisit<Void> visit )
-            {
-                if( isOtherComponent( fc ) || fc.isValid() )
-                {
-                    return;
-                }
-
-                target.focusComponent( fc );
-                visit.stop();
-            }
-        } );
-    }
-
-    private boolean isOtherComponent( FormComponent<?> fc )
-    {
-        return fc instanceof Button || fc instanceof CheckBox || fc instanceof RadioChoice;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/DateTextFieldWithPicker.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/DateTextFieldWithPicker.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/DateTextFieldWithPicker.java
deleted file mode 100644
index 0237052..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/DateTextFieldWithPicker.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.form;
-
-import com.google.code.joliratools.StatelessAjaxEventBehavior;
-import java.time.LocalDate;
-import java.time.LocalTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-import java.util.Map;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.datetime.DateConverter;
-import org.apache.wicket.datetime.PatternDateConverter;
-import org.apache.wicket.datetime.markup.html.form.DateTextField;
-import org.apache.wicket.devutils.stateless.StatelessComponent;
-import org.apache.wicket.extensions.yui.calendar.DatePicker;
-import org.apache.wicket.markup.html.IHeaderResponse;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.validation.validator.DateValidator;
-
-import static java.util.Date.from;
-
-//import org.wicketstuff.stateless.StatelessAjaxEventBehavior;
-
-/**
- * {@link DateTextField} with a {@link DatePicker}.
- */
-@StatelessComponent
-public class DateTextFieldWithPicker extends DateTextField
-{
-    DatePicker datePicker;
-
-    // Configurable widget options
-    private LocalDate earliestDate;
-    private LocalDate selectedDate;
-
-    private final static DateTimeFormatter YUI_DATE_FORMAT = DateTimeFormatter.ofPattern( "MM/dd/yyyy" );
-
-    public DateTextFieldWithPicker( String id, String label, Component model )
-    {
-        this( id, label, new PropertyModel<>( model, id ), new PatternDateConverter( "yyyy-MM-dd", true ) );
-    }
-
-    public DateTextFieldWithPicker( String id, String label, IModel<java.util.Date> model, DateConverter converter )
-    {
-        super( id, model, converter );
-
-        // Make the text field reachable by Ajax requests
-        setOutputMarkupId( true );
-
-        // Set required as default
-        setRequired( true );
-
-        // Add Date Picker with callback configuration
-        add( newDatePicker().setShowOnFieldClick( true ) );
-
-        setNonEmptyLabel( label );
-
-        // Show calendar if tabbing into the text field (weird it isn't default)
-        add( new StatelessAjaxEventBehavior( "onfocus" )
-        {
-            @Override
-            protected void onEvent( AjaxRequestTarget target )
-            {
-                String componentId = getComponent().getMarkupId();
-                String widgetId = componentId + "DpJs";
-                target.appendJavaScript(
-                    "Wicket.DateTime.showCalendar(" +
-                    "YAHOO.wicket['" + widgetId + "'], " +
-                    "document.getElementById('" + componentId + "').value, " +
-                    "'yyyy-MM-dd');"
-                );
-            }
-
-            @Override
-            protected PageParameters getPageParameters()
-            {
-                return null;
-            }
-        } );
-
-//        add( new StatelessAjaxEventBehavior( "onBlur" )
-//        {
-//            @Override
-//            protected void onEvent( AjaxRequestTarget target )
-//            {
-//                String componentId = getComponent().getMarkupId();
-//                String widgetId = componentId + "DpJs";
-//                target.appendJavaScript(
-//                      "Wicket.DateTime.showCalendar(" +
-//                            "YAHOO.wicket['" + widgetId + "'], " +
-//                            "document.getElementById('" + componentId + "').value, " +
-//                            "'yyyy-MM-dd');" +
-//                      "YAHOO.wicket['" + widgetId + "'].hide();" );
-//            }
-//
-//            @Override
-//            protected PageParameters getPageParameters()
-//            {
-//                return null;
-//            }
-//        } );
-    }
-
-    private void setNonEmptyLabel( String label )
-    {
-        if( label == null )
-        {
-            return;
-        }
-
-        if( label.isEmpty() )
-        {
-            throw new IllegalArgumentException( "Can't set an empty label on the drop down selector." );
-        }
-
-        setLabel( Model.of( label ) );
-    }
-
-    /**
-     * The DatePicker that gets added to the DateTextField component. Users may override this method
-     * with a DatePicker of their choice.
-     *
-     * @return a new {@link DatePicker} instance
-     */
-    protected DatePicker newDatePicker()
-    {
-        return new DatePicker()
-        {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            protected void configure( final Map<String, Object> widgetProperties,
-                                      final IHeaderResponse response, final Map<String, Object> initVariables
-            )
-            {
-                super.configure( widgetProperties, response, initVariables );
-
-                DateTextFieldWithPicker.this.configure( widgetProperties );
-            }
-        };
-    }
-
-    /**
-     * Gives overriding classes the option of adding (or even changing/ removing) configuration
-     * properties for the javascript widget. See <a
-     * href="http://developer.yahoo.com/yui/calendar/">the widget's documentation</a> for the
-     * available options. If you want to override/ remove properties, you should call
-     * super.configure(properties) first. If you don't call that, be aware that you will have to
-     * call {@literal #localize(Map)} manually if you like localized strings to be added.
-     *
-     * @param widgetProperties the current widget properties
-     */
-    protected void configure( Map<String, Object> widgetProperties )
-    {
-        // Set various YUI calendar options - add more if necessary
-        widgetProperties.put( "mindate", getEarliestDateStr() );
-        widgetProperties.put( "selected", getSelectedDateStr() );
-    }
-
-    public DateTextFieldWithPicker earliestDate( LocalDate newEarliestDate )
-    {
-        if( selectedDate != null && newEarliestDate.isAfter( selectedDate ) )
-        {
-            throw new IllegalArgumentException( "Earliest date can't be before selected day." );
-        }
-
-        earliestDate = newEarliestDate;
-
-        // Input field validation - date should be _after_ minimumDate (not the same)
-        LocalDate minimumDate = newEarliestDate.minusDays( 1 );
-        add( DateValidator.minimum( from( minimumDate.atTime( LocalTime.now() ).toInstant( ZoneOffset.UTC ) ) ) );
-        return this;
-    }
-
-    // Add latestDate(..) + other configuration options if needed..
-
-    public DateTextFieldWithPicker selectedDate( LocalDate newSelectedDate )
-    {
-        if( earliestDate != null && newSelectedDate.isBefore( earliestDate ) )
-        {
-            throw new IllegalArgumentException( "Selected date can't be before earliest day." );
-        }
-
-        selectedDate = newSelectedDate;
-
-        return this;
-    }
-
-    private String getSelectedDateStr()
-    {
-        if( selectedDate != null )
-        {
-            return YUI_DATE_FORMAT.format( selectedDate );
-        }
-
-        // Select today or earliest date (if later) as default
-        return earliestDate == null ?
-               YUI_DATE_FORMAT.format( LocalDate.now() ) :
-               YUI_DATE_FORMAT.format( earliestDate );
-    }
-
-    private String getEarliestDateStr()
-    {
-        return earliestDate == null ? "" : YUI_DATE_FORMAT.format( earliestDate );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/SelectorInForm.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/SelectorInForm.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/SelectorInForm.java
deleted file mode 100644
index 8b9b187..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/form/SelectorInForm.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.form;
-
-import java.util.List;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.util.ListModel;
-
-/**
- * Drop down list that resolves properties against a form
- */
-public class SelectorInForm extends DropDownChoice<String>
-{
-    PropertyModel<String> disablingPropertyModel;
-    String disablingValue = "";
-
-    public SelectorInForm( String property, String label, List<String> choices, Form form )
-    {
-        super( property + "Selector", new PropertyModel<String>( form, property ), new ListModel<String>( choices ) );
-        setNonEmptyLabel( label );
-        setOutputMarkupId( true );
-    }
-
-    public SelectorInForm( String property, String label, List<String> choices, Form form, String disablingProperty )
-    {
-        super( property + "Selector", new PropertyModel<String>( form, property ), new ListModel<String>( choices ) );
-        disablingPropertyModel = new PropertyModel<String>( form, disablingProperty );
-        setNonEmptyLabel( label );
-        setOutputMarkupId( true );
-    }
-
-    private void setNonEmptyLabel( String label )
-    {
-        if( label == null )
-        {
-            return;
-        }
-
-        setLabel( Model.of( label ) );
-    }
-
-    @Override
-    protected boolean isDisabled( final String currentValue, int index, String selected )
-    {
-        if( disablingPropertyModel != null )
-        {
-            disablingValue = disablingPropertyModel.getObject();
-        }
-
-        return currentValue.equals( disablingValue );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/link/LinkPanel.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/link/LinkPanel.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/link/LinkPanel.java
deleted file mode 100644
index 14766a0..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/link/LinkPanel.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.link;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-/**
- * Link panel for displaying a bookmarkable link
- */
-public class LinkPanel extends Panel
-{
-    public <T extends Page> LinkPanel( String id, Class<T> pageClass, String rowId )
-    {
-        this( id, pageClass, rowId, rowId );
-    }
-
-    public <T extends Page> LinkPanel( String id, Class<T> pageClass, String rowId, String label )
-    {
-        super( id );
-
-        PageParameters pageParameters = new PageParameters().set( 0, rowId );
-        BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>( "link", pageClass, pageParameters );
-        link.add( new Label( "label", label ) );
-        add( link );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/page/BaseWebPage.java
----------------------------------------------------------------------
diff --git a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/page/BaseWebPage.java b/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/page/BaseWebPage.java
deleted file mode 100644
index 0312915..0000000
--- a/samples/dci-cargo/dcisample_a/src/main/java/org/apache/zest/sample/dcicargo/sample_a/infrastructure/wicket/page/BaseWebPage.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.zest.sample.dcicargo.sample_a.infrastructure.wicket.page;
-
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.zest.api.composite.TransientBuilderFactory;
-import org.apache.zest.api.composite.TransientComposite;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Generic Wicket base page
- *
- * Convenience access to common resources
- */
-public class BaseWebPage extends WebPage
-{
-    public Logger logger = LoggerFactory.getLogger( getClass() );
-
-    static protected TransientBuilderFactory tbf;
-
-    public BaseWebPage( PageParameters pageParameters )
-    {
-        super( pageParameters );
-    }
-
-    public BaseWebPage()
-    {
-    }
-
-    public static <T extends TransientComposite> T query( Class<T> queryClass )
-    {
-        return tbf.newTransient( queryClass );
-    }
-
-    public static void prepareBaseWebPageClass( TransientBuilderFactory transientBuilderFactory )
-    {
-        tbf = transientBuilderFactory;
-    }
-}
\ No newline at end of file