You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2006/10/27 20:00:09 UTC

svn commit: r468481 [1/3] - in /tapestry/tapestry5/tapestry-core/trunk: ./ src/main/aspect/org/apache/tapestry/internal/aspects/ src/main/java/org/apache/tapestry/ src/main/java/org/apache/tapestry/annotations/ src/main/java/org/apache/tapestry/dom/ sr...

Author: hlship
Date: Fri Oct 27 11:00:05 2006
New Revision: 468481

URL: http://svn.apache.org/viewvc?view=rev&rev=468481
Log:
Merge changes from hlship-20061027-removeaspectj branch into trunk

Added:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/ConcurrentBarrier.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/ConcurrentBarrier.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/Holder.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Holder.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/Invokable.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Invokable.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/ConcurrentBarrierTest.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/ConcurrentBarrierTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/ConcurrentTarget.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/ConcurrentTarget.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/ConcurrentTargetWrapper.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/ConcurrentTargetWrapper.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java
      - copied unchanged from r468480, tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java
Removed:
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/AbstractClassTargetting.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/CatchNullParameters.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/Concurrence.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalCatchNullParameters.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalConcurrence.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalOneShotChecks.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/OneShotChecks.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/annotations/Concurrent.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/annotations/OneShot.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/annotations/SuppressNullCheck.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/annotations/Utility.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/CatchNullParametersAspectTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/ConcurrenceAspectTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/ConcurrentTarget.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/ConcurrentTargetWrapper.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/InternalUtilityAspectTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/NullTarget.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/OneShotChecksAspectTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/PartiallySuppressedNullTarget.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/aspects/SuppressedNullTarget.java
Modified:
    tapestry/tapestry5/tapestry-core/trunk/.classpath
    tapestry/tapestry5/tapestry-core/trunk/.project
    tapestry/tapestry5/tapestry-core/trunk/pom.xml
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/TapestryConstants.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixin.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/MixinClasses.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixins.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Element.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Node.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/InternalConstants.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/AbstractBinding.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BasePropBinding.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBinding.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBindingFactory.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/PropBindingFactory.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/DecoratorDefImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ModuleImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingConfigurationWrapper.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingMappedConfigurationWrapper.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingOrderedConfigurationWrapper.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFactoryClassPool.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassPropertyAdapterImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ExceptionInfoImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAccessImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAdapterImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/TypeCoercerImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CheckForUpdatesFilter.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentClassTransformerImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentTemplateSourceImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ConstructorArg.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InfrastructureImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/MixinWorker.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageElementFactoryImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PersistentFieldBundleImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PersistentFieldChangeImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PersistentFieldManagerImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/SessionPersistentFieldStrategy.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/DependencyNode.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/InternalUtils.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/Orderer.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/IOCConstants.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/Orderable.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/MethodSignature.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/runtime/LifecycleEvent.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/FormSupport.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/MethodSignature.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TransformConstants.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TransformUtils.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TestBase.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/CollectionFactory.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/Defense.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/StrategyRegistry.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/util/UtilMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties
    tapestry/tapestry5/tapestry-core/trunk/src/test/conf/testng.xml
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/BaseLocatableTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/components/AbstractTracer.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/components/Echo.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/components/Tracer.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/mixins/Emphasis.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/mixins/TracerMixin.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/InstanceMixin.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/RenderPhaseOrder.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TargetMessages.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/bindings/PropBindingFactoryTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/InterceptorStackBuilderTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/ioc/services/TypeCoercerImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldAccessBean.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MixinWorkerTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ParameterComponent.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ReadOnlyBean.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/BarneyModule.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/services/SyncCostBench.java

Modified: tapestry/tapestry5/tapestry-core/trunk/.classpath
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/.classpath?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/.classpath (original)
+++ tapestry/tapestry5/tapestry-core/trunk/.classpath Fri Oct 27 11:00:05 2006
@@ -1,13 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/aspect"/>
 	<classpathentry kind="lib" path="src/main/resources"/>
 	<classpathentry kind="src" path="src/test/java"/>
 	<classpathentry kind="lib" path="src/test/resources"/>
 	<classpathentry kind="lib" path="src/test/conf"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.ajdt.core.ASPECTJRT_CONTAINER"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

Modified: tapestry/tapestry5/tapestry-core/trunk/.project
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/.project?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/.project (original)
+++ tapestry/tapestry5/tapestry-core/trunk/.project Fri Oct 27 11:00:05 2006
@@ -6,7 +6,7 @@
 	</projects>
 	<buildSpec>
 		<buildCommand>
-			<name>org.eclipse.ajdt.core.ajbuilder</name>
+			<name>org.eclipse.jdt.core.javabuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
@@ -17,7 +17,6 @@
 		</buildCommand>
 	</buildSpec>
 	<natures>
-		<nature>org.eclipse.ajdt.ui.ajnature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.maven.ide.eclipse.maven2Nature</nature>
 	</natures>

Modified: tapestry/tapestry5/tapestry-core/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/pom.xml?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/pom.xml (original)
+++ tapestry/tapestry5/tapestry-core/trunk/pom.xml Fri Oct 27 11:00:05 2006
@@ -43,10 +43,6 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>aspectj</groupId>
-            <artifactId>aspectjrt</artifactId>
-        </dependency>
-        <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>servlet-api</artifactId>
         </dependency>
@@ -74,10 +70,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>aspectj-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
@@ -86,6 +78,16 @@
                     </suiteXmlFiles>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <optimize>true</optimize>
+                    <verbose>true</verbose>
+                </configuration>
+            </plugin>          
         </plugins>
     </build>
     <reporting>

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/BaseLocatable.java Fri Oct 27 11:00:05 2006
@@ -14,14 +14,9 @@
 
 package org.apache.tapestry;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
-
 /**
  * Base implementation of {@link org.apache.tapestry.Locatable}.
- * 
- * 
  */
-@SuppressNullCheck
 public class BaseLocatable implements Locatable
 {
     private final Location _location;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/TapestryConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/TapestryConstants.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/TapestryConstants.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/TapestryConstants.java Fri Oct 27 11:00:05 2006
@@ -14,16 +14,15 @@
 
 package org.apache.tapestry;
 
-import org.apache.tapestry.internal.annotations.Utility;
-
 /**
  * Collection of common constant values used throughout Tapestry.
- * 
- * 
  */
-@Utility
 public final class TapestryConstants
 {
     /** Default client event name, used in most situations. */
     public static final String DEFAULT_EVENT = "action";
+
+    private TapestryConstants()
+    {
+    }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixin.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixin.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixin.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixin.java Fri Oct 27 11:00:05 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 package org.apache.tapestry.annotations;
 
 import static java.lang.annotation.ElementType.FIELD;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/MixinClasses.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/MixinClasses.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/MixinClasses.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/MixinClasses.java Fri Oct 27 11:00:05 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 package org.apache.tapestry.annotations;
 
 import static java.lang.annotation.ElementType.FIELD;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixins.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixins.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixins.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/Mixins.java Fri Oct 27 11:00:05 2006
@@ -1,3 +1,17 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
 package org.apache.tapestry.annotations;
 
 import static java.lang.annotation.ElementType.FIELD;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Element.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Element.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Element.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Element.java Fri Oct 27 11:00:05 2006
@@ -23,14 +23,10 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
-
 /**
  * An element that will render with a begin tag and attributes, a body, and an end tag. Also acts as
  * a factory for enclosed Element, Text and Comment nodes. TODO: Support for CDATA nodes. Do we need
  * Entity nodes?
- * 
- * 
  */
 public final class Element extends Node
 {
@@ -73,7 +69,6 @@
      *            the value for the attribute. A value of null is allowed, and no attribute will be
      *            added to the element.
      */
-    @SuppressNullCheck
     public void addAttribute(String name, String value)
     {
         notBlank(name, "name");

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Node.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Node.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Node.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/dom/Node.java Fri Oct 27 11:00:05 2006
@@ -20,12 +20,8 @@
 import java.io.StringWriter;
 import java.util.List;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
-
 /**
  * A node within the DOM.
- * 
- * 
  */
 public abstract class Node
 {
@@ -39,7 +35,6 @@
      * 
      * @param container
      */
-    @SuppressNullCheck
     protected Node(Node container)
     {
         _container = container;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/InternalConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/InternalConstants.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/InternalConstants.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/InternalConstants.java Fri Oct 27 11:00:05 2006
@@ -14,12 +14,6 @@
 
 package org.apache.tapestry.internal;
 
-import org.apache.tapestry.internal.annotations.Utility;
-
-/**
- * 
- */
-@Utility
 public final class InternalConstants
 {
     /**
@@ -33,4 +27,8 @@
 
     /** Binding expression prefix used to bind to a property of the component. */
     public static final String PROP_BINDING_PREFIX = "prop";
+
+    private InternalConstants()
+    {
+    }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/MessagesImpl.java Fri Oct 27 11:00:05 2006
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry.internal;
 
-import static org.apache.tapestry.util.CollectionFactory.newMap;
 import static org.apache.tapestry.util.CollectionFactory.newSet;
+import static org.apache.tapestry.util.CollectionFactory.newThreadSafeMap;
 
 import java.util.Enumeration;
 import java.util.Locale;
@@ -25,15 +25,11 @@
 
 import org.apache.tapestry.MessageFormatter;
 import org.apache.tapestry.Messages;
-import org.apache.tapestry.internal.annotations.Concurrent;
 
 /**
  * Implementation of {@link org.apache.tapestry.Messages} based around a
  * {@link java.util.ResourceBundle}.
- * 
- * 
  */
-@Concurrent
 public class MessagesImpl implements Messages
 {
     private final ResourceBundle _bundle;
@@ -41,7 +37,7 @@
     private final Set<String> _keys = newSet();
 
     /** String key to MF instance. */
-    private Map<String, MessageFormatter> _cache = newMap();
+    private Map<String, MessageFormatter> _cache = newThreadSafeMap();
 
     /**
      * Finds the messages for a given Messages utility class. Strings the trailing "Messages" and
@@ -87,26 +83,24 @@
         return "[" + key.toUpperCase() + "]";
     }
 
-    @Concurrent.Read
     public MessageFormatter getFormatter(String key)
     {
         MessageFormatter result = _cache.get(key);
 
         if (result == null)
-            result = fillInCache(key);
+        {
+            result = buildMessageFormatter(key);
+            _cache.put(key, result);
+        }
 
         return result;
     }
 
-    @Concurrent.Write
-    private MessageFormatter fillInCache(String key)
+    private MessageFormatter buildMessageFormatter(String key)
     {
         String format = get(key);
-        MessageFormatter result = new MessageFormatterImpl(format);
 
-        _cache.put(key, result);
-
-        return result;
+        return new MessageFormatterImpl(format);
     }
 
     public String format(String key, Object... args)

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryException.java Fri Oct 27 11:00:05 2006
@@ -16,16 +16,12 @@
 
 import org.apache.tapestry.Locatable;
 import org.apache.tapestry.Location;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 
 /**
  * Exception class used as a replacement for {@link java.lang.RuntimeException} when the exception
  * is related to a particular location.
- * 
- * 
  */
-@SuppressNullCheck
 public class TapestryException extends RuntimeException implements Locatable
 {
     private static final long serialVersionUID = 6396903640977182682L;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/AbstractBinding.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/AbstractBinding.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/AbstractBinding.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/AbstractBinding.java Fri Oct 27 11:00:05 2006
@@ -18,14 +18,10 @@
 import org.apache.tapestry.Binding;
 import org.apache.tapestry.Location;
 import org.apache.tapestry.internal.TapestryException;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 
 /**
  * Abstract base class for bindings.
- * 
- * 
  */
-@SuppressNullCheck
 public abstract class AbstractBinding extends BaseLocatable implements Binding
 {
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BasePropBinding.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BasePropBinding.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BasePropBinding.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BasePropBinding.java Fri Oct 27 11:00:05 2006
@@ -16,16 +16,12 @@
 
 import org.apache.tapestry.Location;
 import org.apache.tapestry.internal.TapestryException;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 
 /**
  * Base class for bindings created by the
  * {@link org.apache.tapestry.internal.bindings.PropBindingFactory}. A subclass of this is created
  * at runtime.
- * 
- * 
  */
-@SuppressNullCheck
 public abstract class BasePropBinding extends AbstractBinding
 {
     private final String _toString;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java Fri Oct 27 11:00:05 2006
@@ -17,16 +17,15 @@
 import org.apache.tapestry.Binding;
 import org.apache.tapestry.Messages;
 import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
 
-/**
- * 
- */
-@Utility
 final class BindingsMessages
 {
     private static final Messages MESSAGES = MessagesImpl.forClass(BindingsMessages.class);
 
+    private BindingsMessages()
+    {
+    }
+
     static String bindingIsReadOnly(Binding binding)
     {
         return MESSAGES.format("binding-is-read-only", binding);
@@ -39,7 +38,11 @@
 
     static String noSuchProperty(Class targetClass, String propertyName, String propertyPath)
     {
-        return MESSAGES.format("no-such-property", targetClass.getName(), propertyName, propertyPath);
+        return MESSAGES.format(
+                "no-such-property",
+                targetClass.getName(),
+                propertyName,
+                propertyPath);
     }
 
     static String writeOnlyProperty(String propertyName, Class clazz, String propertyPath)

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBinding.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBinding.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBinding.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBinding.java Fri Oct 27 11:00:05 2006
@@ -15,14 +15,10 @@
 package org.apache.tapestry.internal.bindings;
 
 import org.apache.tapestry.Location;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 
 /**
  * Binding type for literal string values, usually supplied in-line in the component template.
- * 
- * 
  */
-@SuppressNullCheck
 public class LiteralBinding extends AbstractBinding
 {
     private final String _description;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBindingFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBindingFactory.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBindingFactory.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/LiteralBindingFactory.java Fri Oct 27 11:00:05 2006
@@ -17,16 +17,13 @@
 import org.apache.tapestry.Binding;
 import org.apache.tapestry.ComponentResources;
 import org.apache.tapestry.Location;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.services.BindingFactory;
 
 /**
  * Binding factory that treats the expression as a literal string. The simplest form of binding.
  * 
- * 
  * @see org.apache.tapestry.internal.bindings.LiteralBinding
  */
-@SuppressNullCheck
 public class LiteralBindingFactory implements BindingFactory
 {
     public Binding newBinding(String description, ComponentResources component, String expression,

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/PropBindingFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/PropBindingFactory.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/PropBindingFactory.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/bindings/PropBindingFactory.java Fri Oct 27 11:00:05 2006
@@ -26,7 +26,6 @@
 import org.apache.tapestry.Location;
 import org.apache.tapestry.events.InvalidationListener;
 import org.apache.tapestry.internal.TapestryException;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.services.ClassFab;
 import org.apache.tapestry.ioc.services.ClassFabUtils;
 import org.apache.tapestry.ioc.services.ClassFactory;
@@ -40,10 +39,7 @@
  * Binding factory for reading and updating JavaBean properties. Uses
  * {@link org.apache.tapestry.ioc.services.PropertyAccess} to analyze the properties, and generates
  * a binding class using the component {@link org.apache.tapestry.ioc.services.ClassFactory}.
- * 
- * 
  */
-@SuppressNullCheck
 public class PropBindingFactory implements BindingFactory, InvalidationListener
 {
     private final PropertyAccess _access;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/DecoratorDefImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/DecoratorDefImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/DecoratorDefImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/DecoratorDefImpl.java Fri Oct 27 11:00:05 2006
@@ -20,7 +20,6 @@
 import java.lang.reflect.Method;
 import java.util.List;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.IdMatcher;
 import org.apache.tapestry.ioc.ModuleBuilderSource;
@@ -44,7 +43,6 @@
 
     private final String[] _constraints;
 
-    @SuppressNullCheck
     public DecoratorDefImpl(String decoratorId, Method decoratorMethod, String[] patterns,
             String[] constraints)
     {
@@ -80,7 +78,8 @@
         return _decoratorId;
     }
 
-    public ServiceDecorator createDecorator(ModuleBuilderSource moduleBuilderSource, ServiceResources resources)
+    public ServiceDecorator createDecorator(ModuleBuilderSource moduleBuilderSource,
+            ServiceResources resources)
     {
         return new ServiceDecoratorImpl(_decoratorMethod, moduleBuilderSource, resources);
     }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java Fri Oct 27 11:00:05 2006
@@ -26,17 +26,16 @@
 
 import org.apache.tapestry.Messages;
 import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
 import org.apache.tapestry.ioc.def.ContributionDef;
 import org.apache.tapestry.ioc.def.ServiceDef;
 
-/**
- * 
- */
-@Utility
 public final class IOCMessages
 {
     private static final Messages MESSAGES = MessagesImpl.forClass(IOCMessages.class);
+
+    private IOCMessages()
+    {
+    }
 
     static String buildMethodConflict(Method conflict, String existing)
     {

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java Fri Oct 27 11:00:05 2006
@@ -14,14 +14,15 @@
 
 package org.apache.tapestry.internal.ioc;
 
-import org.apache.tapestry.internal.annotations.Utility;
-
 /**
  * Contains static methods used by proxies generated at runtime.
  */
-@Utility
 public final class IOCProxyUtilities
 {
+    private IOCProxyUtilities()
+    {
+    }
+
     /**
      * Invoked by a proxy when the registry has shutdown.
      * 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ModuleImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ModuleImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ModuleImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ModuleImpl.java Fri Oct 27 11:00:05 2006
@@ -30,7 +30,6 @@
 import java.util.Set;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.ObjectCreator;
 import org.apache.tapestry.ioc.ServiceBuilderResources;
@@ -78,7 +77,6 @@
     /** Keyed on fully qualified service id; values are instantiated services (proxies). */
     private final Map<String, Object> _services = newMap();
 
-    @SuppressNullCheck
     public <T> T getService(String serviceId, Class<T> serviceInterface, Module module)
     {
         notBlank(serviceId, "serviceId");
@@ -135,7 +133,6 @@
         return _registry.findDecoratorsForService(sd);
     }
 
-    @SuppressNullCheck
     public Collection<String> findServiceIdsForInterface(Class serviceInterface, Module module)
     {
         notNull(serviceInterface, "serviceInterface");
@@ -393,10 +390,8 @@
         // Check to see if the registry has shutdown. The registryShutdown() method
         // throws IllegalStateException.
 
-        builder.addln(
-                "if (_shutdown) %s.registryShutdown(\"%s\");",
-                IOCProxyUtilities.class.getName(),
-                serviceId);
+        builder.addln("if (_shutdown) %s.registryShutdown(\"%s\");", IOCProxyUtilities.class
+                .getName(), serviceId);
 
         // We can release the creator after invoking it, we only create the service once.
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java Fri Oct 27 11:00:05 2006
@@ -25,11 +25,10 @@
 import java.util.Set;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.ioc.services.ClassFactoryImpl;
 import org.apache.tapestry.internal.ioc.services.RegistryShutdownHubImpl;
 import org.apache.tapestry.internal.ioc.services.ThreadCleanupHubImpl;
+import org.apache.tapestry.internal.util.OneShotLock;
 import org.apache.tapestry.internal.util.Orderer;
 import org.apache.tapestry.ioc.Configuration;
 import org.apache.tapestry.ioc.IOCConstants;
@@ -55,10 +54,6 @@
 import org.apache.tapestry.ioc.services.ThreadCleanupHub;
 import org.apache.tapestry.util.CollectionFactory;
 
-/**
- * 
- */
-@OneShot
 public class RegistryImpl implements Registry, InternalRegistry
 {
     private static final String REGISTRY_SHUTDOWN_HUB_SERVICE_ID = "tapestry.ioc.RegistryShutdownHub";
@@ -73,6 +68,8 @@
 
     static final String LOG_SOURCE_SERVICE_ID = "tapestry.ioc.LogSource";
 
+    private final OneShotLock _lock = new OneShotLock();
+
     private final Map<String, Object> _builtinServices = newMap();
 
     private final Map<String, Class> _builtinTypes = newMap();
@@ -90,7 +87,6 @@
 
     private final ClassFactory _classFactory;
 
-    @SuppressNullCheck
     public static final class OrderedConfigurationToOrdererAdaptor<T> implements
             OrderedConfiguration<T>
     {
@@ -158,16 +154,18 @@
         _builtinServices.put(serviceId, service);
     }
 
-    @OneShot.Lockdown
     public synchronized void shutdown()
     {
+        _lock.lock();
+
         _registryShutdownHub.fireRegistryDidShutdown();
     }
 
     /** Internal access, usualy from another module. */
-    @SuppressNullCheck
     public <T> T getService(String serviceId, Class<T> serviceInterface, Module module)
     {
+        _lock.check();
+
         T result = checkForBuiltinService(serviceId, serviceInterface);
         if (result != null)
             return result;
@@ -203,11 +201,15 @@
      */
     public <T> T getService(String serviceId, Class<T> serviceInterface)
     {
+        _lock.check();
+
         return getService(serviceId, serviceInterface, null);
     }
 
     public void cleanupThread()
     {
+        _lock.check();
+
         _cleanupHub.cleanup();
     }
 
@@ -225,6 +227,8 @@
 
     public <T> Collection<T> getUnorderedConfiguration(ServiceDef serviceDef, Class<T> objectType)
     {
+        _lock.check();
+
         final Collection<T> result = newList();
 
         Configuration<T> configuration = new Configuration<T>()
@@ -245,6 +249,8 @@
 
     public <T> List<T> getOrderedConfiguration(ServiceDef serviceDef, Class<T> objectType)
     {
+        _lock.check();
+
         Log log = getLog(serviceDef.getServiceId());
 
         final Orderer<T> orderer = new Orderer<T>(log);
@@ -262,11 +268,12 @@
     public <K, V> Map<K, V> getMappedConfiguration(ServiceDef serviceDef, Class<K> keyType,
             Class<V> objectType)
     {
+        _lock.check();
+
         final Map<K, V> result = newMap();
 
         MappedConfiguration<K, V> configuration = new MappedConfiguration<K, V>()
         {
-            @SuppressNullCheck
             public void add(K key, V value)
             {
                 result.put(key, value);
@@ -383,9 +390,10 @@
     }
 
     // Seems like something that could be cached.
-    @SuppressNullCheck
     public <T> T getService(Class<T> serviceInterface, Module module)
     {
+        _lock.check();
+
         List<String> ids = CollectionFactory.newList();
 
         for (Module m : _modules.values())
@@ -416,11 +424,15 @@
 
     public <T> T getService(Class<T> serviceInterface)
     {
+        _lock.check();
+
         return getService(serviceInterface, null);
     }
 
     public ServiceLifecycle getServiceLifecycle(String lifecycle)
     {
+        _lock.check();
+
         ServiceLifecycle result = _lifecycles.get(lifecycle);
 
         if (result == null)
@@ -439,6 +451,8 @@
 
     public List<ServiceDecorator> findDecoratorsForService(ServiceDef serviceDef)
     {
+        _lock.check();
+
         Log log = getLog(serviceDef.getServiceId());
 
         Orderer<DecoratorDef> orderer = new Orderer<DecoratorDef>(log);
@@ -521,21 +535,29 @@
 
     public Log getLog(Class clazz)
     {
+        _lock.check();
+
         return _logSource.getLog(clazz);
     }
 
     public Log getLog(String name)
     {
+        _lock.check();
+
         return _logSource.getLog(name);
     }
 
     public ClassFab newClass(Class serviceInterface)
     {
+        _lock.check();
+
         return _classFactory.newClass(serviceInterface);
     }
 
     public <T> T getObject(String reference, Class<T> objectType, ServiceLocator locator)
     {
+        _lock.check();
+
         ObjectProvider masterProvider = getService(
                 IOCConstants.MASTER_OBJECT_PROVIDER_SERVICE_ID,
                 ObjectProvider.class);
@@ -545,12 +567,16 @@
 
     public <T> T getObject(String reference, Class<T> objectType)
     {
+        _lock.check();
+
         // Concerened about this causing potential endless loops.
         return getObject(reference, objectType, this);
     }
 
     public void addRegistryShutdownListener(RegistryShutdownListener listener)
     {
+        _lock.check();
+
         _registryShutdownHub.addRegistryShutdownListener(listener);
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingConfigurationWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingConfigurationWrapper.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingConfigurationWrapper.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingConfigurationWrapper.java Fri Oct 27 11:00:05 2006
@@ -15,14 +15,11 @@
 package org.apache.tapestry.internal.ioc;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.Configuration;
 import org.apache.tapestry.ioc.def.ContributionDef;
 
 /**
  * Performs some validation before delegating to another Configuration.
- * 
- * 
  */
 public class ValidatingConfigurationWrapper<T> implements Configuration<T>
 {
@@ -48,7 +45,6 @@
         _delegate = delegate;
     }
 
-    @SuppressNullCheck
     public void add(T object)
     {
         if (object == null)

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingMappedConfigurationWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingMappedConfigurationWrapper.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingMappedConfigurationWrapper.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingMappedConfigurationWrapper.java Fri Oct 27 11:00:05 2006
@@ -17,7 +17,6 @@
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.MappedConfiguration;
 import org.apache.tapestry.ioc.def.ContributionDef;
 
@@ -31,11 +30,9 @@
  * <p>
  * When a warning is logged, the key/value pair is not added to the delegate.
  * 
- * 
  * @param <K>
  * @param <V>
  */
-@SuppressNullCheck
 public class ValidatingMappedConfigurationWrapper<K, V> implements MappedConfiguration<K, V>
 {
     private final String _serviceId;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingOrderedConfigurationWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingOrderedConfigurationWrapper.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingOrderedConfigurationWrapper.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/ValidatingOrderedConfigurationWrapper.java Fri Oct 27 11:00:05 2006
@@ -17,7 +17,6 @@
 import static org.apache.tapestry.ioc.IOCUtilities.toQualifiedId;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.OrderedConfiguration;
 import org.apache.tapestry.ioc.def.ContributionDef;
 
@@ -28,7 +27,6 @@
  * ensures that incorrect values contributed in don't screw up the
  * {@link org.apache.tapestry.internal.util.Orderer} (and generate a bunch of error messages there).
  * 
- * 
  * @param <T>
  */
 public class ValidatingOrderedConfigurationWrapper<T> implements OrderedConfiguration<T>
@@ -58,7 +56,6 @@
         _delegate = delegate;
     }
 
-    @SuppressNullCheck
     public void add(String id, T object, String... constraints)
     {
         _delegate.add(toQualifiedId(_moduleId, id), validVersionOf(object), constraints);

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java Fri Oct 27 11:00:05 2006
@@ -21,19 +21,17 @@
 import javassist.CtClass;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
+import org.apache.tapestry.internal.util.OneShotLock;
 
 /**
  * Base class for {@link org.apache.tapestry.internal.ioc.services.ClassFabImpl}. This code is a
  * fork from HiveMind; it is kept seperate from ClassFabImpl in case we want to re-introduce the
  * idea of an InterfaceFab.
- * 
- * 
  */
-@OneShot
 public class AbstractFab
 {
+    protected final OneShotLock _lock = new OneShotLock();
+
     private final CtClass _ctClass;
 
     private final CtClassSource _source;
@@ -54,6 +52,8 @@
 
     public void addInterface(Class interfaceClass)
     {
+        _lock.check();
+
         CtClass ctInterfaceClass = _source.getCtClass(interfaceClass);
 
         try
@@ -70,7 +70,6 @@
         _ctClass.addInterface(ctInterfaceClass);
     }
 
-    @SuppressNullCheck
     protected CtClass[] convertClasses(Class[] inputClasses)
     {
         if (inputClasses == null || inputClasses.length == 0)
@@ -102,9 +101,10 @@
         return result;
     }
 
-    @OneShot.Lockdown
     public Class createClass()
     {
+        _lock.lock();
+
         if (_log.isDebugEnabled())
             _log.debug(String.format("Creating class from %s", this));
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java Fri Oct 27 11:00:05 2006
@@ -31,7 +31,6 @@
 import javassist.NotFoundException;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.services.ClassFab;
 import org.apache.tapestry.ioc.services.ClassFabUtils;
@@ -141,6 +140,8 @@
 
     public void addField(String name, Class type)
     {
+        _lock.check();
+
         CtClass ctType = convertClass(type);
 
         try
@@ -162,6 +163,8 @@
     public void proxyMethodsToDelegate(Class serviceInterface, String delegateExpression,
             String toString)
     {
+        _lock.check();
+
         addInterface(serviceInterface);
 
         MethodIterator mi = new MethodIterator(serviceInterface);
@@ -183,6 +186,8 @@
 
     public void addToString(String toString)
     {
+        _lock.check();
+
         MethodSignature sig = new MethodSignature(String.class, "toString", null, null);
 
         // TODO: Very simple quoting here, will break down if the string itself contains
@@ -193,6 +198,8 @@
 
     public void addMethod(int modifiers, MethodSignature ms, String body)
     {
+        _lock.check();
+
         if (_addedSignatures.contains(ms))
             throw new RuntimeException(ServiceMessages.duplicateMethodInClass(ms, this));
 
@@ -231,6 +238,8 @@
 
     public void addNoOpMethod(MethodSignature signature)
     {
+        _lock.check();
+
         Class returnType = signature.getReturnType();
 
         if (returnType.equals(void.class))
@@ -250,10 +259,11 @@
         addMethod(Modifier.PUBLIC, signature, "return " + value + ";");
     }
 
-    @SuppressNullCheck
     public void addConstructor(Class[] parameterTypes, Class[] exceptions, String body)
     {
         Defense.notBlank(body, "body");
+
+        _lock.check();
 
         CtClass[] ctParameters = convertClasses(parameterTypes);
         CtClass[] ctExceptions = convertClasses(exceptions);

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFactoryClassPool.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFactoryClassPool.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFactoryClassPool.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFactoryClassPool.java Fri Oct 27 11:00:05 2006
@@ -24,8 +24,6 @@
 import javassist.CtClass;
 import javassist.LoaderClassPath;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
-
 /**
  * Used to ensure that {@link javassist.ClassPool#appendClassPath(javassist.ClassPath)} is invoked
  * with a synchronized lock, and also handles tricky class loading issues (caused by the creation of
@@ -64,7 +62,6 @@
      *            the class loader to add (derived from a loaded class, and may be null for some
      *            system classes)
      */
-    @SuppressNullCheck
     public synchronized void addClassLoaderIfNeeded(ClassLoader loader)
     {
         if (loader == null || loader == _loader || _loaders.contains(loader))

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassPropertyAdapterImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassPropertyAdapterImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassPropertyAdapterImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ClassPropertyAdapterImpl.java Fri Oct 27 11:00:05 2006
@@ -20,7 +20,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.services.ClassPropertyAdapter;
 import org.apache.tapestry.ioc.services.PropertyAdapter;
@@ -64,13 +63,11 @@
         return _adapters.get(name);
     }
 
-    @SuppressNullCheck
     public Object get(Object instance, String propertyName)
     {
         return adaptorFor(propertyName).get(instance);
     }
 
-    @SuppressNullCheck
     public void set(Object instance, String propertyName, Object value)
     {
         adaptorFor(propertyName).set(instance, value);

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ExceptionInfoImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ExceptionInfoImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ExceptionInfoImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ExceptionInfoImpl.java Fri Oct 27 11:00:05 2006
@@ -19,14 +19,9 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 import org.apache.tapestry.ioc.services.ExceptionInfo;
 
-/**
- * 
- */
-@SuppressNullCheck
 public class ExceptionInfoImpl implements ExceptionInfo
 {
     private final String _className;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAccessImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAccessImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAccessImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAccessImpl.java Fri Oct 27 11:00:05 2006
@@ -14,41 +14,35 @@
 
 package org.apache.tapestry.internal.ioc.services;
 
-import static org.apache.tapestry.util.CollectionFactory.newMap;
+import static org.apache.tapestry.util.CollectionFactory.newThreadSafeMap;
 
 import java.beans.BeanInfo;
 import java.beans.Introspector;
 import java.util.Map;
 
-import org.apache.tapestry.internal.annotations.Concurrent;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.services.ClassPropertyAdapter;
 import org.apache.tapestry.ioc.services.PropertyAccess;
 
-/**
- * 
- */
-@Concurrent
 public class PropertyAccessImpl implements PropertyAccess
 {
-    private final Map<Class, ClassPropertyAdapter> _adapters = newMap();
+    private final Map<Class, ClassPropertyAdapter> _adapters = newThreadSafeMap();
 
-    @SuppressNullCheck
     public Object get(Object instance, String propertyName)
     {
         return getAdapter(instance).get(instance, propertyName);
     }
 
-    @SuppressNullCheck
     public void set(Object instance, String propertyName, Object value)
     {
         getAdapter(instance).set(instance, propertyName, value);
     }
 
-    @Concurrent.Write
-    public void clearCache()
+    /** Clears the cache of adapters and asks the Introspector to clear its cache. */
+    public synchronized void clearCache()
     {
         _adapters.clear();
+
+        Introspector.flushCaches();
     }
 
     public ClassPropertyAdapter getAdapter(Object instance)
@@ -56,13 +50,15 @@
         return getAdapter(instance.getClass());
     }
 
-    @Concurrent.Read
     public ClassPropertyAdapter getAdapter(Class forClass)
     {
         ClassPropertyAdapter result = _adapters.get(forClass);
 
         if (result == null)
+        {
             result = buildAdapter(forClass);
+            _adapters.put(forClass, result);
+        }
 
         return result;
     }
@@ -72,8 +68,7 @@
      * adapter cache, but also serializes access to the Java Beans Introspector, which is not thread
      * safe.
      */
-    @Concurrent.Write
-    private ClassPropertyAdapter buildAdapter(Class forClass)
+    private synchronized ClassPropertyAdapter buildAdapter(Class forClass)
     {
         // In some race conditions, we may hit this method for the same class multiple times.
         // We just let it happen, replacing the old ClassPropertyAdapter with a new one.
@@ -82,12 +77,7 @@
         {
             BeanInfo info = Introspector.getBeanInfo(forClass);
 
-            ClassPropertyAdapter adapter = new ClassPropertyAdapterImpl(forClass, info
-                    .getPropertyDescriptors());
-
-            _adapters.put(forClass, adapter);
-
-            return adapter;
+            return new ClassPropertyAdapterImpl(forClass, info.getPropertyDescriptors());
         }
         catch (Exception ex)
         {

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAdapterImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAdapterImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAdapterImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/PropertyAdapterImpl.java Fri Oct 27 11:00:05 2006
@@ -18,11 +18,9 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.services.PropertyAdapter;
 import org.apache.tapestry.util.Defense;
 
-@SuppressNullCheck
 public class PropertyAdapterImpl implements PropertyAdapter
 {
     private final String _name;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java Fri Oct 27 11:00:05 2006
@@ -19,16 +19,14 @@
 import java.util.List;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
+import org.apache.tapestry.internal.util.OneShotLock;
 import org.apache.tapestry.ioc.services.RegistryShutdownHub;
 import org.apache.tapestry.ioc.services.RegistryShutdownListener;
 
-/**
- * 
- */
-@OneShot
 public class RegistryShutdownHubImpl implements RegistryShutdownHub
 {
+    private final OneShotLock _lock = new OneShotLock();
+
     private final Log _log;
 
     private final List<RegistryShutdownListener> _listeners = newThreadSafeList();
@@ -40,6 +38,8 @@
 
     public void addRegistryShutdownListener(RegistryShutdownListener listener)
     {
+        _lock.check();
+
         _listeners.add(listener);
     }
 
@@ -50,9 +50,10 @@
      * @param log
      *            used if any listener throws an exception
      */
-    @OneShot.Lockdown
     public void fireRegistryDidShutdown()
     {
+        _lock.lock();
+
         for (RegistryShutdownListener l : _listeners)
         {
             try

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceLogger.java Fri Oct 27 11:00:05 2006
@@ -19,15 +19,12 @@
 import java.util.Iterator;
 
 import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.ioc.services.ExceptionTracker;
 import org.apache.tapestry.util.Defense;
 
 /**
  * Used by {@link org.apache.tapestry.internal.ioc.services.LoggingDecoratorImpl} to delegate out
  * logging behavior to a seperate object (helps ensure no naming conflicts).
- * 
- * 
  */
 public final class ServiceLogger
 {
@@ -148,7 +145,6 @@
      * @param result
      *            the return value for the method invocation
      */
-    @SuppressNullCheck
     public void exit(String name, Object result)
     {
         Defense.notNull(name, "name");

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java Fri Oct 27 11:00:05 2006
@@ -18,17 +18,16 @@
 
 import org.apache.tapestry.Messages;
 import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
 import org.apache.tapestry.ioc.services.MethodSignature;
 import org.apache.tapestry.ioc.services.ThreadCleanupListener;
 
-/**
- * 
- */
-@Utility
 final class ServiceMessages
 {
     private final static Messages MESSAGES = MessagesImpl.forClass(ServiceMessages.class);
+
+    private ServiceMessages()
+    {
+    }
 
     static String unableToAddMethod(MethodSignature signature, CtClass ctClass, Throwable cause)
     {

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/TypeCoercerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/TypeCoercerImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/TypeCoercerImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/TypeCoercerImpl.java Fri Oct 27 11:00:05 2006
@@ -26,7 +26,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.services.CompoundCoercion;
 import org.apache.tapestry.internal.util.InheritanceSearch;
 import org.apache.tapestry.internal.util.InternalUtils;
@@ -114,7 +113,6 @@
     }
 
     @SuppressWarnings("unchecked")
-    @SuppressNullCheck
     public Object coerce(Object input, Class targetType)
     {
         Defense.notNull(targetType, "targetType");

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java Fri Oct 27 11:00:05 2006
@@ -16,15 +16,14 @@
 
 import org.apache.tapestry.Messages;
 import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
 
-/**
- * 
- */
-@Utility
 class ModelMessages
 {
     private final static Messages MESSAGES = MessagesImpl.forClass(ModelMessages.class);
+
+    private ModelMessages()
+    {
+    }
 
     static String duplicateParameter(String parameterName, String componentName)
     {

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java Fri Oct 27 11:00:05 2006
@@ -23,7 +23,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.tapestry.Resource;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.internal.util.InternalUtils;
 import org.apache.tapestry.model.ComponentModel;
 import org.apache.tapestry.model.EmbeddedComponentModel;
@@ -57,7 +56,6 @@
 
     private List<String> _mixinClassNames;
 
-    @SuppressNullCheck
     public MutableComponentModelImpl(String componentClassName, Log log, Resource baseResource,
             ComponentModel parentModel)
     {

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/EndElementToken.java Fri Oct 27 11:00:05 2006
@@ -15,14 +15,10 @@
 package org.apache.tapestry.internal.parser;
 
 import org.apache.tapestry.Location;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 
 /**
  * Ends a previously started element (including components, parameters, etc.).
- * 
- * 
  */
-@SuppressNullCheck
 public class EndElementToken extends TemplateToken
 {
     public EndElementToken(Location location)

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/parser/StartComponentToken.java Fri Oct 27 11:00:05 2006
@@ -15,7 +15,6 @@
 package org.apache.tapestry.internal.parser;
 
 import org.apache.tapestry.Location;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 
 /**
  * The start element of a component within the template. Will be followed by a series of
@@ -23,7 +22,6 @@
  * and type), and eventually will be balanced by an
  * {@link org.apache.tapestry.internal.parser.EndElementToken}.
  */
-@SuppressNullCheck
 public class StartComponentToken extends TemplateToken
 {
     private final String _id;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BindingSourceImpl.java Fri Oct 27 11:00:05 2006
@@ -20,15 +20,10 @@
 import org.apache.tapestry.ComponentResources;
 import org.apache.tapestry.Location;
 import org.apache.tapestry.internal.TapestryException;
-import org.apache.tapestry.internal.annotations.SuppressNullCheck;
 import org.apache.tapestry.services.BindingFactory;
 import org.apache.tapestry.services.BindingSource;
 import org.apache.tapestry.util.Defense;
 
-/**
- * 
- */
-@SuppressNullCheck
 public class BindingSourceImpl implements BindingSource
 {
     private final Map<String, BindingFactory> _factories;

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CheckForUpdatesFilter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CheckForUpdatesFilter.java?view=diff&rev=468481&r1=468480&r2=468481
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CheckForUpdatesFilter.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CheckForUpdatesFilter.java Fri Oct 27 11:00:05 2006
@@ -16,7 +16,9 @@
 
 import java.io.IOException;
 
-import org.apache.tapestry.internal.annotations.Concurrent;
+import org.apache.tapestry.internal.util.ConcurrentBarrier;
+import org.apache.tapestry.internal.util.Holder;
+import org.apache.tapestry.internal.util.Invokable;
 import org.apache.tapestry.services.WebRequest;
 import org.apache.tapestry.services.WebRequestFilter;
 import org.apache.tapestry.services.WebRequestHandler;
@@ -27,10 +29,9 @@
  * {@link org.apache.tapestry.internal.services.UpdateListenerHub} to check for updates to files.
  * The UpdateListenerHub is invoked from a write method, meaning that when it is called, all other
  * threads will be blocked.
- * 
- * 
+ * <p>
+ * TODO: Allow the check interval to be configurable, to reflect a production environment
  */
-@Concurrent
 public class CheckForUpdatesFilter implements WebRequestFilter
 {
     private long _lastCheck = 0;
@@ -39,37 +40,70 @@
 
     private final UpdateListenerHub _updateListenerHub;
 
+    private final ConcurrentBarrier _barrier = new ConcurrentBarrier();
+
     public CheckForUpdatesFilter(UpdateListenerHub updateListenerHub)
     {
         _updateListenerHub = updateListenerHub;
     }
 
-    @Concurrent.Read
-    public boolean service(WebRequest request, WebResponse response, WebRequestHandler handler)
-            throws IOException
+    public boolean service(final WebRequest request, final WebResponse response,
+            final WebRequestHandler handler) throws IOException
     {
-        if (System.currentTimeMillis() - _lastCheck >= _checkInterval)
-            runCheck();
+        final Holder<IOException> exceptionHolder = new Holder<IOException>();
 
-        return handler.service(request, response);
-    }
+        Invokable<Boolean> invokable = new Invokable<Boolean>()
+        {
+            public Boolean invoke()
+            {
+                if (System.currentTimeMillis() - _lastCheck >= _checkInterval)
+                    runCheck();
+
+                try
+                {
+                    return handler.service(request, response);
+                }
+                catch (IOException ex)
+                {
+                    exceptionHolder.put(ex);
+                    return false;
+                }
+            }
+        };
 
-    /** The write lock ensures that only a single thread is active, all others are blocked. */
-    @Concurrent.Write
-    private void runCheck()
-    {
-        // On a race condition, multiple threads may hit this method briefly. If we've already
-        // done a check, don't run it again.
+        boolean result = _barrier.withRead(invokable);
 
-        if (System.currentTimeMillis() - _lastCheck < _checkInterval)
-            return;
+        IOException ex = exceptionHolder.get();
 
-        // Fire the update event which will force a number of checks and then corresponding
-        // invalidation events.
+        if (ex != null)
+            throw ex;
 
-        _updateListenerHub.fireUpdateEvent();
+        return result;
+    }
+
+    private void runCheck()
+    {
+        Runnable runnable = new Runnable()
+        {
+            public void run()
+            {
+                // On a race condition, multiple threads may hit this method briefly. If we've
+                // already done a check, don't run it again.
+
+                if (System.currentTimeMillis() - _lastCheck >= _checkInterval)
+                {
+
+                    // Fire the update event which will force a number of checks and then
+                    // corresponding invalidation events.
+
+                    _updateListenerHub.fireUpdateEvent();
+
+                    _lastCheck = System.currentTimeMillis();
+                }
+            }
+        };
 
-        _lastCheck = System.currentTimeMillis();
+        _barrier.withWrite(runnable);
     }
 
 }