Ok, that's exactly my point. Now look at this, same class, lines 68-76

public void introspect() {
       introspect(getType());
       if (operations.size() == 1) {
           Collection<MethodInfo> methodInfos = operations.values();
           for (MethodInfo methodInfo : methodInfos) {
               defaultExpression = methodInfo;
           }
       }
   }


According to this, only if operations.size() == 1 I will get a
defaultExpression, this involves that my bean has one and only one method.
This restricts a lot when it comes to receiving a message with a null
operation, my bean can't have more than one method. Can we fix this somehow?
maybe having the first Operation() attribute with no name to be the default
one?

To be more concrete, I'm trying to receive a message from a Quartz endpoint
and I get no oportunity to specify an operation name, not even with a
Marshaler.

This way, having a defaultOperation is almost impossible.

Any Comments?


Eduardo Burgos

On 5/25/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:

Yeah.  It sounds like there is no way to hide
methods, so all public methods are exposed as operations :-(

On 5/25/07, Eduardo Burgos <[EMAIL PROTECTED]> wrote:
>
> Hi, I've been looking at servicemix-bean and I noticed this in
> org.apache.servicemix.bean.support.BeanInfo line 103 in the following
> method
> "protected void introspect(Class clazz, Method method)"
>
> I'm quoting lines 121-130
>
> 121-       // now lets add the method to the repository
>              String opName = method.getName();
>              if (method.getAnnotation(Operation.class) != null) {
>                   String name = method.getAnnotation(Operation.class
> ).name();
>
>                   if (name != null && name.length() > 0) {
>                       opName = name;
>                   }
>               }
>               Expression parametersExpression =
> createMethodParametersExpression(parameterExpressions);
> 130-        operations.put(opName, new MethodInfo(clazz, method,
> parametersExpression));
>
>
>
> According to this, every method of my bean is an operation whose name is
> defined at least by the method's name. Is this intended? I thought that
> only
> the methods that had the Operation attribute would be listed as
> operations.
> For example, I have a "setSessionTimeout" method that I wouldn't want it
> to
> be an operation :).
>
> Any ideas?
>
>
> Eduardo Burgos
>



--
Cheers,
Guillaume Nodet
------------------------
Principal Engineer, IONA
Blog: http://gnodet.blogspot.com/

Reply via email to