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 19:41:43 UTC
svn commit: r468472 - in
/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj:
./ src/main/aspect/org/apache/tapestry/internal/aspects/
src/main/java/org/apache/tapestry/
src/main/java/org/apache/tapestry/internal/ src/main/java/org...
Author: hlship
Date: Fri Oct 27 10:41:40 2006
New Revision: 468472
URL: http://svn.apache.org/viewvc?view=rev&rev=468472
Log:
Convert remaining AspectJ aspect + Annotation bits into pure Java code.
Remove AspectJ support from the project and from Maven.
Shrank output JAR size by about 30% (657K to 449K).
Added:
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java
Removed:
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/aspect/org/apache/tapestry/internal/aspects/AbstractClassTargetting.aj
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/aspect/org/apache/tapestry/internal/aspects/InternalOneShotChecks.aj
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/aspect/org/apache/tapestry/internal/aspects/InternalUtilityChecks.aj
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/aspect/org/apache/tapestry/internal/aspects/OneShotChecks.aj
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/aspect/org/apache/tapestry/internal/aspects/UtilityChecks.aj
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/annotations/OneShot.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/annotations/Utility.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/aspects/OneShotChecksAspectTest.java
Modified:
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.classpath
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.project
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/pom.xml
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/TapestryConstants.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/InternalConstants.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/InternalUtils.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Orderer.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCConstants.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformConstants.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformUtils.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/CollectionFactory.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/Defense.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/UtilMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/TargetMessages.java
tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.classpath
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.classpath?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.classpath (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.classpath Fri Oct 27 10:41:40 2006
@@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/aspect"/>
+ <classpathentry excluding="org/apache/tapestry/internal/aspects/InternalOneShotChecks.aj" 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/branches/hlship-20061027-removeaspectj/.project
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.project?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.project (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/.project Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/pom.xml?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/pom.xml (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/pom.xml Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/TapestryConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/TapestryConstants.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/TapestryConstants.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/TapestryConstants.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/InternalConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/InternalConstants.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/InternalConstants.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/InternalConstants.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/bindings/BindingsMessages.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCMessages.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/IOCProxyUtilities.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/RegistryImpl.java Fri Oct 27 10:41:40 2006
@@ -25,10 +25,10 @@
import java.util.Set;
import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
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;
@@ -54,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";
@@ -72,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();
@@ -156,15 +154,18 @@
_builtinServices.put(serviceId, service);
}
- @OneShot.Lockdown
public synchronized void shutdown()
{
+ _lock.lock();
+
_registryShutdownHub.fireRegistryDidShutdown();
}
/** Internal access, usualy from another module. */
public <T> T getService(String serviceId, Class<T> serviceInterface, Module module)
{
+ _lock.check();
+
T result = checkForBuiltinService(serviceId, serviceInterface);
if (result != null)
return result;
@@ -200,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();
}
@@ -222,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>()
@@ -242,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);
@@ -259,6 +268,8 @@
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>()
@@ -381,6 +392,8 @@
// Seems like something that could be cached.
public <T> T getService(Class<T> serviceInterface, Module module)
{
+ _lock.check();
+
List<String> ids = CollectionFactory.newList();
for (Module m : _modules.values())
@@ -411,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)
@@ -434,6 +451,8 @@
public List<ServiceDecorator> findDecoratorsForService(ServiceDef serviceDef)
{
+ _lock.check();
+
Log log = getLog(serviceDef.getServiceId());
Orderer<DecoratorDef> orderer = new Orderer<DecoratorDef>(log);
@@ -516,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);
@@ -540,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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/AbstractFab.java Fri Oct 27 10:41:40 2006
@@ -21,16 +21,17 @@
import javassist.CtClass;
import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
+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;
@@ -51,6 +52,8 @@
public void addInterface(Class interfaceClass)
{
+ _lock.check();
+
CtClass ctInterfaceClass = _source.getCtClass(interfaceClass);
try
@@ -98,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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ClassFabImpl.java Fri Oct 27 10:41:40 2006
@@ -140,6 +140,8 @@
public void addField(String name, Class type)
{
+ _lock.check();
+
CtClass ctType = convertClass(type);
try
@@ -161,6 +163,8 @@
public void proxyMethodsToDelegate(Class serviceInterface, String delegateExpression,
String toString)
{
+ _lock.check();
+
addInterface(serviceInterface);
MethodIterator mi = new MethodIterator(serviceInterface);
@@ -182,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
@@ -192,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));
@@ -230,6 +238,8 @@
public void addNoOpMethod(MethodSignature signature)
{
+ _lock.check();
+
Class returnType = signature.getReturnType();
if (returnType.equals(void.class))
@@ -252,6 +262,8 @@
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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/RegistryShutdownHubImpl.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/ioc/services/ServiceMessages.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/model/ModelMessages.java Fri Oct 27 10:41:40 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/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/services/ServicesMessages.java Fri Oct 27 10:41:40 2006
@@ -23,15 +23,17 @@
import org.apache.tapestry.Messages;
import org.apache.tapestry.Resource;
import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
import org.apache.tapestry.internal.util.InternalUtils;
import org.apache.tapestry.runtime.RenderCommand;
import org.apache.tapestry.services.MethodSignature;
-@Utility
class ServicesMessages
{
private static final Messages MESSAGES = MessagesImpl.forClass(ServicesMessages.class);
+
+ private ServicesMessages()
+ {
+ }
static final String duplicateContribution(Object conflict, String name, Object existing)
{
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/structure/StructureMessages.java Fri Oct 27 10:41:40 2006
@@ -18,13 +18,15 @@
import org.apache.tapestry.Messages;
import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
import org.apache.tapestry.internal.util.InternalUtils;
-@Utility
-final class StructureMessages
+class StructureMessages
{
private static final Messages MESSAGES = MessagesImpl.forClass(StructureMessages.class);
+
+ private StructureMessages()
+ {
+ }
static String missingParameters(List<String> parameters, ComponentPageElement element)
{
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/InternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/InternalUtils.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/InternalUtils.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/InternalUtils.java Fri Oct 27 10:41:40 2006
@@ -29,7 +29,6 @@
import org.apache.tapestry.Locatable;
import org.apache.tapestry.Location;
-import org.apache.tapestry.internal.annotations.Utility;
import org.apache.tapestry.ioc.ServiceLocator;
import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.ioc.annotations.InjectService;
@@ -38,7 +37,7 @@
* Utilities used within various internal implemenations of Tapestry IOC and the rest of the
* tapestry-core framework.
*/
-@Utility
+
public class InternalUtils
{
/**
@@ -46,6 +45,10 @@
* member name.
*/
public static final String NAME_PREFIX = "_$";
+
+ private InternalUtils()
+ {
+ }
/**
* Converts a method to a user presentable string consisting of the containing class name, the
Added: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java?view=auto&rev=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java (added)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/OneShotLock.java Fri Oct 27 10:41:40 2006
@@ -0,0 +1,44 @@
+package org.apache.tapestry.internal.util;
+
+/**
+ * Logic for handling one shot semantics for classes; classes that include a method (or methods)
+ * that "locks down" the instance, to prevent it from being used again in the future.
+ */
+public class OneShotLock
+{
+ private boolean _lock;
+
+ /**
+ * Checks to see if the lock has been set (via {@link #lock()}).
+ *
+ * @throws IllegalStateException
+ * if the lock is set
+ */
+ public void check()
+ {
+ innerCheck();
+ }
+
+ private void innerCheck()
+ {
+ if (_lock)
+ {
+ // [0] is getStackTrace()
+ // [1] is innerCheck()
+ // [2] is check() or lock()
+ // [3] is caller of check() or lock()
+
+ StackTraceElement element = Thread.currentThread().getStackTrace()[4];
+
+ throw new IllegalStateException(UtilMessages.oneShotLock(element));
+ }
+ }
+
+ /** Checks the lock, then sets it. */
+ public void lock()
+ {
+ innerCheck();
+
+ _lock = true;
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Orderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Orderer.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Orderer.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/Orderer.java Fri Oct 27 10:41:40 2006
@@ -22,7 +22,6 @@
import java.util.Map;
import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
import org.apache.tapestry.internal.ioc.IdMatcherImpl;
import org.apache.tapestry.ioc.IOCUtilities;
import org.apache.tapestry.ioc.IdMatcher;
@@ -33,9 +32,10 @@
* Used to order objects into an "execution" order. Each object must have a unique id. It may
* specify a list of constraints which identify the ordering of the objects.
*/
-@OneShot
public class Orderer<T>
{
+ private final OneShotLock _lock = new OneShotLock();
+
private final Log _log;
private final List<Orderable> _orderables = newList();
@@ -88,6 +88,8 @@
*/
public void add(Orderable<T> orderable)
{
+ _lock.check();
+
String id = orderable.getId();
if (_orderablesById.containsKey(id))
@@ -115,12 +117,15 @@
public void add(String id, T target, String... constraints)
{
+ _lock.check();
+
add(new Orderable<T>(id, target, constraints));
}
- @OneShot.Lockdown
public List<T> getOrdered()
{
+ _lock.lock();
+
initializeGraph();
List<T> result = newList();
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/internal/util/UtilMessages.java Fri Oct 27 10:41:40 2006
@@ -18,16 +18,15 @@
import org.apache.tapestry.Messages;
import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
-/**
- *
- */
-@Utility
-final class UtilMessages
+class UtilMessages
{
private static final Messages MESSAGES = MessagesImpl.forClass(UtilMessages.class);
+ private UtilMessages()
+ {
+ }
+
static String unableToReadLastModified(URL url, Throwable cause)
{
return MESSAGES.format("unable-to-read-last-modified", url, cause);
@@ -48,4 +47,8 @@
return MESSAGES.format("constraint-format", constraint, id);
}
+ static String oneShotLock(StackTraceElement element)
+ {
+ return MESSAGES.format("one-shot-lock", element);
+ }
}
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCConstants.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCConstants.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCConstants.java Fri Oct 27 10:41:40 2006
@@ -14,12 +14,6 @@
package org.apache.tapestry.ioc;
-import org.apache.tapestry.internal.annotations.Utility;
-
-/**
- *
- */
-@Utility
public class IOCConstants
{
public static final String DEFAULT_LIFECYCLE = "singleton";
@@ -27,4 +21,8 @@
public static final String MODULE_BUILDER_MANIFEST_ENTRY_NAME = "Tapestry-Module-Classes";
public static final String MASTER_OBJECT_PROVIDER_SERVICE_ID = "tapestry.ioc.MasterObjectProvider";
+
+ private IOCConstants()
+ {
+ }
}
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java Fri Oct 27 10:41:40 2006
@@ -23,15 +23,16 @@
import java.util.Enumeration;
import java.util.jar.Manifest;
-import org.apache.tapestry.internal.annotations.Utility;
-
/**
* A collection of utility methods for a couple of different areas, including creating the initial
* {@link org.apache.tapestry.ioc.Registry}.
*/
-@Utility
public final class IOCUtilities
{
+ private IOCUtilities()
+ {
+ }
+
/**
* Construct a default registry, including modules identify via the Tapestry-Module-Classes
* Manifest entry.
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java Fri Oct 27 10:41:40 2006
@@ -23,11 +23,11 @@
import java.util.Map;
import org.apache.commons.logging.Log;
-import org.apache.tapestry.internal.annotations.OneShot;
import org.apache.tapestry.internal.ioc.DefaultModuleDefImpl;
import org.apache.tapestry.internal.ioc.IOCMessages;
import org.apache.tapestry.internal.ioc.LogSourceImpl;
import org.apache.tapestry.internal.ioc.RegistryImpl;
+import org.apache.tapestry.internal.util.OneShotLock;
import org.apache.tapestry.ioc.annotations.SubModule;
import org.apache.tapestry.ioc.def.ModuleDef;
import org.apache.tapestry.ioc.services.TapestryIOCModule;
@@ -35,12 +35,11 @@
/**
* Used to construct the IoC {@link org.apache.tapestry.ioc.Registry}. This class is <em>not</em>
* threadsafe. The Registry, once created, <em>is</em> threadsafe.
- *
- *
*/
-@OneShot
public final class RegistryBuilder
{
+ private final OneShotLock _lock = new OneShotLock();
+
/** Module defs, keyed on module id. */
final Map<String, ModuleDef> _modules = newMap();
@@ -71,6 +70,8 @@
public void add(ModuleDef moduleDef)
{
+ _lock.check();
+
String id = moduleDef.getModuleId();
if (_modules.containsKey(id))
@@ -84,6 +85,8 @@
public void add(Class... moduleBuilderClasses)
{
+ _lock.check();
+
List<Class> queue = newList(Arrays.asList(moduleBuilderClasses));
while (!queue.isEmpty())
@@ -105,6 +108,8 @@
public void add(String classname)
{
+ _lock.check();
+
try
{
Class builderClass = Class.forName(classname, true, _classLoader);
@@ -117,19 +122,24 @@
}
}
- @OneShot.Lockdown
public Registry build()
{
+ _lock.lock();
+
return new RegistryImpl(_modules.values(), _classLoader, _logSource);
}
public ClassLoader getClassLoader()
{
+ _lock.check();
+
return _classLoader;
}
public Log getLog()
{
+ _lock.check();
+
return _log;
}
}
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/ioc/services/ClassFabUtils.java Fri Oct 27 10:41:40 2006
@@ -19,18 +19,17 @@
import java.lang.reflect.Method;
import java.util.Map;
-import org.apache.tapestry.internal.annotations.Utility;
-
/**
* Handy method useful when creating new classes using
* {@link org.apache.tapestry.ioc.services.ClassFab}.
- *
- * @author Howard Lewis Ship
*/
-@Utility
public class ClassFabUtils
{
private static long _uid = System.currentTimeMillis();
+
+ private ClassFabUtils()
+ {
+ }
/**
* Generates a unique class name, which will be in the default package.
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformConstants.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformConstants.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformConstants.java Fri Oct 27 10:41:40 2006
@@ -17,7 +17,6 @@
import java.lang.reflect.Modifier;
import org.apache.tapestry.MarkupWriter;
-import org.apache.tapestry.internal.annotations.Utility;
import org.apache.tapestry.runtime.ComponentEvent;
import org.apache.tapestry.runtime.LifecycleEvent;
@@ -25,7 +24,6 @@
* Constants used by implementations of
* {@link org.apache.tapestry.services.ComponentClassTransformWorker}.
*/
-@Utility
public final class TransformConstants
{
// Shared parameters of a whole bunch of lifecycle methods, representing the different
@@ -107,6 +105,10 @@
* @see org.apache.tapestry.annotations.CleanupRender
*/
public static final MethodSignature CLEANUP_RENDER_SIGNATURE = newLifecycleMethodSignature("cleanupRender");
+
+ private TransformConstants()
+ {
+ }
private static MethodSignature newLifecycleMethodSignature(String name)
{
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformUtils.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformUtils.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/services/TransformUtils.java Fri Oct 27 10:41:40 2006
@@ -18,12 +18,9 @@
import java.util.Map;
-import org.apache.tapestry.internal.annotations.Utility;
-
/**
* Support code for generating code (used when transforming component classes).
*/
-@Utility
public final class TransformUtils
{
private static final Map<String, PrimitiveTypeInfo> _nameToInfo = newMap();
@@ -71,6 +68,10 @@
add(long.class, Long.class, "longValue", "0L");
add(float.class, Float.class, "floatValue", "0.0f");
add(double.class, Double.class, "doubleValue", "0.0d");
+ }
+
+ private TransformUtils()
+ {
}
private static void add(Class primitiveType, Class wrapperType, String unwrapperMethodName,
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/CollectionFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/CollectionFactory.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/CollectionFactory.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/CollectionFactory.java Fri Oct 27 10:41:40 2006
@@ -25,8 +25,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.apache.tapestry.internal.annotations.Utility;
-
/**
* Static factory methods to ease the creation of new collection types (when using generics). Most
* of these method leverage the compiler's ability to match generic types by return value. Typical
@@ -42,12 +40,13 @@
* <pre>
* Map<Foo, Bar> map = new HashMap<Foo, Bar>();
* </pre>
- *
- *
*/
-@Utility
public final class CollectionFactory
{
+ private CollectionFactory()
+ {
+ }
+
/** Constructs and returns a generic {@link HashMap} instance. */
public static <K, V> Map<K, V> newMap()
{
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/Defense.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/Defense.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/Defense.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/Defense.java Fri Oct 27 10:41:40 2006
@@ -14,14 +14,14 @@
package org.apache.tapestry.util;
-import org.apache.tapestry.internal.annotations.Utility;
-
/**
* Static utility methods for defensive programming.
*/
-@Utility
public final class Defense
{
+ private Defense()
+ {
+ }
/**
* Checks that a method parameter value is not null, and returns it. This method is used in
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/UtilMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/UtilMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/UtilMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/java/org/apache/tapestry/util/UtilMessages.java Fri Oct 27 10:41:40 2006
@@ -16,17 +16,17 @@
import org.apache.tapestry.Messages;
import org.apache.tapestry.internal.MessagesImpl;
-import org.apache.tapestry.internal.annotations.Utility;
/**
* Static messages
- *
- *
*/
-@Utility
-final class UtilMessages
+class UtilMessages
{
private static final Messages MESSAGES = MessagesImpl.forClass(UtilMessages.class);
+
+ private UtilMessages()
+ {
+ }
static String parameterWasNull(String parameterName)
{
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/main/resources/org/apache/tapestry/internal/util/UtilStrings.properties Fri Oct 27 10:41:40 2006
@@ -16,3 +16,4 @@
dependency-cycle=Unable to add '%s' as a dependency of '%s', as that forms a dependency cycle ('%<s' depends on itself via '%1$s'). The dependency has been ignored.
duplicate-orderer=Could not add object with duplicate id '%s'. The duplicate object has been ignored.
constraint-format=Could not parse ordering constraint '%s' (for '%s'). The constraint has been ignored.
+one-shot-lock=Method %s may no longer be invoked.
\ No newline at end of file
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/TargetMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/TargetMessages.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/TargetMessages.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/TargetMessages.java Fri Oct 27 10:41:40 2006
@@ -14,14 +14,9 @@
package org.apache.tapestry.internal;
-import org.apache.tapestry.internal.annotations.Utility;
-
/**
* Used with {@link org.apache.tapestry.internal.MessagesImplTest}.
- *
- *
*/
-@Utility
public class TargetMessages
{
Modified: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java?view=diff&rev=468472&r1=468471&r2=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/services/TemplateParserImplTest.java Fri Oct 27 10:41:40 2006
@@ -274,7 +274,9 @@
// start(html), text, body, text, end(html)
assertEquals(tokens.size(), 5);
- assertTrue(get(tokens, 2) instanceof BodyToken);
+ // javac bug is requires use of isInstance() instead of instanceof
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=113218
+ assertTrue(BodyToken.class.isInstance(get(tokens, 2)));
}
@Test
@@ -306,9 +308,12 @@
assertEquals(tokens.size(), 5);
- assertTrue(get(tokens, 2) instanceof BodyToken);
- assertTrue(get(tokens, 3) instanceof TextToken);
- assertTrue(get(tokens, 4) instanceof EndElementToken);
+ // javac bug is requires use of isInstance() instead of instanceof
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=113218
+
+ assertTrue(BodyToken.class.isInstance(get(tokens, 2)));
+ assertTrue(TextToken.class.isInstance(get(tokens, 3)));
+ assertTrue(EndElementToken.class.isInstance(get(tokens, 4)));
verify();
}
Added: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java?view=auto&rev=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java (added)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockSubject.java Fri Oct 27 10:41:40 2006
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package org.apache.tapestry.internal.util;
+
+import org.apache.tapestry.internal.util.OneShotLock;
+
+/**
+ * Evolved from a test for aspects + annotations to a test of a class that utilizeds OneShotLock as
+ * a utility.
+ */
+public class OneShotLockSubject
+{
+ private final OneShotLock _lock = new OneShotLock();
+
+ public void go()
+ {
+ _lock.check();
+ }
+
+ public void done()
+ {
+ _lock.lock();
+ }
+}
\ No newline at end of file
Added: tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java?view=auto&rev=468472
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java (added)
+++ tapestry/tapestry5/tapestry-core/branches/hlship-20061027-removeaspectj/src/test/java/org/apache/tapestry/internal/util/OneShotLockTest.java Fri Oct 27 10:41:40 2006
@@ -0,0 +1,66 @@
+// 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.internal.util;
+
+import org.apache.tapestry.test.BaseTestCase;
+import org.testng.annotations.Test;
+
+public class OneShotLockTest extends BaseTestCase
+{
+ private static final String CLASS_NAME = OneShotLockSubject.class.getName();
+
+ @Test
+ public void basic_locking()
+ {
+ OneShotLockSubject s = new OneShotLockSubject();
+
+ s.go();
+
+ s.done();
+
+ try
+ {
+ s.go();
+ unreachable();
+ }
+ catch (IllegalStateException ex)
+ {
+ assertTrue(ex.getMessage().contains(CLASS_NAME + ".go"));
+ assertTrue(ex.getMessage().contains("may no longer be invoked."));
+ }
+ }
+
+ @Test
+ public void locking_method_includes_check()
+ {
+ OneShotLockSubject s = new OneShotLockSubject();
+
+ s.go();
+
+ s.done();
+
+ try
+ {
+ s.done();
+ unreachable();
+ }
+ catch (IllegalStateException ex)
+ {
+ assertTrue(ex.getMessage().contains(CLASS_NAME + ".done"));
+ assertTrue(ex.getMessage().contains("may no longer be invoked."));
+ }
+ }
+
+}