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.