Hi Nuwan, I'm most certain that these are stored as multiple child elements under a single parent, and there is no difference compared to storing them side-by-side vs in a single group, especially if you use something like AXIOM to parse the XML. Given the amount of migration involved in changing what we have, I'm not convinced that there is any significant benefit of changing that.
Thanks, Senaka. On Wed, Aug 7, 2013 at 10:17 AM, Nuwan Bandara <[email protected]> wrote: > Hi Senaka, > > The issue is when we pass an array of attributes (artifact.setAttributes) > it saves as multiple root elements (same name) in the XML which is wrong. > IFAIK that's the only issue, have its as CSV gives more meaning like > <screenshots>foo,bar,mar</screenshots>. I think this need to be handled > at the generic artifact manager. WDYT ? > > Regards, > /Nuwan > > > On Wed, Aug 7, 2013 at 10:11 AM, Senaka Fernando <[email protected]> wrote: > >> Hi Dulitha, >> >> Apart from the way things are stored in XML, is there any other concerns >> WRT this? I didn't understand the benefit of having CSVs. >> >> Thanks, >> Senaka. >> >> >> On Wed, Aug 7, 2013 at 9:22 AM, Dulitha Wijewantha <[email protected]>wrote: >> >>> Hi guys, >>> I am using the artifact.js module provided by jaggery core to insert >>> JSON based javascript objects to the registry. Internally it converts them >>> to xml before using the GenericArtifactManager to insert them to Greg. >>> We are passing all the attributes to a method that converts them to xml - >>> Below is the array - >>> >>> >>> >>> var screenshot1 = files['screenshot1File']; >>> >>> >>> >>> >>> >>> screenshot1 = saveFile(screenshot1); >>> >>> var screenshot2 = files['screenshot2File']; >>> >>> >>> >>> >>> >>> screenshot2 = saveFile(screenshot2); >>> >>> var screenshot3 = files['screenshot3File']; >>> >>> >>> >>> >>> >>> screenshot3 = saveFile(screenshot3); >>> >>> var screenshots = [screenshot1, screenshot2, screenshot3]; >>> >>> >>> >>> >>> >>> Link <https://gist.github.com/dulichan/6171023#file-gistfile2-js> >>> >>> >>> Below is the method that creates the artifact (from json to xml in >>> artifact.js) >>> >>> var createArtifact = function (manager, options) { >>> >>> >>> >>> >>> >>> var name, attribute, i, length, lc, >>> >>> >>> >>> >>> >>> artifact = manager.newGovernanceArtifact(new >>> QName(options.name)), >>> >>> >>> >>> >>> >>> attributes = options.attributes; >>> for (name in attributes) { >>> if (attributes.hasOwnProperty(name)) { >>> attribute = attributes[name]; >>> if (attribute instanceof Array) { >>> >>> >>> >>> >>> >>> /*length = attribute.length; >>> for (i = 0; i < length; i++) { >>> >>> >>> >>> >>> >>> artifact.addAttribute(name, attribute[i]); >>> }*/ >>> artifact.setAttributes(name, attribute); >>> >>> >>> >>> >>> >>> } else { >>> artifact.setAttribute(name, attribute); >>> >>> >>> >>> >>> >>> } >>> } >>> } >>> if (options.id) { >>> artifact.id = options.id; >>> } >>> if (options.content) { >>> if (options.content instanceof Stream) { >>> >>> >>> >>> >>> >>> >>> artifact.setContent(IOUtils.toByteArray(options.content.getStream())); >>> >>> >>> >>> >>> >>> } else { >>> artifact.setContent(new >>> java.lang.String(options.content).getBytes()); >>> >>> >>> >>> >>> >>> } >>> } >>> >>> lc = options.lifecycles; >>> >>> if (lc) { >>> length = lc.length; >>> >>> >>> >>> >>> >>> for (i = 0; i < length; i++) { >>> >>> >>> >>> >>> >>> artifact.attachLifecycle(lc[i]); >>> } >>> } >>> return artifact; >>> }; >>> Link <https://gist.github.com/dulichan/6171023#file-gistfile1-js> >>> >>> >>> The culprit method here is the setAttributes - it saves the xml as >>> >>> <screenshots>one</screenshots> >>> <screenshots>two</screenshots> >>> >>> >>> >>> >>> >>> <screenshots>three</screenshots> >>> Link <https://gist.github.com/dulichan/6171023#file-gistfile3-xml> >>> >>> >>> Temporarily I concatenated the array with commas - >>> var screenshots = screenshot1+","+screenshot2+","+screenshot3; >>> >>> And convert them to an array with a utility method from my side. This >>> should ideally be handled in the artifact.js module. WTDY? >>> >>> Thanks. >>> -- >>> Chan (Dulitha Wijewantha) >>> Software Engineer - Mobile Development >>> WSO2Mobile >>> Lean.Enterprise.Mobileware >>> * ~Email [email protected] <[email protected]>* >>> * ~Mobile +94712112165* >>> * ~Website dulithawijewantha.com >>> * >>> * ~Blog blog.dulithawijewantha.com<http://dulichan.github.io/chan/> >>> * >>> * ~Twitter @dulitharw <https://twitter.com/dulitharw>* >>> >> >> >> >> -- >> * <http://us13.wso2con.com/> >> * >> * >> * >> *Senaka Fernando* >> Senior Technical Lead; WSO2 Inc.; http://wso2.com* >> Member; Apache Software Foundation; http://apache.org >> >> E-mail: senaka AT wso2.com >> **P: +1 408 754 7388; ext: 51736*; *M: +94 77 322 1818 >> Linked-In: http://linkedin.com/in/senakafernando >> >> *Lean . Enterprise . Middleware >> > > > > -- > *Thanks & Regards, > > Nuwan Bandara > Technical Lead; **WSO2 Inc. * > *lean . enterprise . middleware | http://wso2.com * > *blog : http://nuwanbando.com; email: [email protected]; phone: +94 11 763 > 9629 > * > <http://www.nuwanbando.com/> > -- * <http://us13.wso2con.com/> * * * *Senaka Fernando* Senior Technical Lead; WSO2 Inc.; http://wso2.com* Member; Apache Software Foundation; http://apache.org E-mail: senaka AT wso2.com **P: +1 408 754 7388; ext: 51736*; *M: +94 77 322 1818 Linked-In: http://linkedin.com/in/senakafernando *Lean . Enterprise . Middleware
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
