You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/10/08 11:42:05 UTC
svn commit: r1005748 - in /tapestry/tapestry5/trunk:
tapestry-core/src/main/java/org/apache/tapestry5/services/
tapestry-ioc/src/main/java/org/apache/tapestry5/
tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/
tapestry-ioc/src/main/java/org/apache/...
Author: hlship
Date: Fri Oct 8 09:42:04 2010
New Revision: 1005748
URL: http://svn.apache.org/viewvc?rev=1005748&view=rev
Log:
TAP5-1299: Allow live class reloading to be disabled for the services layer
Also relocate IOCSymbols to the ioc package
Also move IOCInternalTestCase to src/test/java
Added:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java
- copied, changed from r1005348, tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java (contents, props changed)
- copied, changed from r1005348, tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java
Removed:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java Fri Oct 8 09:42:04 2010
@@ -29,7 +29,7 @@ public interface Request
{
/**
* Gets the {@link Session}. If create is false and the session has not be created previously, returns null. Also,
- * if the session is invalided and create is false, returns null.
+ * if the session is invalidated and create is false, returns null.
*
* @param create
* true to force the creation of the session
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java Fri Oct 8 09:42:04 2010
@@ -1,10 +1,10 @@
-// Copyright 2009 The Apache Software Foundation
+// Copyright 2010 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
+// 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,
@@ -14,35 +14,13 @@
package org.apache.tapestry5;
+// Note: refactored this down into the ioc package where it belongs.
+
/**
- * Configuration symbols used by the IoC container.
- *
- * @since 5.1.0.1
+ * @deprecated Use {@link org.apache.tapestry5.ioc.IOCSymbols} instead. To be removed after Tapestry 5.2.
+ * @since 5.1.0
*/
-public class IOCSymbols
+public class IOCSymbols extends org.apache.tapestry5.ioc.IOCSymbols
{
- /**
- * The minimum size of the thread pool. The default is 3.
- */
- public static final String THREAD_POOL_CORE_SIZE = "tapestry.thread-pool.core-pool-size";
-
- /**
- * Maximium size of the pool before submitted invocations must wait to execute; the default is 20.
- */
- public static final String THREAD_POOL_MAX_SIZE = "tapestry.thread-pool.max-pool-size";
-
- /**
- * Time in milliseconds (via {@link org.apache.tapestry5.ioc.util.TimeInterval}) to keep waiting threads alive.
- * Default is one minute (an epoch in application time).
- */
- public static final String THREAD_POOL_KEEP_ALIVE = "tapestry.thread-pool.keep-alive";
- /**
- * By default, the {@link org.apache.tapestry5.ioc.services.ParallelExecutor} service uses a thread pool. In
- * environments (such as Google Application Engine) where thread creation is not allowed, this can be set to
- * "false", and deferred logic will, instead, execute immediately.
- *
- * @since 5.1.0.3
- */
- public static final String THREAD_POOL_ENABLED = "tapestry.thread-pool-enabled";
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java Fri Oct 8 09:42:04 2010
@@ -1,10 +1,10 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2010 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
+// 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,
@@ -17,12 +17,14 @@ package org.apache.tapestry5.ioc;
public class IOCConstants
{
/**
- * @deprecated Use {@link org.apache.tapestry5.ioc.ScopeConstants#DEFAULT} instead.
+ * @deprecated Use {@link org.apache.tapestry5.ioc.ScopeConstants#DEFAULT} instead. To be removed after Tapestry
+ * 5.2.
*/
public static final String DEFAULT_SCOPE = ScopeConstants.DEFAULT;
/**
- * @deprecated Use {@link org.apache.tapestry5.ioc.ScopeConstants#PERTHREAD} instead.
+ * @deprecated Use {@link org.apache.tapestry5.ioc.ScopeConstants#PERTHREAD} instead. To be removed after Tapestry
+ * 5.2.
*/
public static final String PERTHREAD_SCOPE = ScopeConstants.PERTHREAD;
@@ -30,7 +32,11 @@ public class IOCConstants
public static final String MASTER_OBJECT_PROVIDER_SERVICE_ID = "MasterObjectProvider";
- private IOCConstants()
- {
- }
+ /**
+ * Name of a JVM System Property (but not, alas, a configuration symbol) that is used to disable
+ * live service reloading entirely (i.e., reverting to Tapestry 5.1 behavior).
+ *
+ * @since 5.2.2
+ */
+ public static final String SERVICE_CLASS_RELOADING_ENABLED = "tapestry.service-reloading-enabled";
}
Copied: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java (from r1005348, tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java?p2=tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java&p1=tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java&r1=1005348&r2=1005748&rev=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java Fri Oct 8 09:42:04 2010
@@ -1,4 +1,4 @@
-// Copyright 2009 The Apache Software Foundation
+// Copyright 2010 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.
@@ -12,12 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry5;
+package org.apache.tapestry5.ioc;
/**
* Configuration symbols used by the IoC container.
*
- * @since 5.1.0.1
+ * @since 5.2.2
*/
public class IOCSymbols
{
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java Fri Oct 8 09:42:04 2010
@@ -996,7 +996,8 @@ public class RegistryImpl implements Reg
{
assert interfaceClass != null;
assert implementationClass != null;
- if (InternalUtils.isLocalFile(implementationClass))
+
+ if (InternalUtils.SERVICE_CLASS_RELOADING_ENABLED && InternalUtils.isLocalFile(implementationClass))
return createReloadingProxy(interfaceClass, implementationClass, locator);
return createNonReloadingProxy(interfaceClass, implementationClass, locator);
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java Fri Oct 8 09:42:04 2010
@@ -127,7 +127,7 @@ public class ServiceBinderImpl implement
private ObjectCreatorSource createObjectCreatorSourceFromImplementationClass()
{
- if (!preventReloading && isProxiable() && reloadableScope() && InternalUtils.isLocalFile(serviceImplementation))
+ if (InternalUtils.SERVICE_CLASS_RELOADING_ENABLED && !preventReloading && isProxiable() && reloadableScope() && InternalUtils.isLocalFile(serviceImplementation))
return createReloadableConstructorBasedObjectCreatorSource();
return createStandardConstructorBasedObjectCreatorSource();
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java Fri Oct 8 09:42:04 2010
@@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
- * Implementation of {@link ParallelExecutor} used when {@linkplain org.apache.tapestry5.IOCSymbols#THREAD_POOL_ENABLED
+ * Implementation of {@link ParallelExecutor} used when {@linkplain org.apache.tapestry5.ioc.IOCSymbols#THREAD_POOL_ENABLED
* the thread pool is disabled}.
*
* @since 5.1.0.3
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java Fri Oct 8 09:42:04 2010
@@ -14,8 +14,6 @@
package org.apache.tapestry5.ioc.internal.util;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
import java.io.Closeable;
import java.io.IOException;
import java.lang.annotation.Annotation;
@@ -54,11 +52,15 @@ import org.apache.tapestry5.ioc.services
import org.apache.tapestry5.ioc.services.Coercion;
/**
- * Utilities used within various internal implementations of Tapestry IOC and the rest of the tapestry-core framework.
+ * Utilities used within various internal implementations of the tapestry-ioc module.
*/
@SuppressWarnings("all")
public class InternalUtils
{
+ /** @since 5.2.2 */
+ public static final boolean SERVICE_CLASS_RELOADING_ENABLED = Boolean.parseBoolean(System.getProperty(
+ IOCConstants.SERVICE_CLASS_RELOADING_ENABLED, "true"));
+
/**
* Leading punctuation on member names that is stripped off to form a property name or new member name.
*/
@@ -158,7 +160,7 @@ public class InternalUtils
*/
public static List<String> toList(Enumeration e)
{
- List<String> result = newList();
+ List<String> result = CollectionFactory.newList();
while (e.hasMoreElements())
{
@@ -481,7 +483,7 @@ public class InternalUtils
if (elements == null || elements.isEmpty())
return "(none)";
- List<String> list = newList();
+ List<String> list = CollectionFactory.newList();
for (Object o : elements)
list.add(String.valueOf(o));
@@ -559,7 +561,7 @@ public class InternalUtils
if (map == null)
return Collections.emptyList();
- List<String> keys = newList();
+ List<String> keys = CollectionFactory.newList();
for (Object o : map.keySet())
keys.add(String.valueOf(o));
@@ -705,7 +707,7 @@ public class InternalUtils
/**
* Adds a value to a specially organized map where the values are lists of objects. This somewhat simulates a map
- * that allows mutiple values for the same key.
+ * that allows multiple values for the same key.
*
* @param map
* to store value into
@@ -724,7 +726,7 @@ public class InternalUtils
if (list == null)
{
- list = newList();
+ list = CollectionFactory.newList();
map.put(key, list);
}
@@ -798,7 +800,7 @@ public class InternalUtils
+ "You should make the constructor public, or mark an alternate public constructor with the @Inject annotation.",
constructor));
}
-
+
public static InternalServiceDef toInternalServiceDef(final ServiceDef sd)
{
if (sd instanceof InternalServiceDef)
@@ -840,7 +842,7 @@ public class InternalUtils
{
return sd.isEagerLoad();
}
-
+
public Class getImplementationClass()
{
return null;
@@ -1078,7 +1080,7 @@ public class InternalUtils
/**
* Generates a unique value for the current execution of the application. This initial UUID value
- * is not easily predicatable; subsequent UUIDs are allocated in ascending series.
+ * is not easily predictable; subsequent UUIDs are allocated in ascending series.
*
* @since 5.2.0
*/
@@ -1086,4 +1088,5 @@ public class InternalUtils
{
return uuidGenerator.incrementAndGet();
}
+
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java Fri Oct 8 09:42:04 2010
@@ -22,7 +22,7 @@ import java.util.concurrent.Future;
* A service that allows work to occur in parallel using a thread pool. The thread pool is started lazily, and is
* shutdown when the Registry is shutdown.
*
- * @see org.apache.tapestry5.IOCSymbols
+ * @see org.apache.tapestry5.ioc.IOCSymbols
* @since 5.1.0.1
*/
public interface ParallelExecutor
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java Fri Oct 8 09:42:04 2010
@@ -4,7 +4,7 @@
// 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
+// 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,
@@ -17,27 +17,36 @@ package org.apache.tapestry5.ioc.service
import static org.apache.tapestry5.ioc.OrderConstraintBuilder.after;
import static org.apache.tapestry5.ioc.OrderConstraintBuilder.before;
-import org.apache.tapestry5.IOCSymbols;
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.annotations.*;
-import org.apache.tapestry5.ioc.internal.services.*;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.UpdateListenerHub;
-
import java.io.File;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import org.apache.tapestry5.ioc.*;
+import org.apache.tapestry5.ioc.annotations.Contribute;
+import org.apache.tapestry5.ioc.annotations.IntermediateType;
+import org.apache.tapestry5.ioc.annotations.Local;
+import org.apache.tapestry5.ioc.annotations.Marker;
+import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
+import org.apache.tapestry5.ioc.annotations.Symbol;
+import org.apache.tapestry5.ioc.internal.services.*;
+import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.ioc.internal.util.InternalUtils;
+import org.apache.tapestry5.ioc.util.TimeInterval;
+import org.apache.tapestry5.services.UpdateListenerHub;
+
/**
* Defines the base set of services for the Tapestry IOC container.
*/
+@SuppressWarnings("all")
@Marker(Builtin.class)
public final class TapestryIOCModule
{
@@ -98,22 +107,31 @@ public final class TapestryIOCModule
/**
* Contributes the "perthread" scope.
*/
- public static void contributeServiceLifecycleSource(MappedConfiguration<String, ServiceLifecycle> configuration)
+ @Contribute(ServiceLifecycleSource.class)
+ public static void providePerthreadScope(MappedConfiguration<String, ServiceLifecycle> configuration)
{
configuration.addInstance(ScopeConstants.PERTHREAD, PerThreadServiceLifecycle.class);
}
/**
- * <dl> <dt>AnnotationBasedContributions</dt> <dd>Empty placeholder used to seperate annotation-based ObjectProvider
- * contributions (which come before) from non-annotation based (ServiceOverride here, Alias in tapestry-core) which
- * come after. </dd> <dt>Value</dt> <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Value}
- * annotation</dd> <dt>Symbol</dt> <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Symbol}
- * annotations</dd> <dt>Autobuild</dt> <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Autobuild}
- * annotation</dd> <dt>ServiceOverride</dt> <dd>Allows simple service overrides via the {@link
- * org.apache.tapestry5.ioc.services.ServiceOverride} service (and its configuration)</dl>
+ * <dl>
+ * <dt>AnnotationBasedContributions</dt>
+ * <dd>Empty placeholder used to seperate annotation-based ObjectProvider contributions (which come before) from
+ * non-annotation based (ServiceOverride here, Alias in tapestry-core) which come after.</dd>
+ * <dt>Value</dt>
+ * <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Value} annotation</dd>
+ * <dt>Symbol</dt>
+ * <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Symbol} annotations</dd>
+ * <dt>Autobuild</dt>
+ * <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Autobuild} annotation</dd>
+ * <dt>ServiceOverride</dt>
+ * <dd>Allows simple service overrides via the {@link org.apache.tapestry5.ioc.services.ServiceOverride} service
+ * (and its configuration)
+ * </dl>
*/
- public static void contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> configuration,
- @Local final ServiceOverride serviceOverride)
+ @Contribute(MasterObjectProvider.class)
+ public static void setupObjectProviders(OrderedConfiguration<ObjectProvider> configuration, @Local
+ final ServiceOverride serviceOverride)
{
configuration.add("AnnotationBasedContributions", null);
@@ -121,7 +139,6 @@ public final class TapestryIOCModule
configuration.addInstance("Symbol", SymbolObjectProvider.class, before("AnnotationBasedContributions").build());
configuration.add("Autobuild", new AutobuildObjectProvider(), before("AnnotationBasedContributions").build());
-
ObjectProvider wrapper = new ObjectProvider()
{
public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
@@ -134,20 +151,39 @@ public final class TapestryIOCModule
}
/**
- * Contributes a set of standard type coercions to the {@link TypeCoercer} service: <ul> <li>Object to String</li>
- * <li>String to Double</li> <li>String to BigDecimal</li> <li>BigDecimal to Double</li> <li>Double to
- * BigDecimal</li> <li>String to BigInteger</li> <li>BigInteger to Long</li> <li>String to Long</li> <li>Long to
- * Byte</li> <li>Long to Short</li> <li>Long to Integer</li> <li>Double to Long</li> <li>Double to Float</li>
- * <li>Float to Double</li> <li>Long to Double</li> <li>String to Boolean ("false" is always false, other non-blank
- * strings are true)</li> <li>Long to Boolean (true if long value is non zero)</li> <li>Null to Boolean (always
- * false)</li> <li>Collection to Boolean (false if empty)</li> <li>Object[] to List</li> <li>primitive[] to
- * List</li> <li>Object to List (by wrapping as a singleton list)</li> <li>String to File</li> <li>String to {@link
- * org.apache.tapestry5.ioc.util.TimeInterval}</li> <li>{@link org.apache.tapestry5.ioc.util.TimeInterval} to
- * Long</li> <li>Object to Object[] (wrapping the object as an array)</li> <li>Collection to Object[] (via the
- * toArray() method)</ul>
+ * Contributes a set of standard type coercions to the {@link TypeCoercer} service:
+ * <ul>
+ * <li>Object to String</li>
+ * <li>String to Double</li>
+ * <li>String to BigDecimal</li>
+ * <li>BigDecimal to Double</li>
+ * <li>Double to BigDecimal</li>
+ * <li>String to BigInteger</li>
+ * <li>BigInteger to Long</li>
+ * <li>String to Long</li>
+ * <li>Long to Byte</li>
+ * <li>Long to Short</li>
+ * <li>Long to Integer</li>
+ * <li>Double to Long</li>
+ * <li>Double to Float</li>
+ * <li>Float to Double</li>
+ * <li>Long to Double</li>
+ * <li>String to Boolean ("false" is always false, other non-blank strings are true)</li>
+ * <li>Long to Boolean (true if long value is non zero)</li>
+ * <li>Null to Boolean (always false)</li>
+ * <li>Collection to Boolean (false if empty)</li>
+ * <li>Object[] to List</li>
+ * <li>primitive[] to List</li>
+ * <li>Object to List (by wrapping as a singleton list)</li>
+ * <li>String to File</li>
+ * <li>String to {@link org.apache.tapestry5.ioc.util.TimeInterval}</li>
+ * <li>{@link org.apache.tapestry5.ioc.util.TimeInterval} to Long</li>
+ * <li>Object to Object[] (wrapping the object as an array)</li>
+ * <li>Collection to Object[] (via the toArray() method)
+ * </ul>
*/
- @SuppressWarnings("unchecked")
- public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration)
+ @Contribute(TypeCoercer.class)
+ public static void provideBasicTypeCoercions(Configuration<CoercionTuple> configuration)
{
add(configuration, Object.class, String.class, new Coercion<Object, String>()
{
@@ -254,7 +290,8 @@ public final class TapestryIOCModule
{
String trimmed = input == null ? "" : input.trim();
- if (trimmed.equalsIgnoreCase("false") || trimmed.length() == 0) return false;
+ if (trimmed.equalsIgnoreCase("false") || trimmed.length() == 0)
+ return false;
// Any non-blank string but "false"
@@ -278,7 +315,6 @@ public final class TapestryIOCModule
}
});
-
add(configuration, Collection.class, Boolean.class, new Coercion<Collection, Boolean>()
{
public Boolean coerce(Collection input)
@@ -362,7 +398,8 @@ public final class TapestryIOCModule
{
public Object[] coerce(Object input)
{
- return new Object[] { input };
+ return new Object[]
+ { input };
}
});
@@ -375,51 +412,52 @@ public final class TapestryIOCModule
});
}
- private static <S, T> void add(Configuration<CoercionTuple> configuration, Class<S> sourceType, Class<T> targetType,
- Coercion<S, T> coercion)
+ private static <S, T> void add(Configuration<CoercionTuple> configuration, Class<S> sourceType,
+ Class<T> targetType, Coercion<S, T> coercion)
{
CoercionTuple<S, T> tuple = new CoercionTuple<S, T>(sourceType, targetType, coercion);
configuration.add(tuple);
}
- public static void contributeSymbolSource(OrderedConfiguration<SymbolProvider> configuration,
- @ApplicationDefaults SymbolProvider applicationDefaults,
+ @Contribute(SymbolSource.class)
+ public static void setupStandardSymbolProviders(OrderedConfiguration<SymbolProvider> configuration,
+ @ApplicationDefaults
+ SymbolProvider applicationDefaults,
- @FactoryDefaults SymbolProvider factoryDefaults)
+ @FactoryDefaults
+ SymbolProvider factoryDefaults)
{
configuration.add("SystemProperties", new SystemPropertiesSymbolProvider(), "before:*");
configuration.add("ApplicationDefaults", applicationDefaults, "after:SystemProperties");
configuration.add("FactoryDefaults", factoryDefaults, "after:ApplicationDefaults");
}
- public static ParallelExecutor buildDeferredExecution(
- @Symbol(IOCSymbols.THREAD_POOL_CORE_SIZE)
- int coreSize,
+ public static ParallelExecutor buildDeferredExecution(@Symbol(IOCSymbols.THREAD_POOL_CORE_SIZE)
+ int coreSize,
- @Symbol(IOCSymbols.THREAD_POOL_MAX_SIZE)
- int maxSize,
+ @Symbol(IOCSymbols.THREAD_POOL_MAX_SIZE)
+ int maxSize,
- @Symbol(IOCSymbols.THREAD_POOL_KEEP_ALIVE)
- @IntermediateType(TimeInterval.class)
- int keepAliveMillis,
+ @Symbol(IOCSymbols.THREAD_POOL_KEEP_ALIVE)
+ @IntermediateType(TimeInterval.class)
+ int keepAliveMillis,
- @Symbol(IOCSymbols.THREAD_POOL_ENABLED)
- boolean threadPoolEnabled,
+ @Symbol(IOCSymbols.THREAD_POOL_ENABLED)
+ boolean threadPoolEnabled,
- PerthreadManager perthreadManager,
+ PerthreadManager perthreadManager,
- RegistryShutdownHub shutdownHub,
+ RegistryShutdownHub shutdownHub,
- ThunkCreator thunkCreator)
+ ThunkCreator thunkCreator)
{
if (!threadPoolEnabled)
return new NonParallelExecutor();
- final ThreadPoolExecutor executorService = new ThreadPoolExecutor(coreSize, maxSize,
- keepAliveMillis, TimeUnit.MILLISECONDS,
- new LinkedBlockingQueue());
+ final ThreadPoolExecutor executorService = new ThreadPoolExecutor(coreSize, maxSize, keepAliveMillis,
+ TimeUnit.MILLISECONDS, new LinkedBlockingQueue());
shutdownHub.addRegistryShutdownListener(new RegistryShutdownListener()
{
@@ -432,7 +470,9 @@ public final class TapestryIOCModule
return new ParallelExecutorImpl(executorService, thunkCreator, perthreadManager);
}
- public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
+ @Contribute(SymbolProvider.class)
+ @FactoryDefaults
+ public static void setupDefaultSymbols(MappedConfiguration<String, String> configuration)
{
configuration.add(IOCSymbols.THREAD_POOL_CORE_SIZE, "3");
configuration.add(IOCSymbols.THREAD_POOL_MAX_SIZE, "20");
Copied: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java (from r1005348, tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java?p2=tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java&p1=tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java&r1=1005348&r2=1005748&rev=1005748&view=diff
==============================================================================
(empty)
Propchange: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java?rev=1005748&r1=1005747&r2=1005748&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java Fri Oct 8 09:42:04 2010
@@ -14,7 +14,7 @@
package org.apache.tapestry5.ioc.internal.services;
-import org.apache.tapestry5.IOCSymbols;
+import org.apache.tapestry5.ioc.IOCSymbols;
import org.apache.tapestry5.ioc.MappedConfiguration;
public class NonParallelModule