Has anyone used the Assembler API to develop applications that dont leverage the spring framework? Even better, is there any way the Assembler API can be leveraged without using any framework (just pojos)?
Trying to understand how a UI migration from the presentation API or the content API to Assembler API would look like for legacy Endeca implementations.
Certainly possible to do this and I believe there are customers who choose to go this route. One application off the top of my head that does this is the ATG/Endeca sample app. Also, if you attempt to integrate Endeca into the Commerce Reference Store (CRS), it's typically a more POJO style experience (.properties files instead of Spring XML, etc.).
Now, both of those probably have too much "overhead" and may not really apply to non-ATG implementations. All of the API calls are documented, i think the key is probably to start it as a "conversion project" and start to port over the different elements of the configuration (Assembler Factory initialization, etc.) to something POJO-based.
If the question is simply integrating the existing assembler logic in a non-Spring application, you should be able to hit the RESTful service to get JSON/XML back and forth to your application. Your cartridges and templates would still be managed inside Spring and via the assembler-context but you could grab the content and use it in pretty much any scenario.
Note that the assembler service, by default, uses a different set of configuration files (reference/discover-service/WEB-INF/*) than the Discover Data or Discover Authoring applications.
Hope that helps,
I think you need to look at it from two perspective:
1. Presentation API don't really utilize EM/PB templates, so if you using them, their path to Assembler API will be different. You will mostly be working with QueryBuilder classes.
2. Content API to Assembler API is easier migration, as the concepts are similar, both have rich set for working with templates & cartridges.
The sample discover application does use spring heavily, but underlying it using all the Assembler API's only. As you look at the JSP's used in discover app, you will realize the main thing spring app is doing is storing the incoming objects in request, so JSTL tags could use them. You could potentially reuse/repurpose some of discover app taglib's as the code is embedded in tag declaration file.
Thanks Patrick. I'm thinking of developing a 'reference implementation'-type application that doesnt use spring to understand the API before diving into the actual conversion of the content API based site. My concern is that the API is tied deeply with spring. And the webcontext isnt available in some cases.
Naresh - which discover app are you refering to?
Discover is discover-electronics app, you can see under Tools & Framework/reference. This app is spring based, but as you dig deeper, it is using Assembler API's only. Your idea to create your sample non-spring based ref app is good, so you can use the API as you want to.
I did look through both Discover Electronics and the Discover service apps....but I dont think I can build a pure in-line java (like the orange reference application) application that doesnt have any spring components at all (due to assembler jar dependency issues). I dont believe the assembler API is usable in a non-spring and/or webcontext unavailable use case (essentially any non-ATG ecommerce platform)...
As far as I can see, there are no query builder (eneQuery/eneContentQuery equivalent) classes in this API...that is you cant build and execute a query in your code (if a page requires 2 queries, for example).
Question for Oracle product management: Will there be an update to the content assembler API which will work with Experience Manager of Tools and Frameworks 3.1.1 version?
You are right, I also looked at it and based on the Assembler Development Guide, it is assuming that spring framework is used if direct Java API's have to used, only other option I see is to use Assembler as service to return XML or JSON. It would have been a better design where core classes could be used with any java framework, and there could still be a specialized wrapper to work with spring.
Did you look at BasicQueryBuilder API under Assembler? I think that may allow you to run your own queries.