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/01/02 20:52:18 UTC
svn commit: r895275 -
/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
Author: hlship
Date: Sat Jan 2 19:52:18 2010
New Revision: 895275
URL: http://svn.apache.org/viewvc?rev=895275&view=rev
Log:
TAP5-967: ObjectLocator.autobuild would be more useful with an override that allowed a message about the object to be described
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java?rev=895275&r1=895274&r2=895275&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java Sat Jan 2 19:52:18 2010
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009, 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.
@@ -30,10 +30,14 @@
import java.util.Map;
/**
- * Implementation of {@link org.apache.tapestry5.ioc.ServiceBuilderResources}. We just have one implementation that
- * fills the purposes of methods that need a {@link org.apache.tapestry5.ioc.ServiceResources} (which includes service
- * decorator methods) as well as methods that need a {@link org.apache.tapestry5.ioc.ServiceBuilderResources} (which is
- * just service builder methods). Since it is most commonly used for the former, we'll just leave the name as
+ * Implementation of {@link org.apache.tapestry5.ioc.ServiceBuilderResources}. We just have one
+ * implementation that
+ * fills the purposes of methods that need a {@link org.apache.tapestry5.ioc.ServiceResources}
+ * (which includes service
+ * decorator methods) as well as methods that need a
+ * {@link org.apache.tapestry5.ioc.ServiceBuilderResources} (which is
+ * just service builder methods). Since it is most commonly used for the former, we'll just leave
+ * the name as
* ServiceResourcesImpl.
*/
public class ServiceResourcesImpl extends ObjectLocatorImpl implements ServiceBuilderResources
@@ -49,7 +53,7 @@
private final ClassFactory classFactory;
public ServiceResourcesImpl(InternalRegistry registry, Module module, ServiceDef serviceDef,
- ClassFactory classFactory, Logger logger)
+ ClassFactory classFactory, Logger logger)
{
super(registry, module);
@@ -77,15 +81,14 @@
public <T> Collection<T> getUnorderedConfiguration(final Class<T> valueType)
{
- Collection<T> result =
- registry.invoke("Collecting unordered configuration for service " + serviceDef.getServiceId(),
- new Invokable<Collection<T>>()
- {
- public Collection<T> invoke()
- {
- return registry.getUnorderedConfiguration(serviceDef, valueType);
- }
- });
+ Collection<T> result = registry.invoke("Collecting unordered configuration for service "
+ + serviceDef.getServiceId(), new Invokable<Collection<T>>()
+ {
+ public Collection<T> invoke()
+ {
+ return registry.getUnorderedConfiguration(serviceDef, valueType);
+ }
+ });
logConfiguration(result);
@@ -100,15 +103,14 @@
public <T> List<T> getOrderedConfiguration(final Class<T> valueType)
{
- List<T> result = registry.invoke(
- "Collecting ordered configuration for service " + serviceDef.getServiceId(),
- new Invokable<List<T>>()
- {
- public List<T> invoke()
- {
- return registry.getOrderedConfiguration(serviceDef, valueType);
- }
- });
+ List<T> result = registry.invoke("Collecting ordered configuration for service "
+ + serviceDef.getServiceId(), new Invokable<List<T>>()
+ {
+ public List<T> invoke()
+ {
+ return registry.getOrderedConfiguration(serviceDef, valueType);
+ }
+ });
logConfiguration(result);
@@ -117,17 +119,17 @@
public <K, V> Map<K, V> getMappedConfiguration(final Class<K> keyType, final Class<V> valueType)
{
- Map<K, V> result =
- registry.invoke("Collecting mapped configuration for service " + serviceDef.getServiceId(),
- new Invokable<Map<K, V>>()
- {
- public Map<K, V> invoke()
- {
- return registry.getMappedConfiguration(serviceDef, keyType, valueType);
- }
- });
+ Map<K, V> result = registry.invoke("Collecting mapped configuration for service "
+ + serviceDef.getServiceId(), new Invokable<Map<K, V>>()
+ {
+ public Map<K, V> invoke()
+ {
+ return registry.getMappedConfiguration(serviceDef, keyType, valueType);
+ }
+ });
- if (logger.isDebugEnabled()) logger.debug(IOCMessages.constructedConfiguration(result));
+ if (logger.isDebugEnabled())
+ logger.debug(IOCMessages.constructedConfiguration(result));
return result;
}
@@ -138,29 +140,35 @@
}
@Override
+ public <T> T autobuild(String description, final Class<T> clazz)
+ {
+ Defense.notNull(clazz, "clazz");
+
+ return registry.invoke(description, new Invokable<T>()
+ {
+ public T invoke()
+ {
+ Constructor constructor = InternalUtils.findAutobuildConstructor(clazz);
+
+ if (constructor == null)
+ throw new RuntimeException(IOCMessages.noAutobuildConstructor(clazz));
+
+ String description = classFactory.getConstructorLocation(constructor).toString();
+
+ ObjectCreator creator = new ConstructorServiceCreator(ServiceResourcesImpl.this,
+ description, constructor);
+
+ return clazz.cast(creator.createObject());
+ }
+ });
+ }
+
+ @Override
public <T> T autobuild(final Class<T> clazz)
{
Defense.notNull(clazz, "clazz");
- return registry.invoke("Autobuilding instance of class " + clazz.getName(),
- new Invokable<T>()
- {
- public T invoke()
- {
- Constructor constructor = InternalUtils.findAutobuildConstructor(clazz);
-
- if (constructor == null)
- throw new RuntimeException(IOCMessages.noAutobuildConstructor(clazz));
-
- String description = classFactory.getConstructorLocation(constructor).toString();
-
- ObjectCreator creator = new ConstructorServiceCreator(ServiceResourcesImpl.this,
- description,
- constructor);
-
- return clazz.cast(creator.createObject());
- }
- });
+ return autobuild("Autobuilding instance of class " + clazz.getName(), clazz);
}
public OperationTracker getTracker()