Thank you. So, regarding the example -- do you have a preference about whether it should be included in an existing openapi example, or should it be its own? And for merge requests, is it better to do both (against the same ticket) at the same time?
Thanks, Steve On Tue, Oct 26, 2021 at 12:33 AM Claus Ibsen <[email protected]> wrote: > On Mon, Oct 25, 2021 at 10:53 PM Steve973 <[email protected]> wrote: > > > > Claus, you can see the module here: > > > https://github.com/Steve973/camel-spring-boot/tree/CAMEL-17061/components-starter/camel-springdoc-starter > > > > Please let me know if you have any concerns or questions, etc. > > > > This work looks good. > > > > > Thanks, > > Steve > > > > On Fri, Oct 15, 2021 at 8:22 AM Steve973 <[email protected]> wrote: > > > > > Hi, Claus. Thanks -- I think that I need to disable it for this one. > > > > > > On Fri, Oct 15, 2021 at 12:25 AM Claus Ibsen <[email protected]> > > > wrote: > > > > > >> Hi > > >> > > >> You can run the maven command with -e to display the stacktrace. It > > >> may be that we can fix the NPE in this plugin, or we need to disable > > >> it for this starter you create. > > >> > > >> On Fri, Oct 15, 2021 at 2:27 AM Steve973 <[email protected]> wrote: > > >> > > > >> > That is what I have been trying to do, but this keeps happening: > > >> > > > >> > [ERROR] Failed to execute goal > > >> > > > >> > org.apache.camel.springboot:camel-spring-boot-generator-maven-plugin:3.13.0-SNAPSHOT:prepare-spring-boot-starter > > >> > (generate) on project camel-springdoc-starter: Unable to create > starter: > > >> > Unable to build project dependency tree: NullPointerException -> > [Help > > >> 1] > > >> > > > >> > It must be something trivial that I am overlooking, but I can't > figure > > >> it > > >> > out! > > >> > > > >> > Thanks, > > >> > Steve > > >> > > > >> > On Thu, Oct 14, 2021 at 12:46 AM Claus Ibsen <[email protected] > > > > >> wrote: > > >> > > > >> > > Hi > > >> > > > > >> > > You do not need to use the create-starter script as it is as you > say > > >> > > for when there is an existing camel component that it based upon. > > >> > > You can create a new directory manually, thought you then need to > add > > >> > > it manually to the pom.xml file. > > >> > > > > >> > > But that can be later, at first you can create the directory > manually, > > >> > > and copy over that source I hacked together, and polish as needed. > > >> > > Use the right name etc. Add a doc file in src/main/docs etc. > > >> > > > > >> > > And then you can build it locally with mvn clean install so you > have > > >> > > the JAR in your local m2 repo. > > >> > > Then you can try to use it from your example to see it works. > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > On Wed, Oct 13, 2021 at 10:05 PM Steve973 <[email protected]> > wrote: > > >> > > > > > >> > > > Ok, that makes sense. Another thing that I am curious about is > the > > >> fact > > >> > > > that using create-starter wants there to be a camel-springdoc > > >> library > > >> > > that > > >> > > > the camel-springdoc-starter configures. When I try to create a > > >> starter > > >> > > > module manually, and without that nonexistent library, it won't > > >> build for > > >> > > > me. This is the first time that I am working directly on the > Camel > > >> code, > > >> > > > so if there is a decent resource to get me started, would you > mind > > >> > > pointing > > >> > > > me in the right direction, please? > > >> > > > > > >> > > > Thanks, > > >> > > > Steve > > >> > > > > > >> > > > On Wed, Oct 13, 2021 at 2:33 PM Claus Ibsen < > [email protected]> > > >> > > wrote: > > >> > > > > > >> > > > > On Wed, Oct 13, 2021 at 8:05 PM Steve973 <[email protected]> > > >> wrote: > > >> > > > > > > > >> > > > > > Hi, Claus. I am assuming that you made your modifications, > and > > >> then > > >> > > > > added > > >> > > > > > them to a test project (locally, not in the repo) and > brought > > >> in the > > >> > > > > > springdoc ui dependency into that? I am asking because I > don't > > >> see > > >> > > it in > > >> > > > > > the branch that you pushed for this ticket. > > >> > > > > > > > >> > > > > > > >> > > > > Yes I used your example from that github link you had. > > >> > > > > > > >> > > > > > Thanks, > > >> > > > > > Steve > > >> > > > > > > > >> > > > > > On Sun, Oct 10, 2021 at 1:13 PM Steve973 < > [email protected]> > > >> wrote: > > >> > > > > > > > >> > > > > > > My ASF Jira username is Steve973. I'd be glad to take > what > > >> you > > >> > > have > > >> > > > > done > > >> > > > > > > and create a new module with it. By the way, you might > > >> remember a > > >> > > > > > > discussion about the implementation of the Dynamic Router > EIP > > >> that > > >> > > we > > >> > > > > had a > > >> > > > > > > few years ago. I am just now getting around to > implementing > > >> it in > > >> > > a > > >> > > > > way > > >> > > > > > > that better agrees with the EIP description. I would like > > >> your > > >> > > > > thoughts > > >> > > > > > > and input on it. Should I start a new email thread about > it? > > >> > > > > > > > > >> > > > > > > Thanks again, > > >> > > > > > > Steve > > >> > > > > > > > > >> > > > > > > On Sun, Oct 10, 2021 at 11:10 AM Claus Ibsen < > > >> > > [email protected]> > > >> > > > > > > wrote: > > >> > > > > > > > > >> > > > > > >> Hi > > >> > > > > > >> > > >> > > > > > >> Okay I got this working now. Had to fix a thing in > > >> > > camel-openapi-java > > >> > > > > > >> https://issues.apache.org/jira/browse/CAMEL-17063 > > >> > > > > > >> > > >> > > > > > >> The UI now works and I can see the rest-dsl services and > > >> invoke > > >> > > them. > > >> > > > > > >> > > >> > > > > > >> Steve, so what is needed is to take that work on > > >> > > > > > >> > https://github.com/apache/camel-spring-boot/tree/CAMEL-17061 > > >> > > > > > >> > > >> > > > > > >> And move that into a new camel-springdoc-starter module > > >> > > > > > >> and then polish and adjust the code so it uses > > >> camel.springdoc as > > >> > > > > > >> configuration instead of camel.openapi > > >> > > > > > >> > > >> > > > > > >> Since you use servlet then it requires 3.13.0-SNAPSHOT to > > >> have > > >> > > fixes > > >> > > > > > >> from camel-openapi-java, so you may need to build a camel > > >> project > > >> > > > > > >> locally too. > > >> > > > > > >> You can do that with > > >> > > > > > >> > > >> > > > > > >> mvn clean install -P fastinstall > > >> > > > > > >> > > >> > > > > > >> After this it would be nice to add > camel-springdoc-starter > > >> to one > > >> > > of > > >> > > > > > >> the REST examples at > > >> > > > > > >> https://github.com/apache/camel-spring-boot-examples > > >> > > > > > >> > > >> > > > > > >> And then update the readme file with some details. > > >> > > > > > >> > > >> > > > > > >> And you are also welcome to write a guest blog to be > posted > > >> on the > > >> > > > > > >> Camel front page about this new feature in Camel 3.13. > > >> > > > > > >> > > >> > > > > > >> If you have a JIRA account then let me know the username > > >> then I > > >> > > can > > >> > > > > > >> grant your karma to assign the ticket at > > >> > > > > > >> https://issues.apache.org/jira/browse/CAMEL-17061 > > >> > > > > > >> > > >> > > > > > >> On Sun, Oct 10, 2021 at 2:14 PM Claus Ibsen < > > >> > > [email protected]> > > >> > > > > > >> wrote: > > >> > > > > > >> > > > >> > > > > > >> > Hi > > >> > > > > > >> > > > >> > > > > > >> > Okay I have it almost working in the sprindoc UI. > > >> > > > > > >> > However there is a glitch when using servlet as you > need to > > >> > > have the > > >> > > > > > >> > servlet run in its own context-path so it does not > affect > > >> > > > > spring-boot, > > >> > > > > > >> > eg that is why it runs with /camel/* by default. > > >> > > > > > >> > However the UI when you click "try it out" then it > invokes > > >> the > > >> > > > > service > > >> > > > > > >> > without that content-path. > > >> > > > > > >> > > > >> > > > > > >> > So I need to find a solution for this in rest-dsl + > > >> servlet + > > >> > > > > open-api > > >> > > > > > >> > - however if I invoke the correct url then it works > nice. > > >> > > > > > >> > > > >> > > > > > >> > There is also some tags that just say "camel" we can > maybe > > >> > > enrich > > >> > > > > this > > >> > > > > > >> > by default to have a bit more nicer details like the > > >> Actuator > > >> > > does. > > >> > > > > > >> > > > >> > > > > > >> > The work is pushed on a branch here > > >> > > > > > >> > > > >> https://github.com/apache/camel-spring-boot/tree/CAMEL-17061 > > >> > > > > > >> > > > >> > > > > > >> > On Sun, Oct 10, 2021 at 12:28 PM Claus Ibsen < > > >> > > [email protected] > > >> > > > > > > > >> > > > > > >> wrote: > > >> > > > > > >> > > > > >> > > > > > >> > > Hi > > >> > > > > > >> > > > > >> > > > > > >> > > Yeah that is a good idea. However as springdoc is for > > >> spring > > >> > > boot > > >> > > > > > >> > > only, then lets put it only into camel-spring-boot > > >> project. > > >> > > > > > >> > > > > >> > > > > > >> > > camel-springdoc-starter > > >> > > > > > >> > > > > >> > > > > > >> > > I have some prototype code I put into > camel-openapi-java > > >> that > > >> > > can > > >> > > > > be > > >> > > > > > >> > > moved into this new springdoc-starter and used as a > > >> starting > > >> > > > > point. > > >> > > > > > >> > > Then you should be able to just add > > >> camel-springdoc-starter > > >> > > JAR as > > >> > > > > > >> > > dependency to your project and then it comes with > the UI > > >> > > included. > > >> > > > > > >> > > > > >> > > > > > >> > > I will put my work into a branch on camel-spring-boot > > >> > > upstream, > > >> > > > > then > > >> > > > > > >> > > you are welcome to look at that and work on the > > >> > > > > > >> > > camel-springdoc-starter. > > >> > > > > > >> > > Documentation should be included in the > > >> > > > > > >> > > src/main/docs/springdoc-starter.adoc file. > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > On Sat, Oct 9, 2021 at 6:16 PM Steve973 < > > >> [email protected]> > > >> > > > > wrote: > > >> > > > > > >> > > > > > >> > > > > > >> > > > That sounds great! I was able to get both > definitions > > >> to > > >> > > > > coexist, > > >> > > > > > >> although > > >> > > > > > >> > > > I am not sure if it is entirely ideal or not. I > > >> achieved > > >> > > this > > >> > > > > in > > >> > > > > > >> the > > >> > > > > > >> > > > configuration: > > >> > > > > > >> > > > > > >> > > > > > >> > > > springdoc: > > >> > > > > > >> > > > show-actuator: true > > >> > > > > > >> > > > swagger-ui: > > >> > > > > > >> > > > disable-swagger-default-url: true > > >> > > > > > >> > > > urls: > > >> > > > > > >> > > > # Definition generated by springdoc for the > > >> actuator > > >> > > > > endpoints > > >> > > > > > >> > > > - url: /v3/api-docs > > >> > > > > > >> > > > name: Spring Boot Actuator > > >> > > > > > >> > > > # The Camel REST DSL swagger > > >> > > > > > >> > > > - url: /api/api-doc > > >> > > > > > >> > > > name: Rest API > > >> > > > > > >> > > > > > >> > > > > > >> > > > Now, if we change the selection at the top, where > it > > >> says > > >> > > > > "Select a > > >> > > > > > >> > > > definition", we can choose between the REST API > and the > > >> > > Spring > > >> > > > > Boot > > >> > > > > > >> > > > Actuator endpoints. > > >> > > > > > >> > > > > > >> > > > > > >> > > > I do like your idea, though. If we can have these > > >> things > > >> > > work > > >> > > > > > >> together, > > >> > > > > > >> > > > and more easily, that would be even better. > Should I > > >> > > attempt to > > >> > > > > > >> create a > > >> > > > > > >> > > > camel-springdoc-java component and starter? I can > see > > >> this > > >> > > > > working > > >> > > > > > >> well > > >> > > > > > >> > > > with the REST DSL, and with other spring boot rest > > >> > > controllers > > >> > > > > all > > >> > > > > > >> > > > coexisting in the same project. In the forums, > etc, I > > >> saw > > >> > > more > > >> > > > > > >> than a > > >> > > > > > >> > > > couple of questions about getting a UI on top of > > >> swagger, so > > >> > > > > this > > >> > > > > > >> might be > > >> > > > > > >> > > > a useful thing for some people. > > >> > > > > > >> > > > > > >> > > > > > >> > > > On Sat, Oct 9, 2021 at 11:57 AM Claus Ibsen < > > >> > > > > [email protected]> > > >> > > > > > >> wrote: > > >> > > > > > >> > > > > > >> > > > > > >> > > > > Hi Steven > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > Thanks for the work. I looked as well and we can > > >> likely > > >> > > make > > >> > > > > Camel > > >> > > > > > >> > > > > automatic enlist its rest-dsl into spring boot > so the > > >> > > > > springdoc > > >> > > > > > >> can > > >> > > > > > >> > > > > automatic discover it > > >> > > > > > >> > > > > > https://issues.apache.org/jira/browse/CAMEL-17061 > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > We do this in the -starter JARs and make it > possible > > >> to > > >> > > turn > > >> > > > > > >> on|off so > > >> > > > > > >> > > > > users can decide. > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > On Sat, Oct 9, 2021 at 5:23 PM Steve973 < > > >> > > [email protected]> > > >> > > > > > >> wrote: > > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > Please have a look at my working example. > When I > > >> get > > >> > > it all > > >> > > > > > >> working, and > > >> > > > > > >> > > > > > cleaned up, I can submit it as one of the camel > > >> example > > >> > > > > > >> modules, if that > > >> > > > > > >> > > > > > would be helpful. I would make the project > > >> resemble the > > >> > > > > other > > >> > > > > > >> examples > > >> > > > > > >> > > > > as > > >> > > > > > >> > > > > > closely as possible. I thought that being > able to > > >> > > include > > >> > > > > the > > >> > > > > > >> actuator > > >> > > > > > >> > > > > > endpoints would be a good illustration of how > > >> other REST > > >> > > > > > >> endpoints could > > >> > > > > > >> > > > > be > > >> > > > > > >> > > > > > included with the camel rest information. > > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > On Sat, Oct 9, 2021 at 10:59 AM Steve973 < > > >> > > > > [email protected]> > > >> > > > > > >> wrote: > > >> > > > > > >> > > > > > > > >> > > > > > >> > > > > > > Thank you, Claus. I have been chipping away > at > > >> this > > >> > > > > problem, > > >> > > > > > >> and it is > > >> > > > > > >> > > > > > > quite possible to point springdoc to the > > >> generated > > >> > > swagger > > >> > > > > > >> JSON. In my > > >> > > > > > >> > > > > > > application.yml: > > >> > > > > > >> > > > > > > > > >> > > > > > >> > > > > > > springdoc: > > >> > > > > > >> > > > > > > show-actuator: true > > >> > > > > > >> > > > > > > swagger-ui: > > >> > > > > > >> > > > > > > disable-swagger-default-url: true > > >> > > > > > >> > > > > > > url: /api/api-doc > > >> > > > > > >> > > > > > > > > >> > > > > > >> > > > > > > You can see that I have "show-actuator: > true", > > >> but I > > >> > > have > > >> > > > > not > > >> > > > > > >> gotten > > >> > > > > > >> > > > > this > > >> > > > > > >> > > > > > > to work, yet. I don't suppose that there is > any > > >> way > > >> > > to > > >> > > > > have > > >> > > > > > >> the camel > > >> > > > > > >> > > > > > > openapi java component include this in its > > >> openapi doc > > >> > > > > > >> generation, is > > >> > > > > > >> > > > > there? > > >> > > > > > >> > > > > > > > > >> > > > > > >> > > > > > > On Sat, Oct 9, 2021 at 10:11 AM Claus Ibsen < > > >> > > > > > >> [email protected]> > > >> > > > > > >> > > > > wrote: > > >> > > > > > >> > > > > > > > > >> > > > > > >> > > > > > >> Hi > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> At first thought I would assume springdoc > needs > > >> a > > >> > > way to > > >> > > > > > >> discover the > > >> > > > > > >> > > > > > >> Camel Rest DSL model (api doc). > > >> > > > > > >> > > > > > >> And maybe this can be done by exposing a > bean > > >> into > > >> > > Spring > > >> > > > > > >> that is of > > >> > > > > > >> > > > > > >> type OpenApi > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> @Bean > > >> > > > > > >> > > > > > >> public OpenApi camelRestDsl() { > > >> > > > > > >> > > > > > >> ... // some code here that gathers the > camel > > >> > > rest-dsl > > >> > > > > > >> model and > > >> > > > > > >> > > > > > >> return as bean > > >> > > > > > >> > > > > > >> } > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> However I am only speculating. > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> You can try to add a custom method in your > > >> sample > > >> > > app and > > >> > > > > > >> just > > >> > > > > > >> > > > > > >> hardcode some bogus open api model as above > and > > >> see > > >> > > if > > >> > > > > > >> springdoc > > >> > > > > > >> > > > > > >> detects this. > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> Otherwise it can help if you have time to > read > > >> into > > >> > > > > > >> springodc how to > > >> > > > > > >> > > > > > >> integrate with custom frameworks. > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> On Sat, Oct 9, 2021 at 1:37 PM Steve973 < > > >> > > > > [email protected]> > > >> > > > > > >> wrote: > > >> > > > > > >> > > > > > >> > > > >> > > > > > >> > > > > > >> > Hi, Claus. Thank you for the reply! You > can > > >> find > > >> > > > > > >> springdoc here: > > >> > > > > > >> > > > > > >> > https://springdoc.org/ and I moved my > > >> project from > > >> > > > > using > > >> > > > > > >> springfox > > >> > > > > > >> > > > > > >> because > > >> > > > > > >> > > > > > >> > springfox has only one developer, and > > >> springdoc is > > >> > > > > > >> maintained by a > > >> > > > > > >> > > > > > >> > community. The artifact that I am using > is > > >> > > > > > >> > > > > > >> > > "org.springdoc:springdoc-openapi-ui:1.5.11". > > >> I am > > >> > > > > using > > >> > > > > > >> Spring Boot > > >> > > > > > >> > > > > > >> 2.5.5, > > >> > > > > > >> > > > > > >> > and Camel 3.12.0. So that you can also > see > > >> what I > > >> > > am > > >> > > > > > >> doing, in > > >> > > > > > >> > > > > case I > > >> > > > > > >> > > > > > >> am > > >> > > > > > >> > > > > > >> > doing something that is prohibiting the > Camel > > >> > > OpenAPI > > >> > > > > > >> functionality > > >> > > > > > >> > > > > from > > >> > > > > > >> > > > > > >> > working correctly, I pushed my example to > > >> Github: > > >> > > > > > >> > > > > > >> > > > >> > > > > https://github.com/Steve973/spring-camel-rest-experiments > > >> > > > > > >> where I > > >> > > > > > >> > > > > am > > >> > > > > > >> > > > > > >> trying > > >> > > > > > >> > > > > > >> > out a minimal example just to see if I can > > >> get it > > >> > > > > > >> working. Thanks > > >> > > > > > >> > > > > > >> again! > > >> > > > > > >> > > > > > >> > > > >> > > > > > >> > > > > > >> > Steve > > >> > > > > > >> > > > > > >> > > > >> > > > > > >> > > > > > >> > On Sat, Oct 9, 2021 at 3:23 AM Claus > Ibsen < > > >> > > > > > >> [email protected]> > > >> > > > > > >> > > > > > >> wrote: > > >> > > > > > >> > > > > > >> > > > >> > > > > > >> > > > > > >> > > Hi > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > I have not tried that myself, can you > maybe > > >> point > > >> > > > > links > > >> > > > > > >> to where > > >> > > > > > >> > > > > this > > >> > > > > > >> > > > > > >> > > spring ui exists? > > >> > > > > > >> > > > > > >> > > And what version of SB and Camel are you > > >> using? > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > On Sat, Oct 9, 2021 at 12:37 AM > Steve973 < > > >> > > > > > >> [email protected]> > > >> > > > > > >> > > > > wrote: > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > Hello. I am using spring boot with > the > > >> camel > > >> > > rest > > >> > > > > dsl > > >> > > > > > >> and it is > > >> > > > > > >> > > > > > >> working > > >> > > > > > >> > > > > > >> > > > great. I can also have swagger JSON > > >> generated > > >> > > and > > >> > > > > > >> accessible. > > >> > > > > > >> > > > > But > > >> > > > > > >> > > > > > >> I > > >> > > > > > >> > > > > > >> > > would > > >> > > > > > >> > > > > > >> > > > like to use the springdoc openapi user > > >> > > interface to > > >> > > > > > >> interact > > >> > > > > > >> > > > > with > > >> > > > > > >> > > > > > >> my rest > > >> > > > > > >> > > > > > >> > > > endpoints. I have tried for hours, > and I > > >> have > > >> > > not > > >> > > > > > >> been able to > > >> > > > > > >> > > > > get > > >> > > > > > >> > > > > > >> the > > >> > > > > > >> > > > > > >> > > UI > > >> > > > > > >> > > > > > >> > > > to come up. Does anyone know if it is > > >> > > possible to > > >> > > > > use > > >> > > > > > >> > > > > camel-rest > > >> > > > > > >> > > > > > >> and the > > >> > > > > > >> > > > > > >> > > > springdoc openapi user interface > together? > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > -- > > >> > > > > > >> > > > > > >> > > Claus Ibsen > > >> > > > > > >> > > > > > >> > > ----------------- > > >> > > > > > >> > > > > > >> > > http://davsclaus.com @davsclaus > > >> > > > > > >> > > > > > >> > > Camel in Action 2: > > >> > > https://www.manning.com/ibsen2 > > >> > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > >> -- > > >> > > > > > >> > > > > > >> Claus Ibsen > > >> > > > > > >> > > > > > >> ----------------- > > >> > > > > > >> > > > > > >> http://davsclaus.com @davsclaus > > >> > > > > > >> > > > > > >> Camel in Action 2: > > >> https://www.manning.com/ibsen2 > > >> > > > > > >> > > > > > >> > > >> > > > > > >> > > > > > > > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > -- > > >> > > > > > >> > > > > Claus Ibsen > > >> > > > > > >> > > > > ----------------- > > >> > > > > > >> > > > > http://davsclaus.com @davsclaus > > >> > > > > > >> > > > > Camel in Action 2: > https://www.manning.com/ibsen2 > > >> > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > > > >> > > > > > >> > > -- > > >> > > > > > >> > > Claus Ibsen > > >> > > > > > >> > > ----------------- > > >> > > > > > >> > > http://davsclaus.com @davsclaus > > >> > > > > > >> > > Camel in Action 2: https://www.manning.com/ibsen2 > > >> > > > > > >> > > > >> > > > > > >> > > > >> > > > > > >> > > > >> > > > > > >> > -- > > >> > > > > > >> > Claus Ibsen > > >> > > > > > >> > ----------------- > > >> > > > > > >> > http://davsclaus.com @davsclaus > > >> > > > > > >> > Camel in Action 2: https://www.manning.com/ibsen2 > > >> > > > > > >> > > >> > > > > > >> > > >> > > > > > >> > > >> > > > > > >> -- > > >> > > > > > >> Claus Ibsen > > >> > > > > > >> ----------------- > > >> > > > > > >> http://davsclaus.com @davsclaus > > >> > > > > > >> Camel in Action 2: https://www.manning.com/ibsen2 > > >> > > > > > >> > > >> > > > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > -- > > >> > > > > Claus Ibsen > > >> > > > > ----------------- > > >> > > > > http://davsclaus.com @davsclaus > > >> > > > > Camel in Action 2: https://www.manning.com/ibsen2 > > >> > > > > > > >> > > > > >> > > > > >> > > > > >> > > -- > > >> > > Claus Ibsen > > >> > > ----------------- > > >> > > http://davsclaus.com @davsclaus > > >> > > Camel in Action 2: https://www.manning.com/ibsen2 > > >> > > > > >> > > >> > > >> > > >> -- > > >> Claus Ibsen > > >> ----------------- > > >> http://davsclaus.com @davsclaus > > >> Camel in Action 2: https://www.manning.com/ibsen2 > > >> > > > > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 >
