yep, a sample is as follows:
when rendering such a DSL:
from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result")
the "from" and "to" are easy to handle, but the "filter" definition
maintains a {header(foo) == bar} predicate for
(header("foo").isEqualTo("bar")).
So I have to generate the expected  (header("foo").isEqualTo("bar")) by
converting {header(foo) == bar},  the method is shown below:
{code}
// pre is grabbed by using the toString of the predicate
pre = pre.replaceAll("\\(", "(\"").replaceAll("\\)", "\")");
String rightExp = pre.substring(pre.indexOf(" ") + 1);
   if (rightExp.startsWith("==")) {
       pre = pre.replaceFirst("\\ == ", ".isEqualTo(\"");
       pre += ")";
   } else if (rightExp.startsWith("is not null")) {
       pre = pre.replaceFirst("\\ is not null", ".isNotNull()");
   }
   buffer.append("(").append(pre).append(")");
{code}
In this sample, the filter uses a predicate as parameter, and it also can
use a xpath or other expression as its parameter, so in the filter
processing part, I have to judge several conditions:
{code}
  if (expression.getPredicate() != null) {
       PredicateRenderer.renderPredicate(buffer, expression.getPredicate());
  } else if (expression.getLanguage() != null) {
       buffer.append("().").append(expression.getLanguage())
           
.append("(\"").append(expression.getExpression().toString()).append("\")");
  }
{code}


Claus Ibsen-2 wrote:
> 
> On Tue, Jul 7, 2009 at 9:57 AM, alloyer<allo...@gmail.com> wrote:
>>
>> groovyRenderer now need a lot of work on string processing and can't deal
>> with some complicated expressions. If the xxxDefinition classes provide a
>> toString() method which presents a DSL-style string, the rendering work
>> will
>> be much easier. If it is determined, I will do this work.
> Hi
> 
> Could you post a sample of this problem / issue. Its much easier to
> understand and discuss with a sample to make the problem more clearer
> for us.
> 
> 
>>
>> Claus Ibsen-2 wrote:
>>>
>>>
>>> I do wonder if we should by default change the toString() in the
>>> xxxDefinition to be more Java DSL like so its easier to read the
>>> route.
>>>
>>>
>>> On Sat, Jul 4, 2009 at 11:32 AM, Claus Ibsen<claus.ib...@gmail.com>
>>> wrote:
>>>> Hi
>>>>
>>>> I loaded the RandomLoadBalanceTest unit test from camel-core and put a
>>>> break point at
>>>>        assertMockEndpointsSatisfied();
>>>>
>>>> And then inspected the CameContext and its getRouteDefinitions().
>>>> See attached picture from the debugger, shows the object graph and the
>>>> types it has a runtime.
>>>>
>>>> Maybe you need a getLoadBalancer() without a parameter. But try with
>>>> getLoadBalancer(null) in the class LoadBalancerDefinition as it should
>>>> have been created. Notice its the load balancer definition with R that
>>>> can return the specific type.
>>>>
>>>>
>>>>
>>>> On Sat, Jul 4, 2009 at 11:07 AM, alloyer<allo...@gmail.com> wrote:
>>>>>
>>>>> The getLoadBalancerType don't return null but the getAnnotation().
>>>>> The getLoadBalancerType return a LoadBalancerDefinition instance,
>>>>> which
>>>>> I
>>>>> think should be a
>>>>> RandomLoadBalancerdefinition one.
>>>>>
>>>>> The dsl is: from("direct:start").loadBalance().random().to("mock:x",
>>>>> "mock:y", "mock:z")
>>>>>
>>>>>
>>>>> Claus Ibsen-2 wrote:
>>>>>>
>>>>>> On Sat, Jul 4, 2009 at 8:16 AM, alloyer<allo...@gmail.com> wrote:
>>>>>>>
>>>>>>> Grabbing name from dataFormat type works fine.
>>>>>>> But when I use it on loadBalancer type, it throws a null pointer
>>>>>>> exception.
>>>>>>>
>>>>>>>
>>>>>>> loadBalanceDefinition.getLoadBalancerType().getClass().getAnnotation(XmlRootElement.class)
>>>>>>> throws the exception.
>>>>>>>
>>>>>>
>>>>>> I think its because you use ref to lookup the definition in the
>>>>>> registry.
>>>>>> Then when Camel builds the runtime route it will lookup the real load
>>>>>> balancer and use it.
>>>>>>
>>>>>> So if getLoadBalancerType returns null then try checking getRef and
>>>>>> see if you can lookup this bean in the registry
>>>>>>
>>>>>>
>>>>>>
>>>>>> What does the route DSL looks like?
>>>>>>
>>>>>>>
>>>>>>> JIRA j...@apache.org wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>     [
>>>>>>>> https://issues.apache.org/activemq/browse/CAMEL-1392?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52687#action_52687
>>>>>>>> ]
>>>>>>>>
>>>>>>>> Jonathan Anstey commented on CAMEL-1392:
>>>>>>>> ----------------------------------------
>>>>>>>>
>>>>>>>> Also, instead of duplicating the dataformat types (and loadbalancer
>>>>>>>> types
>>>>>>>> too), you should be able to grab the short names through the JAXB
>>>>>>>> metadata. Like so
>>>>>>>>
>>>>>>>> {code}
>>>>>>>> dataFormat.getClass().getAnnotation(XmlRootElement.class).name()
>>>>>>>> {code}
>>>>>>>>
>>>>>>>>> groovy renderer
>>>>>>>>> ---------------
>>>>>>>>>
>>>>>>>>>                 Key: CAMEL-1392
>>>>>>>>>                 URL:
>>>>>>>>> https://issues.apache.org/activemq/browse/CAMEL-1392
>>>>>>>>>             Project: Apache Camel
>>>>>>>>>          Issue Type: Sub-task
>>>>>>>>>            Reporter: James Strachan
>>>>>>>>>            Assignee: Xueqiang Mi
>>>>>>>>>         Attachments: camel-web-20090629.patch,
>>>>>>>>> camel-web-20090703.patch
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> This message is automatically generated by JIRA.
>>>>>>>> -
>>>>>>>> You can reply to this email to add a comment to the issue online.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/-jira--Created%3A-%28CAMEL-1392%29-groovy-renderer-tp22220288p24331647.html
>>>>>>> Sent from the Camel Development mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Claus Ibsen
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> Open Source Integration: http://fusesource.com
>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/-jira--Created%3A-%28CAMEL-1392%29-groovy-renderer-tp22220288p24332317.html
>>>>> Sent from the Camel Development mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Claus Ibsen
>>>> Apache Camel Committer
>>>>
>>>> Open Source Integration: http://fusesource.com
>>>> Blog: http://davsclaus.blogspot.com/
>>>> Twitter: http://twitter.com/davsclaus
>>>>
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/-jira--Created%3A-%28CAMEL-1392%29-groovy-renderer-tp22220288p24368755.html
>> Sent from the Camel Development mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: 
http://www.nabble.com/-jira--Created%3A-%28CAMEL-1392%29-groovy-renderer-tp22220288p24369033.html
Sent from the Camel Development mailing list archive at Nabble.com.

Reply via email to