You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2020/06/01 21:46:26 UTC

[tapestry-5] branch java9modules created (now fdeb3b3)

This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a change to branch java9modules
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git.


      at fdeb3b3  TAP5-2627: putting all of beanmodel subproject into a single parent package

This branch includes the following new commits:

     new cceee67  Merge remote-tracking branch 'github/TAP5-2613' into java9modules
     new fdeb3b3  TAP5-2627: putting all of beanmodel subproject into a single parent package

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[tapestry-5] 02/02: TAP5-2627: putting all of beanmodel subproject into a single parent package

Posted by th...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a commit to branch java9modules
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit fdeb3b386b7cb8ad88ee9201b9e1386435cd65ab
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Mon Jun 1 18:44:08 2020 -0300

    TAP5-2627: putting all of beanmodel subproject into a single parent package
---
 5.7_RELEASE_NOTES.md                               | 13 +++++
 beanmodel/build.gradle                             |  1 +
 .../{beaneditor => beanmodel}/BeanModel.java       | 17 ++++---
 .../BeanModelSourceBuilder.java                    | 12 ++---
 .../beaneditor => beanmodel}/BeanModelUtils.java   | 14 ++++--
 .../tapestry5/{ => beanmodel}/PropertyConduit.java |  2 +-
 .../{ => beanmodel}/PropertyConduit2.java          |  4 +-
 .../{beaneditor => beanmodel}/PropertyModel.java   |  7 ++-
 .../internal/InternalPropertyConduit.java          |  6 +--
 .../{ => beanmodel}/internal/antlr/BaseLexer.java  |  2 +-
 .../{ => beanmodel}/internal/antlr/BaseParser.java |  2 +-
 .../internal/antlr/package-info.java               |  2 +-
 .../internal/beanmodel}/BeanModelImpl.java         | 12 ++---
 .../internal/beanmodel}/PropertyModelImpl.java     |  8 +--
 .../internal/services/BeanModelSourceImpl.java     | 12 ++---
 .../services/ClassPropertyAdapterImpl.java         |  3 +-
 .../services/CoercingPropertyConduitWrapper.java   |  6 +--
 .../internal/services/Invariant.java               |  4 +-
 .../internal/services/LiteralPropertyConduit.java  |  4 +-
 .../services/PlasticClassListenerLogger.java       |  2 +-
 .../internal/services/PropertyAccessImpl.java      |  2 +-
 .../internal/services/PropertyAdapterImpl.java     |  5 +-
 .../internal/services/PropertyConduitDelegate.java |  8 +--
 .../services/PropertyConduitSourceImpl.java        | 11 ++--
 .../services/PropertyExpressionException.java      |  2 +-
 .../{ => beanmodel}/services/BeanModelSource.java  |  8 +--
 .../services/PropertyConduitSource.java            |  6 +--
 .../internal/services/PlasticProxyFactoryImpl.java |  1 +
 .../corelib/base/AbstractPropertyOutput.java       |  3 +-
 .../tapestry5/corelib/components/AjaxFormLoop.java |  8 ++-
 .../tapestry5/corelib/components/BeanDisplay.java  | 14 +++---
 .../tapestry5/corelib/components/BeanEditForm.java | 16 +++---
 .../tapestry5/corelib/components/BeanEditor.java   | 12 ++---
 .../apache/tapestry5/corelib/components/Form.java  |  9 +++-
 .../apache/tapestry5/corelib/components/Grid.java  | 18 +++----
 .../tapestry5/corelib/components/GridColumns.java  |  2 +-
 .../tapestry5/corelib/components/GridRows.java     |  2 +-
 .../corelib/components/PropertyDisplay.java        |  2 +-
 .../corelib/components/PropertyEditor.java         | 14 ++++--
 .../tapestry5/corelib/components/Select.java       |  7 ++-
 .../apache/tapestry5/corelib/components/Zone.java  |  7 ++-
 .../tapestry5/corelib/pages/ExceptionReport.java   |  8 ++-
 .../tapestry5/corelib/pages/PageCatalog.java       |  4 +-
 .../corelib/pages/PropertyEditBlocks.java          |  4 +-
 .../tapestry5/corelib/pages/ServiceStatus.java     |  4 +-
 .../org/apache/tapestry5/grid/GridDataSource.java  |  2 +-
 .../java/org/apache/tapestry5/grid/GridModel.java  |  2 +-
 .../org/apache/tapestry5/grid/SortConstraint.java  |  4 +-
 .../tapestry5/internal/TapestryInternalUtils.java  |  3 ++
 .../tapestry5/internal/bindings/PropBinding.java   |  8 +--
 .../internal/bindings/PropBindingFactory.java      |  4 +-
 .../internal/grid/CollectionGridDataSource.java    |  2 +-
 .../internal/pageload/PageLoaderImpl.java          | 18 ++++++-
 .../tapestry5/internal/services/AjaxFilter.java    |  9 +++-
 .../internal/services/AssetDispatcher.java         |  8 ++-
 .../internal/services/CheckForUpdatesFilter.java   |  7 ++-
 .../services/ClientPersistentFieldStorageImpl.java |  7 ++-
 .../services/ClientPersistentFieldStrategy.java    |  7 ++-
 .../services/ComponentEventDispatcher.java         |  8 ++-
 .../services/ComponentEventLinkEncoderImpl.java    | 13 ++++-
 .../services/ComponentEventRequestHandlerImpl.java |  8 ++-
 .../services/ComponentInstantiatorSourceImpl.java  |  7 ++-
 .../ComponentRequestHandlerTerminator.java         | 10 +++-
 .../services/DefaultRequestExceptionHandler.java   |  7 ++-
 .../services/DeferredResponseRenderer.java         |  7 ++-
 .../internal/services/PageRenderDispatcher.java    |  8 ++-
 .../services/PageRenderRequestHandlerImpl.java     |  7 ++-
 .../ProductionModeUnknownComponentFilter.java      |  7 ++-
 .../internal/services/RequestErrorFilter.java      |  9 +++-
 .../internal/services/RequestOperationTracker.java |  7 ++-
 .../services/RequestSecurityManagerImpl.java       |  8 ++-
 .../internal/services/RootPathDispatcher.java      |  9 +++-
 .../services/StreamPageContentResultProcessor.java |  9 +++-
 .../internal/services/ValueEncoderSourceImpl.java  |  6 ++-
 .../org/apache/tapestry5/modules/AssetsModule.java | 26 +++++++++-
 .../apache/tapestry5/modules/InternalModule.java   | 58 +++++++++++++++++++++-
 .../apache/tapestry5/modules/TapestryModule.java   | 12 ++++-
 .../apache/tapestry5/test/TapestryTestCase.java    | 40 +++++++++++++--
 .../corelib/base/AbstractPropertyOutputTest.java   |  4 +-
 .../corelib/components/BeanEditorTest.java         |  4 +-
 .../corelib/components/PropertyEditorTest.java     |  2 +-
 .../integration/app1/base/GenericEditor.java       |  4 +-
 .../app1/pages/AddedGridColumnsDemo.java           |  4 +-
 .../integration/app1/pages/EmptyGrid.java          |  6 +--
 .../integration/app1/pages/GridInLoopDemo.java     |  4 +-
 .../app1/pages/SimpleTrackGridDemo.java            |  4 +-
 .../org/apache/tapestry5/internal/DataBean.java    |  2 +-
 .../internal/TapestryInternalUtilsTest.java        |  2 +
 .../internal/beaneditor/BeanModelUtilsTest.java    |  5 +-
 .../ValidateAnnotationConstraintGeneratorTest.java |  2 +-
 .../grid/CollectionGridDataSourceTest.java         |  6 +--
 .../services/AbstractBeanModelSourceImplTest.java  | 11 ++--
 .../services/ApplicationStateManagerImplTest.java  |  7 ++-
 .../internal/services/BeanBlockSourceImplTest.java |  7 ++-
 .../services/BeanModelSourceBuilderTest.java       |  4 +-
 .../internal/services/BeanModelSourceImplTest.java |  2 +-
 .../services/ComponentEventDispatcherTest.java     | 12 ++++-
 .../ComponentEventLinkEncoderImplTest.java         | 11 +++-
 .../internal/services/LinkSourceImplTest.java      |  8 ++-
 .../services/PropertyConduitSourceImplTest.java    |  9 ++--
 .../services/RequestSecurityManagerImplTest.java   |  7 ++-
 .../internal/services/StaticFilesFilterTest.java   |  7 ++-
 .../internal/test/InternalBaseTestCase.java        | 23 ++++++++-
 .../tapestry5/ioc/modules/TapestryIOCModule.java   |  1 +
 .../groovy/ioc/specs/ExceptionUtilsSpec.groovy     |  2 +-
 .../groovy/ioc/specs/PropertyAccessImplSpec.groovy |  1 +
 .../tapestry5/kaptcha/modules/KaptchaModule.java   |  8 ++-
 .../internal/services/UploadExceptionFilter.java   |  8 ++-
 108 files changed, 618 insertions(+), 216 deletions(-)

diff --git a/5.7_RELEASE_NOTES.md b/5.7_RELEASE_NOTES.md
new file mode 100644
index 0000000..024a6ed
--- /dev/null
+++ b/5.7_RELEASE_NOTES.md
@@ -0,0 +1,13 @@
+Scratch pad for changes destined for the 5.7 release notes page.
+
+# Breaking Changes:
+
+## Non-Internal Classes Moved to Different Packages
+
+This was done to avoid split packages (i.e. packages which appear in more than one JAR) 
+in Apache Tapestry and making it easier to be used in projects using Java 9 modules (JPMS).
+
+# Possibly Breaking Changes:
+
+# Non-Breaking Changes:
+
diff --git a/beanmodel/build.gradle b/beanmodel/build.gradle
index ca0d1cf..c63d5b6 100644
--- a/beanmodel/build.gradle
+++ b/beanmodel/build.gradle
@@ -23,6 +23,7 @@ dependencies {
     }
 
     testCompile "org.testng:testng:${versions.testng}", { transitive = false }
+    testCompile "org.easymock:easymock:${versions.easymock}"
 }
 
 clean.delete generateGrammarSource.outputDirectory
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
similarity index 92%
rename from beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
index cf47276..fdb60ac 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
@@ -10,23 +10,24 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.PropertyConduit;
+package org.apache.tapestry5.beanmodel;
 
 import java.util.List;
 
+import org.apache.tapestry5.beaneditor.DataType;
+import org.apache.tapestry5.beaneditor.RelativePosition;
+
 /**
  * Provides the information necessary to build a user interface to view, create or edit an instance of a particular
  * type.
  *
  * BeanModels are not thread-safe, they are also not serializable.
  *
- * Here, and in {@link org.apache.tapestry5.beaneditor.PropertyModel}, the term "propertyName" is used for simplicitly.
- * However, a full {@linkplain org.apache.tapestry5.services.PropertyConduitSource#create(Class, String) property
+ * Here, and in {@link org.apache.tapestry5.beanmodel.PropertyModel}, the term "propertyName" is used for simplicitly.
+ * However, a full {@linkplain org.apache.tapestry5.beanmodel.services.PropertyConduitSource#create(Class, String) property
  * expression} may be utilized when {@linkplain #add(String) adding new properties to an existing BeanModel}.
  *
- * @see org.apache.tapestry5.services.BeanModelSource
+ * @see org.apache.tapestry5.beanmodel.services.BeanModelSource
  */
 public interface BeanModel<T>
 {
@@ -61,7 +62,7 @@ public interface BeanModel<T>
     /**
      * Returns the identified model.  Property ids are a stripped version of the property name. Case is ignored.
      *
-     * @param propertyId matched caselessly against {@link org.apache.tapestry5.beaneditor.PropertyModel#getId()}
+     * @param propertyId matched caselessly against {@link org.apache.tapestry5.beanmodel.PropertyModel#getId()}
      * @throws RuntimeException if the bean editor model does not have a property model with the indicated id
      */
     PropertyModel getById(String propertyId);
@@ -70,7 +71,7 @@ public interface BeanModel<T>
      * Adds a new property to the model, returning its mutable model for further refinement. The property is added to
      * the <em>end</em> of the list of properties. The property must be real (but may have been excluded if there was no
      * {@linkplain org.apache.tapestry5.beaneditor.DataType datatype} associated with the property). To add a synthetic
-     * property, use {@link #add(String, org.apache.tapestry5.PropertyConduit)}
+     * property, use {@link #add(String, org.apache.tapestry5.beanmodel.PropertyConduit)}
      *
      * @param propertyName name of property to add
      * @return the new property model (for further configuration)
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModelSourceBuilder.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModelSourceBuilder.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
index 20a23cb..208decb 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModelSourceBuilder.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
@@ -9,10 +9,13 @@
 // 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.tapestry5.beaneditor;
+package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.internal.services.BeanModelSourceImpl;
-import org.apache.tapestry5.internal.services.PropertyConduitSourceImpl;
+import org.apache.tapestry5.beanmodel.internal.services.BeanModelSourceImpl;
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl;
+import org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.internal.services.StringInternerImpl;
 import org.apache.tapestry5.ioc.AnnotationProvider;
@@ -21,16 +24,13 @@ import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.internal.BasicDataTypeAnalyzers;
 import org.apache.tapestry5.ioc.internal.BasicTypeCoercions;
 import org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl;
-import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl;
 import org.apache.tapestry5.ioc.internal.services.TypeCoercerImpl;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.CoercionTuple;
 import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
 import org.apache.tapestry5.ioc.services.PropertyAccess;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.PropertyConduitSource;
 import org.slf4j.LoggerFactory;
 
 import java.lang.annotation.Annotation;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
index 207fb97..41d8866 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
@@ -12,9 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.beaneditor;
+package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
 
 /**
@@ -26,7 +25,7 @@ public final class BeanModelUtils
     final private static String[] EMPTY_STRING_ARRAY = new String[0];
 
     /**
-     * Performs standard set of modifications to a {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * Performs standard set of modifications to a {@link org.apache.tapestry5.beanmodel.BeanModel}
      * . First new
      * properties may be added, then properties removed, then properties reordered.
      *
@@ -62,7 +61,7 @@ public final class BeanModelUtils
 
     /**
      * Adds empty properties to the bean model. New properties are added with a <em>null</em>
-     * {@link org.apache.tapestry5.PropertyConduit}. `
+     * {@link org.apache.tapestry5.beanmodel.PropertyConduit}. `
      *
      * @param model         to be modified
      * @param propertyNames comma-separated list of property names
@@ -108,7 +107,12 @@ public final class BeanModelUtils
         model.reorder(split(propertyNames));
     }
     
-    static String[] split(String propertyNames)
+    /**
+     * Don't use this method, which is only public for testing purposes.
+     * @param propertyNames
+     * @return a String array
+     */
+    public static String[] split(String propertyNames)
     {
         String trimmed = propertyNames.trim();
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
similarity index 97%
rename from beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
index 3dbb0c0..c8be9ef 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5;
+package org.apache.tapestry5.beanmodel;
 
 import org.apache.tapestry5.ioc.AnnotationProvider;
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit2.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit2.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit2.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit2.java
index 1577a3d..36fbf8d 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit2.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit2.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5;
+package org.apache.tapestry5.beanmodel;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.services.PropertyConduitSource;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 
 
 /**
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
index a0c5467..51d9ae3 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
@@ -10,17 +10,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.beaneditor;
+package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 
 /**
- * Part of a {@link org.apache.tapestry5.beaneditor.BeanModel} that defines the attributes of a single property of a
+ * Part of a {@link org.apache.tapestry5.beanmodel.BeanModel} that defines the attributes of a single property of a
  * bean.
  *
  *
- * A PropertyModel is also an {@link AnnotationProvider}, as long as the {@link org.apache.tapestry5.PropertyConduit} is
+ * A PropertyModel is also an {@link AnnotationProvider}, as long as the {@link org.apache.tapestry5.beanmodel.PropertyConduit} is
  * non-null.  When there is no property conduit, then {@link org.apache.tapestry5.ioc.AnnotationProvider#getAnnotation(Class)}
  * will return null.
  */
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/InternalPropertyConduit.java
similarity index 82%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/InternalPropertyConduit.java
index 315b372..c82963a 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/InternalPropertyConduit.java
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal;
+package org.apache.tapestry5.beanmodel.internal;
 
-import org.apache.tapestry5.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
 
 
 /**
- * Extension to {@link org.apache.tapestry5.PropertyConduit2} that adds a method to determine the name of the property.
+ * Extension to {@link org.apache.tapestry5.beanmodel.PropertyConduit2} that adds a method to determine the name of the property.
  * 
  * @since 5.2.0
  *
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseLexer.java
similarity index 96%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseLexer.java
index 442240d..576a1bc 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseLexer.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.antlr;
+package org.apache.tapestry5.beanmodel.internal.antlr;
 
 import org.antlr.runtime.CharStream;
 import org.antlr.runtime.Lexer;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseParser.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseParser.java
index 212b782..63cf100 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseParser.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.antlr;
+package org.apache.tapestry5.beanmodel.internal.antlr;
 
 import org.antlr.runtime.Parser;
 import org.antlr.runtime.TokenStream;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/package-info.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/package-info.java
similarity index 92%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/package-info.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/package-info.java
index 55be313..7a1948f 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/package-info.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/package-info.java
@@ -15,4 +15,4 @@
 /**
  * [INTERNAL USE ONLY] support classes related to Antlr; API subject to change
  */
-package org.apache.tapestry5.internal.antlr;
+package org.apache.tapestry5.beanmodel.internal.antlr;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
index 4d2245d..bf51280 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
@@ -12,13 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.beaneditor;
+package org.apache.tapestry5.beanmodel.internal.beanmodel;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
 import org.apache.tapestry5.beaneditor.RelativePosition;
-import org.apache.tapestry5.internal.services.CoercingPropertyConduitWrapper;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.internal.services.CoercingPropertyConduitWrapper;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
@@ -27,7 +28,6 @@ import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.ioc.util.AvailableValues;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.plastic.PlasticUtils;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 import java.util.List;
 import java.util.Map;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
similarity index 94%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
index 24d0b2d..6707d4c 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.beaneditor;
+package org.apache.tapestry5.beanmodel.internal.beanmodel;
 
 import java.lang.annotation.Annotation;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
 import org.apache.tapestry5.beaneditor.Sortable;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
similarity index 94%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
index bb20de0..befb8ff 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
@@ -12,23 +12,23 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
 import org.apache.tapestry5.beaneditor.NonVisual;
 import org.apache.tapestry5.beaneditor.ReorderProperties;
-import org.apache.tapestry5.internal.beaneditor.BeanModelImpl;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.internal.beanmodel.BeanModelImpl;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.ComponentLayer;
 import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
similarity index 98%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
index 8164ec7..c2005f1 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
 
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tapestry5.ioc.internal.services.ServiceMessages;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.GenericsUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
index 2127696..7b371a4 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 public class CoercingPropertyConduitWrapper implements PropertyConduit2
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/Invariant.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/Invariant.java
similarity index 88%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/Invariant.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/Invariant.java
index 924b570..bc52c5b 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/Invariant.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/Invariant.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.*;
 
 /**
- * Special annotation that is applied to literal {@link org.apache.tapestry5.PropertyConduit}s, to inform {@link
+ * Special annotation that is applied to literal {@link org.apache.tapestry5.beanmodel.PropertyConduit}s, to inform {@link
  * org.apache.tapestry5.internal.bindings.PropBinding} that the value is, in fact, invariant.
  */
 @Target({ElementType.PARAMETER, ElementType.FIELD})
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
similarity index 94%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
index e8cd58f..eca1ced 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticClassListenerLogger.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PlasticClassListenerLogger.java
similarity index 96%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticClassListenerLogger.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PlasticClassListenerLogger.java
index 8ebdede..a6c7262 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticClassListenerLogger.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PlasticClassListenerLogger.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import org.apache.tapestry5.plastic.ClassType;
 import org.apache.tapestry5.plastic.PlasticClassEvent;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
similarity index 99%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
index e6cd3e3..a2838c6 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
similarity index 96%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
index 97685ef..9ee932a 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
@@ -12,9 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.ioc.internal.services.AccessableObjectAnnotationProvider;
+import org.apache.tapestry5.ioc.internal.services.AnnotationProviderChain;
+import org.apache.tapestry5.ioc.internal.services.ServiceMessages;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
 import org.apache.tapestry5.ioc.services.PropertyAdapter;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitDelegate.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
similarity index 82%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitDelegate.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
index 3849103..780cd59 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitDelegate.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
@@ -12,18 +12,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.Annotation;
 
-import org.apache.tapestry5.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.internal.util.IntegerRange;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 /**
- * Companion class for {@link org.apache.tapestry5.PropertyConduit} instances created by the
- * {@link org.apache.tapestry5.services.PropertyConduitSource}.
+ * Companion class for {@link org.apache.tapestry5.beanmodel.PropertyConduit} instances created by the
+ * {@link org.apache.tapestry5.beanmodel.services.PropertyConduitSource}.
  */
 @SuppressWarnings("all")
 public class PropertyConduitDelegate
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
similarity index 99%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
index dea2052..35339c9 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
@@ -12,16 +12,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import org.antlr.runtime.ANTLRInputStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.tree.Tree;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
-import org.apache.tapestry5.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.internal.antlr.PropertyExpressionLexer;
 import org.apache.tapestry5.internal.antlr.PropertyExpressionParser;
+import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.internal.util.IntegerRange;
 import org.apache.tapestry5.internal.util.MultiKey;
 import org.apache.tapestry5.ioc.AnnotationProvider;
@@ -38,7 +40,6 @@ import org.apache.tapestry5.plastic.*;
 import org.apache.tapestry5.services.ComponentClasses;
 import org.apache.tapestry5.services.ComponentLayer;
 import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyExpressionException.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyExpressionException.java
index 765c0bb..fce4044 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyExpressionException.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 /**
  * Exception thrown when there is a problem parsing a property expression using the ANTLR property expression grammar.
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/services/BeanModelSource.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
similarity index 93%
rename from beanmodel/src/main/java/org/apache/tapestry5/services/BeanModelSource.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
index b98fa60..1df5bb4 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/services/BeanModelSource.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
@@ -10,19 +10,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.beanmodel.services;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.ioc.Messages;
 
 /**
- * Used by a component to create a default {@link org.apache.tapestry5.beaneditor.BeanModel} for a particular bean
+ * Used by a component to create a default {@link org.apache.tapestry5.beanmodel.BeanModel} for a particular bean
  * class. Also provides support to the model by generating validation information for individual fields.
  *
  * BeanModels are the basis for the {@link org.apache.tapestry5.corelib.components.BeanEditor} and {@link
  * org.apache.tapestry5.corelib.components.Grid} comopnents.
  *
- * @see org.apache.tapestry5.services.PropertyConduitSource
+ * @see org.apache.tapestry5.beanmodel.services.PropertyConduitSource
  */
 public interface BeanModelSource
 {
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
similarity index 89%
rename from beanmodel/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
index 83d8d33..3f10792 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
@@ -10,12 +10,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.beanmodel.services;
 
-import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
 
 /**
- * A source for {@link org.apache.tapestry5.PropertyConduit}s, which can be thought of as a compiled property path
+ * A source for {@link org.apache.tapestry5.beanmodel.PropertyConduit}s, which can be thought of as a compiled property path
  * expression. PropertyConduits are the basis of the "prop:" binding factory, thus this service defines the expression
  * format used by the {@link org.apache.tapestry5.internal.bindings.PropBindingFactory}.
  */
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java
index f1b3f67..c9c8c82 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.ioc.internal.services;
 
+import org.apache.tapestry5.beanmodel.internal.services.PlasticClassListenerLogger;
 import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
 import org.apache.tapestry5.internal.plastic.asm.Type;
 import org.apache.tapestry5.internal.plastic.asm.tree.*;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
index e24f025..d8033bd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
@@ -14,7 +14,8 @@ package org.apache.tapestry5.corelib.base;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
index c87c9e1..748a2a4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
@@ -14,13 +14,19 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.internal.AjaxFormLoopContext;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentDefaultProvider;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.PartialMarkupRenderer;
+import org.apache.tapestry5.services.PartialMarkupRendererFilter;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
index 50e088f..6e01fab 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
@@ -18,12 +18,12 @@ import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.BeanModelSource;
 
 /**
  * A component that displays the properties of a bean (or POJO, or any object with properties) as a
@@ -77,7 +77,7 @@ public class BeanDisplay
     private BeanModel model;
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
+     * {@link org.apache.tapestry5.beanmodel.BeanModel} (only used
      * when a default model is created automatically).
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive.
@@ -86,7 +86,7 @@ public class BeanDisplay
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      * The names are case-insensitive.
@@ -104,7 +104,7 @@ public class BeanDisplay
     private String reorder;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
index 6f72a93..0f83040 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
@@ -14,10 +14,10 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 /**
  * A component that creates an entire form for editing the properties of a particular bean (or POJO, or any object
@@ -35,8 +35,8 @@ import org.apache.tapestry5.services.BeanModelSource;
  * events of a Form.
  *
  * @tapestrydoc
- * @see org.apache.tapestry5.beaneditor.BeanModel
- * @see org.apache.tapestry5.services.BeanModelSource
+ * @see org.apache.tapestry5.beanmodel.BeanModel
+ * @see org.apache.tapestry5.beanmodel.services.BeanModelSource
  * @see org.apache.tapestry5.corelib.components.PropertyEditor
  * @see org.apache.tapestry5.beaneditor.DataType
  * @see Form
@@ -67,7 +67,7 @@ public class BeanEditForm implements ClientElement, FormValidationControl
 
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
+     * {@link org.apache.tapestry5.beanmodel.BeanModel} (only used
      * when a default model is created automatically).
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive.
@@ -76,7 +76,7 @@ public class BeanEditForm implements ClientElement, FormValidationControl
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      * The names are case-insensitive.
@@ -94,7 +94,7 @@ public class BeanEditForm implements ClientElement, FormValidationControl
     private String reorder;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
index 2e29d10..185afd5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
@@ -20,16 +20,16 @@ import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.internal.BeanEditContextImpl;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.BeanValidationContextImpl;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.plastic.PlasticUtils;
 import org.apache.tapestry5.services.BeanEditContext;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FormSupport;
 
@@ -89,7 +89,7 @@ public class BeanEditor
 
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
+     * {@link org.apache.tapestry5.beanmodel.BeanModel} (only used
      * when a default model is created automatically).
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive.
@@ -98,7 +98,7 @@ public class BeanEditor
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      * The names are case-insensitive.
@@ -116,7 +116,7 @@ public class BeanEditor
     private String reorder;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
index 39451f7..062a638 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.ClientValidation;
 import org.apache.tapestry5.corelib.internal.ComponentActionSink;
 import org.apache.tapestry5.corelib.internal.FormSupportImpl;
@@ -36,7 +37,13 @@ import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ClientDataEncoder;
+import org.apache.tapestry5.services.ComponentSource;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.StreamPageContent;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
index a884e52..6cf048d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
@@ -14,16 +14,16 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.data.GridPagerPosition;
 import org.apache.tapestry5.grid.*;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
 import org.apache.tapestry5.internal.bindings.AbstractBinding;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
 import org.apache.tapestry5.services.FormSupport;
@@ -50,8 +50,8 @@ import java.util.List;
  * to use a unique ID for each row that doesn't change when rows are reordered.
  *
  * @tapestrydoc
- * @see org.apache.tapestry5.beaneditor.BeanModel
- * @see org.apache.tapestry5.services.BeanModelSource
+ * @see org.apache.tapestry5.beanmodel.BeanModel
+ * @see org.apache.tapestry5.beanmodel.services.BeanModelSource
  * @see org.apache.tapestry5.grid.GridDataSource
  * @see BeanEditForm
  * @see BeanDisplay
@@ -129,7 +129,7 @@ public class Grid implements GridModel, ClientElement
     private GridSortModel sortModel;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}.
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}.
      * Cells for added columns will be blank unless a cell override is provided. This parameter is only used
      * when a default model is created automatically.
      */
@@ -138,7 +138,7 @@ public class Grid implements GridModel, ClientElement
 
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel}.
+     * {@link org.apache.tapestry5.beanmodel.BeanModel}.
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive. This parameter is only used
      * when a default model is created automatically.
@@ -148,7 +148,7 @@ public class Grid implements GridModel, ClientElement
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * .
      * The names are case-insensitive. This parameter is only used
      * when a default model is created automatically.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
index f27b0ef..5be3d11 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
@@ -19,7 +19,7 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.PropertyOverrides;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.GridModel;
 import org.apache.tapestry5.grid.GridSortModel;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
index 356ac32..b7c0860 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
@@ -32,7 +32,7 @@ import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.grid.GridDataSource;
 import org.apache.tapestry5.grid.GridModel;
 import org.apache.tapestry5.services.FormSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
index a36ab7a..e54e19a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.corelib.base.AbstractPropertyOutput;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
index 1f9a418..cde9165 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
@@ -17,13 +17,21 @@ package org.apache.tapestry5.corelib.components;
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BeanBlockSource;
+import org.apache.tapestry5.services.Core;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FieldTranslatorSource;
+import org.apache.tapestry5.services.FieldValidatorDefaultSource;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.PropertyEditContext;
 
 import java.lang.annotation.Annotation;
 import java.util.Locale;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
index 9be23ab..aa9b197 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.corelib.data.BlankOption;
 import org.apache.tapestry5.corelib.data.SecureOption;
@@ -27,7 +28,11 @@ import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.FieldValidatorDefaultSource;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.ValueEncoderFactory;
+import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.apache.tapestry5.util.EnumSelectModel;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
index 627f6f6..b4e9b02 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.internal.ComponentActionSink;
 import org.apache.tapestry5.corelib.internal.FormSupportAdapter;
 import org.apache.tapestry5.corelib.internal.HiddenFieldPositioner;
@@ -22,7 +23,11 @@ import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ClientDataEncoder;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.HiddenFieldLocationRules;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
index 87d0d2f..fe1df02 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
@@ -21,6 +21,7 @@ import org.apache.tapestry5.annotations.ContentType;
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.UnknownActivationContextCheck;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.base.AbstractInternalPage;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
@@ -32,7 +33,12 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ExceptionReporter;
+import org.apache.tapestry5.services.PageRenderLinkSource;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.Session;
+import org.apache.tapestry5.services.URLEncoder;
 
 import java.net.MalformedURLException;
 import java.net.URL;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
index cffe9d5..7f0ccdf 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
@@ -17,8 +17,9 @@ package org.apache.tapestry5.corelib.pages;
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.alerts.AlertManager;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.func.*;
 import org.apache.tapestry5.internal.PageCatalogTotals;
@@ -31,7 +32,6 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
index c0f76df..d3d0bf8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
@@ -18,7 +18,8 @@ import org.apache.tapestry5.SelectModel;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.components.BeanEditForm;
 import org.apache.tapestry5.corelib.components.Checkbox;
 import org.apache.tapestry5.corelib.components.DateField;
@@ -30,7 +31,6 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.BeanBlockContribution;
 import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.PropertyEditContext;
 import org.apache.tapestry5.services.compatibility.Compatibility;
 import org.apache.tapestry5.services.compatibility.Trait;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
index 8546c6c..df58d95 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
@@ -14,14 +14,14 @@ package org.apache.tapestry5.corelib.pages;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Registry;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.services.ServiceActivity;
 import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
index 8fca800..e0ae720 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
@@ -77,7 +77,7 @@ public interface GridDataSource
 
     /**
      * Returns the type of value in the rows, or null if not known. This value is used to create a default {@link
-     * org.apache.tapestry5.beaneditor.BeanModel} when no such model is explicitly provided.
+     * org.apache.tapestry5.beanmodel.BeanModel} when no such model is explicitly provided.
      *
      * @return the row type, or null
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
index 8593110..1daac6b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.grid;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
 
 /**
  * A provider of model data to the sub-components of the {@link org.apache.tapestry5.corelib.components.Grid} component.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java b/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
index cbacd30..5691560 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.grid;
 
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 
 /**
- * Identifies how a single column (identified as a {@link org.apache.tapestry5.beaneditor.PropertyModel}) is sorted.
+ * Identifies how a single column (identified as a {@link org.apache.tapestry5.beanmodel.PropertyModel}) is sorted.
  */
 public class SortConstraint
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
index 0353dfe..bbf61fa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
@@ -13,6 +13,9 @@
 package org.apache.tapestry5.internal;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Orderable;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
index da4c53e..ffd8457 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
@@ -17,10 +17,10 @@ package org.apache.tapestry5.internal.bindings;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.services.Invariant;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.Invariant;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 
@@ -88,7 +88,7 @@ public class PropBinding extends AbstractBinding implements InternalPropBinding
     }
 
     /**
-     * Almost always returns false, unless the conduit provides the {@link org.apache.tapestry5.internal.services.Invariant}
+     * Almost always returns false, unless the conduit provides the {@link org.apache.tapestry5.beanmodel.internal.services.Invariant}
      * annotation.
      */
     @Override
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
index 8dc3418..1bb7e1e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
@@ -14,11 +14,11 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 /**
  * Binding factory for reading and updating JavaBean properties.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
index 63591b1..dd338cf 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
@@ -19,7 +19,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.GridDataSource;
 import org.apache.tapestry5.grid.SortConstraint;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
index 0ee401e..2d013a0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
@@ -16,11 +16,19 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.bindings.LiteralBinding;
 import org.apache.tapestry5.internal.parser.*;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
+import org.apache.tapestry5.internal.services.ComponentTemplateSource;
+import org.apache.tapestry5.internal.services.Instantiator;
+import org.apache.tapestry5.internal.services.PageElementFactory;
+import org.apache.tapestry5.internal.services.PageLoader;
+import org.apache.tapestry5.internal.services.PersistentFieldManager;
+import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.internal.structure.*;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.Location;
@@ -37,7 +45,13 @@ import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentClasses;
+import org.apache.tapestry5.services.ComponentMessages;
+import org.apache.tapestry5.services.ComponentTemplates;
+import org.apache.tapestry5.services.InvalidationEventHub;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.RequestGlobals;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 import org.slf4j.Logger;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
index 73fe6f5..31f004a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
@@ -14,10 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.*;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.Ajax;
+import org.apache.tapestry5.services.ComponentEventRequestFilter;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.Request;
+
 /**
  * A filter that intercepts Ajax-oriented requests, thos that originate on the client-side using XmlHttpRequest. In
  * these cases, the action processing occurs normally, but the response is quite different.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
index 760ecb9..bc893d6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
@@ -15,11 +15,17 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.annotations.Marker;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.AssetRequestDispatcher;
+import org.apache.tapestry5.services.ClasspathAssetAliasManager;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.PathConstructor;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.assets.AssetRequestHandler;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
index f6c6f32..1841ab4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
@@ -15,13 +15,18 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.annotations.IntermediateType;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
 import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.UpdateListenerHub;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
index a94ac4f..120939e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
@@ -13,11 +13,16 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.ScopeConstants;
 import org.apache.tapestry5.ioc.annotations.Scope;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ClientDataEncoder;
+import org.apache.tapestry5.services.ClientDataSink;
+import org.apache.tapestry5.services.PersistentFieldChange;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
 
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
index dff329f..635e295 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
@@ -15,7 +15,12 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.PersistentFieldChange;
+import org.apache.tapestry5.services.PersistentFieldStrategy;
 
 import java.util.Collection;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
index 1d0bd5d..5522d9f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
@@ -12,8 +12,14 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
index 129d1dc..1259bca 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
@@ -15,12 +15,23 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ContextPathEncoder;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.PersistentLocale;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.security.ClientWhitelist;
 
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
index e1247c7..13c5266 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
@@ -13,11 +13,17 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.TrackableComponentEventCallback;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.Traditional;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
index a267d00..4e8f9b7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.model.MutableComponentModelImpl;
@@ -42,7 +43,11 @@ import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.ComponentEvent;
 import org.apache.tapestry5.runtime.ComponentResourcesAware;
 import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventHandler;
+import org.apache.tapestry5.services.TransformConstants;
+import org.apache.tapestry5.services.UpdateListener;
+import org.apache.tapestry5.services.UpdateListenerHub;
 import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
 import org.apache.tapestry5.services.transform.ControlledPackageType;
 import org.apache.tapestry5.services.transform.TransformationSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
index c100178..0ab7b9f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
@@ -14,10 +14,16 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.*;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Traditional;
+
 /**
  * Terminator for the {@link org.apache.tapestry5.services.ComponentRequestHandler} pipeline, that feeds out into the
  * {@link org.apache.tapestry5.services.ComponentEventRequestHandler} and {@link org.apache.tapestry5.services.PageRenderRequestHandler}
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
index 1055df5..896a546 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
@@ -16,6 +16,7 @@ import org.apache.tapestry5.ContextAwareException;
 import org.apache.tapestry5.ExceptionHandlerAssistant;
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.ServiceResources;
@@ -25,7 +26,11 @@ import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.runtime.ComponentEventException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ExceptionReporter;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestExceptionHandler;
+import org.apache.tapestry5.services.Response;
 import org.slf4j.Logger;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java
index 72d2b88..08cd973 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java
@@ -15,9 +15,14 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
index 38e02e7..5f9fcbc 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
@@ -12,8 +12,14 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
index fc0223a..f1d633a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
@@ -14,10 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Traditional;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java
index 9f95796..7c045d7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java
@@ -12,10 +12,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
index 4346eb1..7c259e0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
@@ -1,9 +1,14 @@
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.*;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestExceptionHandler;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
+
 /**
  * Filter for the {@link org.apache.tapestry5.services.RequestHandler} pipeline used to intercept and report
  * exceptions.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java
index f070e09..6c37c8b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java
@@ -14,10 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
index dd0ada6..63c13b3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
@@ -18,8 +18,14 @@ import org.apache.tapestry5.Link;
 import org.apache.tapestry5.LinkSecurity;
 import org.apache.tapestry5.MetaDataConstants;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
index 66c8197..610a052 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
@@ -16,9 +16,16 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
index 962b811..b0ffbee 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
@@ -16,11 +16,18 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.StreamPageContent;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
index 6d661bb..d367409 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
@@ -17,10 +17,14 @@ package org.apache.tapestry5.internal.services;
 import java.util.Map;
 
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClasses;
+import org.apache.tapestry5.services.InvalidationEventHub;
+import org.apache.tapestry5.services.ValueEncoderFactory;
+import org.apache.tapestry5.services.ValueEncoderSource;
 
 @SuppressWarnings("all")
 public class ValueEncoderSourceImpl implements ValueEncoderSource, Runnable
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
index 8175500..60131cb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
@@ -16,9 +16,18 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.AssetConstants;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.AssetSourceImpl;
+import org.apache.tapestry5.internal.services.ClasspathAssetAliasManagerImpl;
+import org.apache.tapestry5.internal.services.ClasspathAssetFactory;
+import org.apache.tapestry5.internal.services.ContextAssetFactory;
+import org.apache.tapestry5.internal.services.ExternalUrlAssetFactory;
+import org.apache.tapestry5.internal.services.IdentityAssetPathConverter;
+import org.apache.tapestry5.internal.services.RequestConstants;
+import org.apache.tapestry5.internal.services.ResourceStreamer;
 import org.apache.tapestry5.internal.services.assets.*;
 import org.apache.tapestry5.internal.services.messages.ClientLocalizationMessageResource;
 import org.apache.tapestry5.ioc.*;
@@ -26,7 +35,20 @@ import org.apache.tapestry5.ioc.annotations.*;
 import org.apache.tapestry5.ioc.services.ChainBuilder;
 import org.apache.tapestry5.ioc.services.FactoryDefaults;
 import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ApplicationGlobals;
+import org.apache.tapestry5.services.AssetFactory;
+import org.apache.tapestry5.services.AssetPathConverter;
+import org.apache.tapestry5.services.AssetRequestDispatcher;
+import org.apache.tapestry5.services.AssetSource;
+import org.apache.tapestry5.services.ClasspathAssetAliasManager;
+import org.apache.tapestry5.services.ClasspathAssetProtectionRule;
+import org.apache.tapestry5.services.ClasspathProvider;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ContextProvider;
+import org.apache.tapestry5.services.Core;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
 import org.apache.tapestry5.services.assets.*;
 import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
index 682fdc4..cdb7441 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
@@ -12,8 +12,57 @@
 
 package org.apache.tapestry5.modules;
 
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.pageload.PageLoaderImpl;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.AjaxPartialResponseRenderer;
+import org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl;
+import org.apache.tapestry5.internal.services.ClientPersistentFieldStorage;
+import org.apache.tapestry5.internal.services.ClientPersistentFieldStorageImpl;
+import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
+import org.apache.tapestry5.internal.services.ComponentModelSource;
+import org.apache.tapestry5.internal.services.CookieSink;
+import org.apache.tapestry5.internal.services.CookieSource;
+import org.apache.tapestry5.internal.services.EndOfRequestEventHub;
+import org.apache.tapestry5.internal.services.FormControlNameManager;
+import org.apache.tapestry5.internal.services.FormControlNameManagerImpl;
+import org.apache.tapestry5.internal.services.InternalComponentInvalidationEventHub;
+import org.apache.tapestry5.internal.services.InternalRequestGlobals;
+import org.apache.tapestry5.internal.services.InternalRequestGlobalsImpl;
+import org.apache.tapestry5.internal.services.LinkDecorationListener;
+import org.apache.tapestry5.internal.services.LinkSource;
+import org.apache.tapestry5.internal.services.LinkSourceImpl;
+import org.apache.tapestry5.internal.services.LocalizationSetterImpl;
+import org.apache.tapestry5.internal.services.PageContentTypeAnalyzer;
+import org.apache.tapestry5.internal.services.PageContentTypeAnalyzerImpl;
+import org.apache.tapestry5.internal.services.PageElementFactory;
+import org.apache.tapestry5.internal.services.PageElementFactoryImpl;
+import org.apache.tapestry5.internal.services.PageLoader;
+import org.apache.tapestry5.internal.services.PageMarkupRenderer;
+import org.apache.tapestry5.internal.services.PageMarkupRendererImpl;
+import org.apache.tapestry5.internal.services.PageRenderQueue;
+import org.apache.tapestry5.internal.services.PageRenderQueueImpl;
+import org.apache.tapestry5.internal.services.PageResponseRenderer;
+import org.apache.tapestry5.internal.services.PageResponseRendererImpl;
+import org.apache.tapestry5.internal.services.PageSource;
+import org.apache.tapestry5.internal.services.PageSourceImpl;
+import org.apache.tapestry5.internal.services.PersistentFieldManager;
+import org.apache.tapestry5.internal.services.PersistentFieldManagerImpl;
+import org.apache.tapestry5.internal.services.ReloadHelper;
+import org.apache.tapestry5.internal.services.ReloadHelperImpl;
+import org.apache.tapestry5.internal.services.RequestPageCache;
+import org.apache.tapestry5.internal.services.RequestPageCacheImpl;
+import org.apache.tapestry5.internal.services.RequestSecurityManager;
+import org.apache.tapestry5.internal.services.RequestSecurityManagerImpl;
+import org.apache.tapestry5.internal.services.ResourceDigestManager;
+import org.apache.tapestry5.internal.services.ResourceDigestManagerImpl;
+import org.apache.tapestry5.internal.services.ResourceStreamer;
+import org.apache.tapestry5.internal.services.ResourceStreamerImpl;
+import org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl;
+import org.apache.tapestry5.internal.services.TemplateParser;
+import org.apache.tapestry5.internal.services.TemplateParserImpl;
+import org.apache.tapestry5.internal.services.UnknownActivationContextHandler;
+import org.apache.tapestry5.internal.services.UnknownActivationContextHandlerImpl;
 import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
 import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
 import org.apache.tapestry5.internal.structure.ComponentPageElementResourcesSource;
@@ -23,7 +72,12 @@ import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.Core;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
 import org.apache.tapestry5.services.transform.ControlledPackageType;
 
 import javax.servlet.http.Cookie;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
index 9ecddaa..56e996a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
@@ -19,10 +19,20 @@ import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.annotations.ContentType;
 import org.apache.tapestry5.beaneditor.DataTypeConstants;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.*;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.data.SecureOption;
 import org.apache.tapestry5.grid.GridConstants;
 import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.internal.*;
+import org.apache.tapestry5.internal.ComponentOverrideImpl;
+import org.apache.tapestry5.internal.DefaultNullFieldStrategy;
+import org.apache.tapestry5.internal.DefaultValueLabelProvider;
+import org.apache.tapestry5.internal.InternalConstants;
+import org.apache.tapestry5.internal.InternalSymbols;
+import org.apache.tapestry5.internal.PropertyOverridesImpl;
+import org.apache.tapestry5.internal.TapestryInternalUtils;
+import org.apache.tapestry5.internal.ZeroNullFieldStrategy;
 import org.apache.tapestry5.internal.alerts.AlertManagerImpl;
 import org.apache.tapestry5.internal.beaneditor.EnvironmentMessages;
 import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java b/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
index 692a826..2665378 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
@@ -18,8 +18,10 @@ import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Id;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.services.MapMessages;
 import org.apache.tapestry5.internal.services.MarkupWriterImpl;
 import org.apache.tapestry5.ioc.*;
@@ -32,7 +34,39 @@ import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.model.ParameterModel;
 import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ApplicationStateCreator;
+import org.apache.tapestry5.services.ApplicationStateManager;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
+import org.apache.tapestry5.services.AssetFactory;
+import org.apache.tapestry5.services.AssetSource;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.BindingFactory;
+import org.apache.tapestry5.services.BindingSource;
+import org.apache.tapestry5.services.ClasspathAssetAliasManager;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Context;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FieldTranslatorSource;
+import org.apache.tapestry5.services.FieldValidatorSource;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.Html5Support;
+import org.apache.tapestry5.services.HttpServletRequestHandler;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderLinkSource;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.ResourceDigestGenerator;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.Session;
+import org.apache.tapestry5.services.TranslatorSource;
+import org.apache.tapestry5.services.ValidationConstraintGenerator;
+import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.easymock.IAnswer;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
index 80c4a1e..f7428a2 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
@@ -13,8 +13,8 @@
 package org.apache.tapestry5.corelib.base;
 
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
index af3ba5f..53d66ce 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
@@ -22,7 +22,8 @@ import static org.easymock.EasyMock.anyObject;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.integration.app1.data.RegistrationData;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.BeanValidationContextImpl;
@@ -30,7 +31,6 @@ import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.BeanEditContext;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.easymock.EasyMock;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
index d167874..fd7482d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
index 19eeee7..56f56ce 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.integration.app1.base;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Retain;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.corelib.components.BeanEditForm;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 /**
  * For testing TAPESTRY-1518.
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
index cf1d1ff..82b9934 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
@@ -15,13 +15,13 @@
 package org.apache.tapestry5.integration.app1.pages;
 
 import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.components.Grid;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.integration.app1.services.MusicLibrary;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java
index a89c039..0df26b0 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java
@@ -20,13 +20,13 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 public class EmptyGrid
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java
index bf904b6..56eecef 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java
@@ -1,10 +1,10 @@
 package org.apache.tapestry5.integration.app1.pages;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.Collection;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
index 563fc46..84f1f8a 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.integration.app1.pages;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.integration.app1.data.SimpleTrack;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.integration.app1.services.MusicLibrary;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
index ae66e7f..5dc5d3f 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal;
 
 /**
- * Used as test when setting the order of properties in a {@link org.apache.tapestry5.beaneditor.BeanModel}.
+ * Used as test when setting the order of properties in a {@link org.apache.tapestry5.beanmodel.BeanModel}.
  */
 public class DataBean
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
index 995fa33..ad41dba 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
@@ -16,6 +16,8 @@ package org.apache.tapestry5.internal;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.beaneditor.Width;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Resource;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
index f8db28b..59efbec 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
@@ -14,8 +14,9 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.easymock.EasyMock;
 import org.testng.annotations.DataProvider;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
index f0968ca..ee2fc93 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
index 3305ff4..f90ab07 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.internal.grid;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.SortConstraint;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java
index 83b1067..9d6c871 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java
@@ -14,18 +14,19 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.BeanModelSourceBuilder;
-import org.apache.tapestry5.beaneditor.PropertyModel;
 import org.apache.tapestry5.beaneditor.RelativePosition;
 import org.apache.tapestry5.beaneditor.Sortable;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelSourceBuilder;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.internal.services.PropertyExpressionException;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.internal.PropertyOrderBean;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.easymock.EasyMock;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
index f9c69a2..2e267e6 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
@@ -14,11 +14,16 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ApplicationStateContribution;
+import org.apache.tapestry5.services.ApplicationStateCreator;
+import org.apache.tapestry5.services.ApplicationStateManager;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
 import org.easymock.EasyMock;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.isA;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
index a70eab0..52cfd07 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
@@ -15,11 +15,16 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Block;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BeanBlockContribution;
+import org.apache.tapestry5.services.BeanBlockOverrideSource;
+import org.apache.tapestry5.services.BeanBlockSource;
+import org.apache.tapestry5.services.DisplayBlockContribution;
+import org.apache.tapestry5.services.EditBlockContribution;
 import org.testng.annotations.Test;
 
 import java.util.Collection;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java
index 78502e6..af3e755 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.beaneditor.BeanModelSourceBuilder;
-import org.apache.tapestry5.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.BeanModelSourceBuilder;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.testng.annotations.Test;
 
 /**
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
index a23a3a5..56b8fcf 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
@@ -13,7 +13,7 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 
 /**
  * Tests a BeanModelSource created using Tapestry-IoC.
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
index b3f17a1..a9cb726 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
@@ -14,11 +14,21 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.URLEventContext;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.ContextPathEncoder;
+import org.apache.tapestry5.services.ContextValueEncoder;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.security.ClientWhitelist;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
index 78e71c5..9c1df38 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
@@ -18,11 +18,20 @@ import org.apache.tapestry5.Link;
 import org.apache.tapestry5.LinkSecurity;
 import org.apache.tapestry5.MetaDataConstants;
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ContextPathEncoder;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.security.ClientWhitelist;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
index fd4d8f9..84f01c5 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
@@ -20,11 +20,17 @@ import java.util.List;
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.RequestGlobals;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
index a861883..a0cc8e3 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
@@ -21,18 +21,19 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.tapestry5.Block;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
 import org.apache.tapestry5.beaneditor.NonVisual;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.services.Invariant;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.integration.app1.data.IntegerHolder;
-import org.apache.tapestry5.internal.InternalPropertyConduit;
 import org.apache.tapestry5.internal.bindings.PropBindingFactoryTest;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.internal.util.IntegerRange;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.PropertyConduitSource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
index 0157537..9690723 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
@@ -17,9 +17,14 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.LinkSecurity;
 import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
index 24fdf32..e4874dd 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
@@ -14,8 +14,13 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.Context;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
 import org.testng.annotations.Test;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
index 92b109c..73b94d3 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
@@ -18,9 +18,21 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.ComponentResourcesCommon;
 import org.apache.tapestry5.ContentType;
 import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.ComponentModelSource;
+import org.apache.tapestry5.internal.services.DocumentLinker;
+import org.apache.tapestry5.internal.services.ForceDevelopmentModeModule;
+import org.apache.tapestry5.internal.services.Instantiator;
+import org.apache.tapestry5.internal.services.LinkSource;
+import org.apache.tapestry5.internal.services.PageContentTypeAnalyzer;
+import org.apache.tapestry5.internal.services.PageRenderQueue;
+import org.apache.tapestry5.internal.services.PageResponseRenderer;
+import org.apache.tapestry5.internal.services.RequestPageCache;
+import org.apache.tapestry5.internal.services.RequestSecurityManager;
+import org.apache.tapestry5.internal.services.TemplateParser;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
 import org.apache.tapestry5.internal.structure.Page;
@@ -37,7 +49,14 @@ import org.apache.tapestry5.root.FieldComponent;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ClientBehaviorSupport;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.InvalidationListener;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.easymock.EasyMock;
 import org.testng.annotations.AfterMethod;
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java
index 19f3528..ac249c3 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.ioc.modules;
 
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.ioc.*;
 import org.apache.tapestry5.ioc.annotations.*;
diff --git a/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy b/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy
index 9b7a4f2..1e8e37b 100644
--- a/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy
+++ b/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy
@@ -1,6 +1,6 @@
 package ioc.specs
 
-import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl
 import org.apache.tapestry5.ioc.internal.util.TapestryException
 import org.apache.tapestry5.ioc.util.ExceptionUtils
 import org.apache.tapestry5.ioc.util.ExceptionWrapper
diff --git a/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy b/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy
index 3c63806..0e8aabf 100644
--- a/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy
+++ b/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy
@@ -7,6 +7,7 @@ import java.lang.reflect.Method
 
 import org.apache.tapestry5.beaneditor.DataType
 import org.apache.tapestry5.beaneditor.Validate
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl
 import org.apache.tapestry5.ioc.annotations.Scope
 import org.apache.tapestry5.ioc.internal.services.*
 import org.apache.tapestry5.ioc.internal.util.Pair
diff --git a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java
index 0327399..ca63104 100644
--- a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java
+++ b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.kaptcha.modules;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.ioc.*;
 import org.apache.tapestry5.ioc.annotations.Contribute;
@@ -24,7 +25,12 @@ import org.apache.tapestry5.kaptcha.KaptchaSymbolConstants;
 import org.apache.tapestry5.kaptcha.internal.services.KaptchaDataTypeAnalyzer;
 import org.apache.tapestry5.kaptcha.internal.services.KaptchaProducerImpl;
 import org.apache.tapestry5.kaptcha.services.KaptchaProducer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BeanBlockContribution;
+import org.apache.tapestry5.services.BeanBlockSource;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.DataTypeAnalyzer;
+import org.apache.tapestry5.services.EditBlockContribution;
+import org.apache.tapestry5.services.LibraryMapping;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
 
 /**
diff --git a/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java b/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
index 0ae3537..b92a66e 100644
--- a/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
+++ b/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
@@ -16,10 +16,16 @@ package org.apache.tapestry5.upload.internal.services;
 
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.tapestry5.annotations.Events;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestFilter;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.ComponentSource;
+import org.apache.tapestry5.services.Traditional;
 import org.apache.tapestry5.upload.services.MultipartDecoder;
 import org.apache.tapestry5.upload.services.UploadEvents;
 


[tapestry-5] 01/02: Merge remote-tracking branch 'github/TAP5-2613' into java9modules

Posted by th...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a commit to branch java9modules
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit cceee675af47d3176897d99f08fb75125b068052
Merge: 88350d9 8135af4
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Fri May 29 15:39:35 2020 -0300

    Merge remote-tracking branch 'github/TAP5-2613' into java9modules

 .../services/PropertyConduitSourceImpl.java        |   1 -
 build.gradle                                       |  31 +-
 .../internal/services/DefaultDataTypeAnalyzer.java |   1 -
 gradle/wrapper/gradle-wrapper.jar                  | Bin 54727 -> 56177 bytes
 gradle/wrapper/gradle-wrapper.properties           |   2 +-
 plastic/build.gradle                               |   5 +
 .../internal/plastic/asm/tree/package.html         |   3 -
 .../{LocalVariable.java => LocalVariableImpl.java} |   0
 quickstart/build.gradle                            |   2 +-
 src/javadoc/stylesheet7.css                        |  74 +++--
 .../src/main/java/org/apache/tapestry5/Link.java   |   4 +-
 .../integration/app1/pages/TimeIntervalDemo.groovy |   6 +-
 .../ioc/internal/services/cron/CronExpression.java |  66 ++--
 tapestry-javadoc/build.gradle                      |  21 +-
 .../apache/tapestry5/javadoc/ClassDescription.java | 161 ++++++----
 .../tapestry5/javadoc/DocCommentTreeProvider.java  |  10 +
 .../tapestry5/javadoc/ParameterDescription.java    |  61 ++--
 .../tapestry5/javadoc/TapestryDocTaglet.java       | 132 ++++----
 .../javadoc/ParameterDescriptionSpec.groovy        | 352 ++++++++++++++-------
 tapestry-jpa/build.gradle                          |   2 +-
 .../java/org/apache/tapestry5/json/JSONObject.java |   2 +-
 tapestry-spring/build.gradle                       |   3 +-
 .../standard/TapestrySpringIntegrationTest.java    |   2 +-
 .../apache/tapestry5/test/SeleniumTestCase.java    |   2 +-
 24 files changed, 551 insertions(+), 392 deletions(-)

diff --cc build.gradle
index 0d604b4,c468453..e10ebd7
--- a/build.gradle
+++ b/build.gradle
@@@ -329,9 -323,12 +325,13 @@@ task aggregateJavadoc(type: Javadoc) 
      destinationDir file("$buildDir/documentation/javadocs")
  
      def tapestryStylesheet = file("src/javadoc/stylesheet7.css")
 +    int thisYear = java.time.Year.now().getValue()
  
-     configure(options) {
+     def allMainSourceSets = subprojects*.sourceSets*.main.flatten()
+     def allMainJavaFiles = allMainSourceSets*.java
+     def allMainJavaSrcDirs = allMainJavaFiles*.srcDirs
+ 
+     options {
          splitIndex true
          linkSource true
          stylesheetFile tapestryStylesheet
@@@ -342,17 -339,16 +342,17 @@@
          use = true // 'use' seems to be a reserved word for the DSL
          links "https://docs.oracle.com/javase/8/docs/api/"
          links "https://docs.oracle.com/javaee/7/api/"
-         addStringOption "tagletpath", configurations.javadoc.asPath
-         addStringOption "taglet", "org.apache.tapestry5.javadoc.TapestryDocTaglet"
+         tagletPath List.copyOf((Set) configurations.javadoc.files)
+         //  Uncomment jFlags to debug `./gradlew aggregateJavadoc`
+ //        jFlags '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
+         addStringOption '-source-path', files(allMainJavaSrcDirs.flatten()).asPath
+         addStringOption 'source', '8'
+         taglets "org.apache.tapestry5.javadoc.TapestryDocTaglet"
          exclude "org/apache/tapestry5/internal/plastic/asm/**"
          exclude "org/apache/tapestry5/internal/webresources/**"
 +        exclude "org/apache/tapestry5/webresources/modules/**"
      }
  
-     def allMainSourceSets = subprojects*.sourceSets*.main.flatten()
-     def allMainJavaFiles = allMainSourceSets*.java
-     def allMainJavaSrcDirs = allMainJavaFiles*.srcDirs
- 
      source allMainJavaFiles
  
      classpath += files(allMainSourceSets*.compileClasspath)
@@@ -438,14 -434,9 +438,9 @@@ task combinedJacocoReport(type:JacocoRe
  
  task continuousIntegration {
      dependsOn subprojects.build, 'tapestry-core:testWithPrototype', aggregateJavadoc, combinedJacocoReport
 -    description "Task executed on Jenkins CI server after SVN commits"
 +    description "Task executed on Jenkins CI server after Git commits"
  }
  
- task wrapper(type: Wrapper) {
-     gradleVersion = '4.3.1'
-     description "Regenerates the Gradle Wrapper files"
- }
- 
  task zippedSources(type: Zip) {
      description "Creates a combined Zip file of all sub-project's sources"
      group "Release artifact"
diff --cc plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/package.html
index 9e7cd7a,e530df1..ffdcdfc
mode 100644,100755..100644
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/package.html
+++ b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/tree/package.html