The Adobe APIs (FormsService and OutputService) only allow custom XCIs to be provided as Document objects. It would be more flexible if a client could provide a crx or file path instead. That would allow them to store the XCI on the AEM server instead of on the client and would prevent having to repeatedly send the XCI with each request (although the XCI would likely still be re-read on each request).
This would mean changing the setXci() method on each of the 4 ArgumentBuilders in the OutputService and the ArgumentBuilder on the FormsService. It would also mean adding code to the rest-services.client, rest-services.server and fluentforms libraries to handle this.
The setXci() method would likely have to be overloaded to also accept a PathOrUrl object. On the server side, the PathOrUrl would be checked for being either a CRX Url or a file path. If it's something else, then an exception would be thrown (unless the implementer wants to implement code to read from any URL). If the PathOrUrl validation passes, then the code would read from the specified location.
Implementing the file reading code would be pretty trivial. The CRX reading code may require more work.
The Adobe APIs (FormsService and OutputService) only allow custom XCIs to be provided as Document objects. It would be more flexible if a client could provide a crx or file path instead. That would allow them to store the XCI on the AEM server instead of on the client and would prevent having to repeatedly send the XCI with each request (although the XCI would likely still be re-read on each request).
This would mean changing the
setXci()
method on each of the 4 ArgumentBuilders in the OutputService and the ArgumentBuilder on the FormsService. It would also mean adding code to therest-services.client
,rest-services.server
andfluentforms
libraries to handle this.The
setXci()
method would likely have to be overloaded to also accept aPathOrUrl
object. On the server side, thePathOrUrl
would be checked for being either a CRX Url or a file path. If it's something else, then an exception would be thrown (unless the implementer wants to implement code to read from any URL). If thePathOrUrl
validation passes, then the code would read from the specified location.Implementing the file reading code would be pretty trivial. The CRX reading code may require more work.