tapestry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From drobia...@apache.org
Subject svn commit: r734515 - in /tapestry/tapestry5/trunk/tapestry-ioc/src: main/java/org/apache/tapestry5/ioc/annotations/ main/java/org/apache/tapestry5/ioc/internal/ main/resources/org/apache/tapestry5/ioc/internal/ site/apt/ test/java/org/apache/tapestry5...
Date Wed, 14 Jan 2009 21:14:07 GMT
Author: drobiazko
Date: Wed Jan 14 13:14:07 2009
New Revision: 734515

URL: http://svn.apache.org/viewvc?rev=734515&view=rev
Log:
Reverting the changes from r734292 because contributions are collected only inside a single
module.

Removed:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Contribute.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributeViaAnnotationAmbiguousModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributeViaAnnotationCombindedWithBinderMethodModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributeViaAnnotationCombindedWithBuilderMethodModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributeViaAnnotationWithMarkerModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributeViaMethodAnnotationModule.java
Modified:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties
    tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/configuration.apt
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java?rev=734515&r1=734514&r2=734515&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java
(original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java
Wed Jan 14 13:14:07 2009
@@ -116,7 +116,6 @@
 
         grind(methods, modulePreventsServiceDecoration);
         bind(methods, modulePreventsServiceDecoration);
-        contribute(methods, modulePreventsServiceDecoration);
 
         if (methods.isEmpty()) return;
 
@@ -149,27 +148,6 @@
     {
         return serviceDefs.get(serviceId);
     }
-    
-    public List<ServiceDef> getServiceDef(Class interfaceClass, Collection<Class>
markers)
-    {
-        List<ServiceDef> result = newList();
-        
-        for (String id : getServiceIds())
-        {
-            ServiceDef def = getServiceDef(id);
-            
-            Class serviceInterface = def.getServiceInterface();
-
-            if(serviceInterface.equals(interfaceClass))
-            {
-                
-                if(CollectionFactory.newSet(markers).equals(def.getMarkers())){
-                    result.add(def);
-                }
-            }
-        }
-        return result;
-    }
 
     private void grind(Set<Method> remainingMethods, boolean modulePreventsServiceDecoration)
     {
@@ -208,36 +186,20 @@
                 remainingMethods.remove(m);
                 continue;
             }
-            
-            // contribute methods are handled later, after autobuilding is finished
-        }
-    }
-    
-    private void contribute(Set<Method> remainingMethods, boolean modulePreventsServiceDecoration)
-    {
-        Method[] methods = moduleClass.getMethods();
-        
-        for (Method m : methods)
-        {
-            String name = m.getName();
 
-            if (m.isAnnotationPresent(Contribute.class) ||
-                    name.startsWith(CONTRIBUTE_METHOD_NAME_PREFIX))
+            if (name.startsWith(CONTRIBUTE_METHOD_NAME_PREFIX))
             {
- 
                 addContributionDef(m);
                 remainingMethods.remove(m);
                 continue;
             }
         }
-        
     }
 
     private void addContributionDef(Method method)
     {
-        
-        String serviceId = extractServiceId(method);
-        
+        String serviceId = stripMethodPrefix(method, CONTRIBUTE_METHOD_NAME_PREFIX);
+
         Class returnType = method.getReturnType();
         if (!returnType.equals(void.class)) logger.warn(IOCMessages.contributionWrongReturnType(method));
 
@@ -264,33 +226,6 @@
 
         contributionDefs.add(def);
     }
-    
-    private String extractServiceId(Method method)
-    {
-        Contribute annotation = method.getAnnotation(Contribute.class);
-        
-        if(annotation != null)
-        {
-            Class serviceClass = annotation.value();
-            Collection<Class> markers = extractMarkers(method);
-            
-            List<ServiceDef> defs = getServiceDef(serviceClass, markers);
-          
-           if(defs.isEmpty())
-           {
-               return serviceClass.getSimpleName();
-               
-           }
-           else if(defs.size() != 1)
-           {
-               throw new RuntimeException(IOCMessages.tooManyServicesForContributeMethod(method,
serviceClass));
-              
-           }
-           return defs.get(0).getServiceId();
-        }
-        
-        return stripMethodPrefix(method, CONTRIBUTE_METHOD_NAME_PREFIX);
-    }
 
     private void addDecoratorDef(Method method)
     {

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java?rev=734515&r1=734514&r2=734515&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java
(original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java
Wed Jan 14 13:14:07 2009
@@ -322,9 +322,4 @@
     {
         return MESSAGES.format("no-convention-service-implementation-found", clazz.getName(),
clazz.getName());
     }
-    
-    static String tooManyServicesForContributeMethod(Method method, Class clazz)
-    {
-        return MESSAGES.format("too-many-services-for-annotated-contribute-method", asString(method),
clazz.getName());
-    }
 }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties?rev=734515&r1=734514&r2=734515&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties
(original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties
Wed Jan 14 13:14:07 2009
@@ -81,4 +81,3 @@
 unexpected-service-proxy-provider=Unexpected service proxy provider when clearing the provider.
This may indicate that you have multiple IoC Registries.
 no-proxy-provider=Service token for service '%s' can not be converted back into a proxy because
no proxy provider has been registered. This may indicate that an IoC Registry has not been
started yet.
 no-convention-service-implementation-found=No service implements the interface %s. Please
provide the implementation %sImpl or bind the service interface to a service implementation.
-too-many-services-for-annotated-contribute-method=Contribute method %s (for service '%s')
is marked by @Contribute annotation but several implementations of the service were found.
You should provide a @Marker annotation or use a method that starts with 'contribute' to disambiguate
the service the contribution is provided for. 

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/configuration.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/configuration.apt?rev=734515&r1=734514&r2=734515&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/configuration.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/configuration.apt Wed Jan 14 13:14:07
2009
@@ -80,45 +80,6 @@
   other contributing modules (such as the one that contributes the Office file services)
may be written at 
   a much later date. With no change to the FileServicerDispatcher service or its module class,
   the new services "plug into" the overall solution, simply by having their JAR's on runtime
classpath. 
-
-Annotated Service Contributor Methods
-
-  As an alternative to the naming convention, you may mark a method as a contributor method
by placing the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Contribute.html}Contribute}} annotation
on it. 
-  Tapestry will invoke this method just as if it starts with 'contribute'. The value attribute
of the annotation 
-  is the type of service to contribute into. Based on this type Tapestry will find the service
id provided as described 
-  {{{service.html}here}}. 
-  
-+------+
-  @Contribute(Runnable.class)
-  public static void arbitraryNamedMethod(MappedConfiguration<String,String> configuration)
-  {
-    ...
-  }  
-+------+
-
-  If several implementations of a service interface are provided Tapestry will throw an exception.

-  In this case you should disambiguate by providing marker annotations or by using the naming
convention (method starts with 'contribute').
-
-+------+
-  public class MyModule
-  {
-    public static void bind(ServiceBinder binder)
-    {
-      binder.bind(Runnable.class, RunnableImpl.class).withId("Red").withMarker(RedMarker.class);
-      
-      binder.bind(Runnable.class, AnotherRunnableImpl.class).withId("BlueAndRed")
-            .withMarker(new Class[]{BlueMarker.class,RedMarker.class});
-    }
-  
-    @Contribute(Runnable.class)
-    @Marker({BlueMarker.class,RedMarker.class})
-    public static void arbitraryNamedMethod(MappedConfiguration<String,String> configuration)
-    {
-      ...
-    } 
-  } 
-+------+
   
 Configuration Types
 

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java?rev=734515&r1=734514&r2=734515&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
(original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
Wed Jan 14 13:14:07 2009
@@ -278,57 +278,6 @@
     {
         attemptConfigurationMethod(SimpleModule.class, "Barney", "contributeBarney(Configuration)");
     }
-    
-    @Test
-    public void contribution_by_annotated_method()
-    {
-        attemptConfigurationMethod(ContributeViaMethodAnnotationModule.class, "Runnable",

-                "contributeMyService(MappedConfiguration)");
-    }
-    
-    @Test
-    public void contribution_by_annotated_method_when_service_id_provided_by_builder_method()
-    {
-        attemptConfigurationMethod(ContributeViaAnnotationCombindedWithBuilderMethodModule.class,
"RunnableBuilderMethod", 
-                "contributeMyService(MappedConfiguration)");
-    }
-    
-    @Test
-    public void contribution_by_annotated_method_when_service_id_provided_by_binder_method()
-    {
-        
-        attemptConfigurationMethod(ContributeViaAnnotationCombindedWithBinderMethodModule.class,
"RunnableBinderMethod", 
-            "contributeMyService(MappedConfiguration)");
-    }
-    
-    @Test
-    public void contribution_by_annotated_method_ambiguous()  throws Exception
-    {
-        Class moduleClass = ContributeViaAnnotationAmbiguousModule.class;
-        
-        Method m = moduleClass.getMethod("contributeMyService", MappedConfiguration.class);
-        
-        Logger logger = mockLogger();
-        
-        try
-        {
-            new DefaultModuleDefImpl(moduleClass, logger, classFactory);            
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), IOCMessages.tooManyServicesForContributeMethod(m,
Runnable.class));
-        }
-
-    }
-     
-    @Test
-    public void contribution_by_annotated_method_with_marker()  throws Exception
-    {
-        attemptConfigurationMethod(ContributeViaAnnotationWithMarkerModule.class, "BlueAndRed",

-            "contributeMyService(MappedConfiguration)");
-
-    }
 
     @Test
     public void ordered_contribution_method()



Mime
View raw message