[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openmrs-dev
Subject:    About regexps
From:       Lluis Martinez <lluismf () gmail ! com>
Date:       2013-02-28 16:02:55
Message-ID: CAAmjNgYS4smWuSG4-_OH9nN9pRkK_EmaukChD=N2kRowntt9mQ () mail ! gmail ! com
[Download RAW message or body]

I agree partly with you, for simple patterns it's ok to use regexp, but for
others it's better a parser or even a scripting engine.
For instance I wrote this a month ago:
...
Pattern p = Pattern.compile("(?<=\\w)(?=\\W)|(?<=\\W)(?=\\w)");
...
And now I don't remember how it works (I got it from stack overflow).

Cheers

On Thu, Feb 28, 2013 at 3:59 PM, Burke Mamlin <burke@openmrs.org> wrote:

> I'm not really inclined to learn regular expressions (it's kinda
> > obfuscated code for me).
> 
> 
> Regular expressions can be an extremely efficient and produce much more
> easily explained code to solving a problem when there are even mildly
> complex patterns within text.  Sure, you can get regex-happy and overuse
> them, which is no good… but even a sophisticated regular expression along
> with a comment in the code explaining what it's doing that reduces the code
> size by 50% is a winner, IMHO. :-)
> 
> -Burke
> 
> 
> On Thu, Feb 28, 2013 at 6:55 AM, Lluis Martinez <lluismf@gmail.com> wrote:
> 
> > Thanks for the links, but to be sincere I'm not really inclined to learn
> > regular expressions (it's kinda obfuscated code for me).
> > 
> > Currently the resource name is embedded in the URI and can be grabbed
> > with a simple split if needed (as long as the UUID do not contain slashes),
> > but I prefer to avoid it.
> > 
> > Cheers
> > 
> > 
> > On Thu, Feb 28, 2013 at 6:12 AM, Burke Mamlin <burke@openmrs.org> wrote:
> > 
> > > If you want to play & learn regular expressions, visit the regular
> > > expression playground<http://burkeware.com/software/regex_playground.html>.
> > > A great resource for regular expressions is \
> > > regular-expressions.info<http://www.regular-expressions.info/>, especially the \
> > > basic & advanced parts of their \
> > > reference<http://www.regular-expressions.info/reference.html>pages. 
> > > +1000 for pretty/clean json, XML that doesn't rely on the sequence of
> > > elements, and not a single <object> tag in our XML. :-)
> > > 
> > > -Burke
> > > 
> > > 
> > > On Wed, Feb 27, 2013 at 6:57 PM, Lluis Martinez <lluismf@gmail.com>wrote:
> > > 
> > > > I used Roger's trick to get the resource name of the self link, however
> > > > I added a new attribute to the Hyperlink class (declared as transient,
> > > > which is enough for XStream but not for Jackson). It's possible to get rid
> > > > of it and parse the link URI instead, but it's hacky and I'm not good at
> > > > regular expressions. Let me know if you're all happy now :-)
> > > > 
> > > > Cheers
> > > > 
> > > > 
> > > > On Wed, Feb 27, 2013 at 10:08 PM, Darius Jazayeri <darius@openmrs.org>wrote:
> > > > 
> > > > > To summarize a quick discussion we had on today's design call:
> > > > > 
> > > > > It would be better if the entries in a list were called <item> instead
> > > > > of <object>. (But if it's not in a list, then <object> is better.)
> > > > > 
> > > > > It would be even better to user Roger's clever trick to the get the
> > > > > resource name of the self link.
> > > > > 
> > > > > But in any case we shouldn't spend a ton of effort on this...
> > > > > 
> > > > > -Darius
> > > > > 
> > > > > 
> > > > > On Wed, Feb 27, 2013 at 9:23 AM, Friedman, Roger (CDC/CGH/DGHA) (CTR)
> > > > > <rdf4@cdc.gov> wrote:
> > > > > 
> > > > > > @Burke --****
> > > > > > 
> > > > > > We don't want to change the existing json output
> > > > > > format at this point because it would impact everyone using RESTWS.  \
> > > > > > That's why the change can't affect SimpleObject.  ****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > We can certainly take the names of internal objects
> > > > > > from their self links and use those in the XML (although a subclass would
> > > > > > refer to the most general class in the inheritance tree, not the most
> > > > > > useful).  However, not all resources are unnamed -- a field can contain a
> > > > > > resource or list of resources and carry the name of the field.  I don't
> > > > > > think we want****
> > > > > > 
> > > > > > <concept>****
> > > > > > 
> > > > > > <name>****
> > > > > > 
> > > > > > <conceptname>****
> > > > > > 
> > > > > > 
> > > > > > <nametype>FULLY-DEFINED</nametype>****
> > > > > > 
> > > > > > 
> > > > > > <locale>en-US</locale>****
> > > > > > 
> > > > > > 
> > > > > > <name>Aspirin</name>****
> > > > > > 
> > > > > > 
> > > > > > <uuid>d2fddd31-5a0e-49e6-9ff2-522cd35ab01a</uuid>****
> > > > > > 
> > > > > > </conceptname>****
> > > > > > 
> > > > > > </name>****
> > > > > > 
> > > > > > ....****
> > > > > > 
> > > > > > </concept>****
> > > > > > 
> > > > > > or****
> > > > > > 
> > > > > > <concept>****
> > > > > > 
> > > > > > <conceptname fieldname="name">****
> > > > > > 
> > > > > > <string
> > > > > > fieldname="nametype">FULLY-DEFINED</string>****
> > > > > > 
> > > > > > <string
> > > > > > fieldname="locale">en-US</string>****
> > > > > > 
> > > > > > <string
> > > > > > fieldname="name">Aspirin</string>****
> > > > > > 
> > > > > > <uuid
> > > > > > fieldname="uuid">d2fddd31-5a0e-49e6-9ff2-522cd35ab01a</uuid>****
> > > > > > 
> > > > > > </conceptname>****
> > > > > > 
> > > > > > ....****
> > > > > > 
> > > > > > </concept>****
> > > > > > 
> > > > > > but something at corresponds to the json like****
> > > > > > 
> > > > > > <object>****
> > > > > > 
> > > > > > <name>****
> > > > > > 
> > > > > > 
> > > > > > <nametype>FULLY-DEFINED</nametype>****
> > > > > > 
> > > > > > <locale>en-US</locale>
> > > > > > ****
> > > > > > 
> > > > > > <name>Aspirin</name>*
> > > > > > ***
> > > > > > 
> > > > > > 
> > > > > > <uuid>d2fddd31-5a0e-49e6-9ff2-522cd35ab01a</uuid>****
> > > > > > 
> > > > > > </name>****
> > > > > > 
> > > > > > ....****
> > > > > > 
> > > > > > </object>****
> > > > > > 
> > > > > > The second form wouldn't be too bad, but there would have to be a
> > > > > > conventional datatype for lists (list-of-<resource-name>?).****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > *From:* dev@openmrs.org [mailto:dev@openmrs.org] *On Behalf Of *Burke
> > > > > > Mamlin
> > > > > > *Sent:* Wednesday, February 27, 2013 10:20 AM
> > > > > > *To:* dev@openmrs.org
> > > > > > *Subject:* Re: [OPENMRS-JIRA] (RESTWS-206) When the client specifies
> > > > > > an Accept-Type of xml we should produce better XML****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > Do we have to use "object" for the element name?  There isn't an
> > > > > > option to use "name" in the XML and have it anonymous in the JSON?***
> > > > > > *
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > -Burke****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > On Wed, Feb 27, 2013 at 4:58 AM, Lluis Martinez <lluismf@gmail.com>
> > > > > > wrote:****
> > > > > > 
> > > > > > Hi Darius,
> > > > > > 
> > > > > > It's clear now, JSON output should be not affected, I'll tweak the
> > > > > > XML converter to add the object node. I hope this time we'll get it right
> > > > > > > -)
> > > > > > 
> > > > > > Cheers****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > On Wed, Feb 27, 2013 at 3:33 AM, Darius Jazayeri <darius@openmrs.org>
> > > > > > wrote:****
> > > > > > 
> > > > > > Hi Lluis,****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > Sorry, I didn't look closely, and I had not appreciated that you made
> > > > > > the change in SimpleObject builder.****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > I definitely think that's a mistake. (But I'm open for disagreement
> > > > > > here.)****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > I think that:****
> > > > > > 
> > > > > > * JSON is our primary output format. XML is sort of a bonus.****
> > > > > > 
> > > > > > * We should optimize for JSON, while still making the XML not suck***
> > > > > > *
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > I would expect this when I get a single concept:****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > JSON:****
> > > > > > 
> > > > > > {****
> > > > > > 
> > > > > > "uuid" : "15f83cd6-64e9-4e06-a5f9-364d3b14a43d",****
> > > > > > 
> > > > > > "display" : "ASPIRIN",****
> > > > > > 
> > > > > > // many more fields about the concept****
> > > > > > 
> > > > > > "names": [****
> > > > > > 
> > > > > > {****
> > > > > > 
> > > > > > "uuid" : "d2fddd31-5a0e-49e6-9ff2-522cd35ab01a",****
> > > > > > 
> > > > > > "display" : "ASA",****
> > > > > > 
> > > > > > // links too, about the name****
> > > > > > 
> > > > > > },****
> > > > > > 
> > > > > > // more names****
> > > > > > 
> > > > > > ],****
> > > > > > 
> > > > > > // etc****
> > > > > > 
> > > > > > }****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > To get a name's display, I'd do "obj.names[0].display". As I
> > > > > > understand it you've changed things so this would instead be
> > > > > > "obj.names[0].name.display" which I don't like.****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > XML:****
> > > > > > 
> > > > > > <object>****
> > > > > > 
> > > > > > <uuid>15f83cd6-64e9-4e06-a5f9-364d3b14a43d</uuid>****
> > > > > > 
> > > > > > <display>ASPIRIN</display>****
> > > > > > 
> > > > > > // many more fields about the concept****
> > > > > > 
> > > > > > <names>****
> > > > > > 
> > > > > > <object>****
> > > > > > 
> > > > > > <uuid>d2fddd31-5a0e-49e6-9ff2-522cd35ab01a</uuid>****
> > > > > > 
> > > > > > <display>ASA</display>****
> > > > > > 
> > > > > > // links too, about the name****
> > > > > > 
> > > > > > </object>****
> > > > > > 
> > > > > > // more names****
> > > > > > 
> > > > > > </names>****
> > > > > > 
> > > > > > // etc****
> > > > > > 
> > > > > > </object>****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > I think that querying this document via xpath will end up needing
> > > > > > some extra "object" nodes, which is annoying, but I'd rather make the \
> > > > > > xpath more annoying, than to make the JSON harder to work with.****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > Am I getting this right?****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > -Darius****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > On Tue, Feb 26, 2013 at 6:15 PM, Lluis Martinez (JIRA) <
> > > > > > jira-noreply@openmrs.org> wrote:****
> > > > > > 
> > > > > > ****
> > > > > > 
> > > > > > ****Lluis \
> > > > > > Martinez<https://tickets.openmrs.org/secure/ViewProfile.jspa?name=lluismf>commented \
> > > > > > on RESTWS-206 <https://tickets.openmrs.org/browse/RESTWS-206> ****
> > > > > > 
> > > > > > *When the client specifies an Accept-Type of xml we should produce
> > > > > > better XML* <https://tickets.openmrs.org/browse/RESTWS-206> ****
> > > > > > 
> > > > > > I don't think I understand your point, currently both JSON and XML
> > > > > > are almost identical (except for the root) because I did the change in \
> > > > > > the SimpleObject builder, not in the XML serialization. But as I said in \
> > > > > > the dev list, this is not good if somebody already parses JSON. ****
> > > > > > 
> > > > > > Concept in JSON format:****
> > > > > > 
> > > > > > {****
> > > > > > 
> > > > > > "uuid" : "15f83cd6-64e9-4e06-a5f9-364d3b14a43d",****
> > > > > > 
> > > > > > "display" : "ASPIRIN",****
> > > > > > 
> > > > > > "name" : {****
> > > > > > 
> > > > > > "display" : "ASPIRIN",****
> > > > > > 
> > > > > > "uuid" : "0e61fcd8-10ac-431f-9e96-70ab0b5b2385",****
> > > > > > 
> > > > > > "name" : "ASPIRIN",****
> > > > > > 
> > > > > > "locale" : "en",****
> > > > > > 
> > > > > > "localePreferred" : true,****
> > > > > > 
> > > > > > "conceptNameType" : "FULLY_SPECIFIED",****
> > > > > > 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > }, {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385?v=full",****
> > > > > >  
> > > > > > "rel" : "full"****
> > > > > > 
> > > > > > } ],****
> > > > > > 
> > > > > > "resourceVersion" : "1.8"****
> > > > > > 
> > > > > > },****
> > > > > > 
> > > > > > "datatype" : {****
> > > > > > 
> > > > > > "uuid" : "8d4a4c94-c2cc-11de-8d13-0010c6dffd0f",****
> > > > > > 
> > > > > > "display" : "N/A - Not associated with a datatype (e.g., term answers, \
> > > > > > sets)",**** 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/conceptdatatype/8d4a4c94-c2cc-11de-8d13-0010c6dffd0f",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > } ]****
> > > > > > 
> > > > > > },****
> > > > > > 
> > > > > > "conceptClass" : {****
> > > > > > 
> > > > > > "uuid" : "3d065ed4-b0b9-4710-9a17-6d8c4fd259b7",****
> > > > > > 
> > > > > > "display" : "Drug - Drug",****
> > > > > > 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/conceptclass/3d065ed4-b0b9-4710-9a17-6d8c4fd259b7",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > } ]****
> > > > > > 
> > > > > > },****
> > > > > > 
> > > > > > "set" : false,****
> > > > > > 
> > > > > > "version" : "",****
> > > > > > 
> > > > > > "retired" : false,****
> > > > > > 
> > > > > > "names" : [ {****
> > > > > > 
> > > > > > "name" : {****
> > > > > > 
> > > > > > "uuid" : "d2fddd31-5a0e-49e6-9ff2-522cd35ab01a",****
> > > > > > 
> > > > > > "display" : "ASA",****
> > > > > > 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/d2fddd31-5a0e-49e6-9ff2-522cd35ab01a",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > } ]****
> > > > > > 
> > > > > > }****
> > > > > > 
> > > > > > }, {****
> > > > > > 
> > > > > > "name" : {****
> > > > > > 
> > > > > > "uuid" : "0e61fcd8-10ac-431f-9e96-70ab0b5b2385",****
> > > > > > 
> > > > > > "display" : "ASPIRIN",****
> > > > > > 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > } ]****
> > > > > > 
> > > > > > }****
> > > > > > 
> > > > > > } ],****
> > > > > > 
> > > > > > "descriptions" : [ {****
> > > > > > 
> > > > > > "description" : {****
> > > > > > 
> > > > > > "uuid" : "7ae2d5db-2aab-49b9-a256-7c258eaab067",****
> > > > > > 
> > > > > > "display" : "Drug used for pain relief, fever, and antiplatelet \
> > > > > > actions.",**** 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/description/7ae2d5db-2aab-49b9-a256-7c258eaab067",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > } ]****
> > > > > > 
> > > > > > }****
> > > > > > 
> > > > > > } ],****
> > > > > > 
> > > > > > "mappings" : [ ],****
> > > > > > 
> > > > > > "answers" : [ ],****
> > > > > > 
> > > > > > "setMembers" : [ ],****
> > > > > > 
> > > > > > "links" : [ {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d",****
> > > > > >  
> > > > > > "rel" : "self"****
> > > > > > 
> > > > > > }, {****
> > > > > > 
> > > > > > "uri" : "NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d?v=full",****
> > > > > >  
> > > > > > "rel" : "full"****
> > > > > > 
> > > > > > } ],****
> > > > > > 
> > > > > > "resourceVersion" : "1.8"****
> > > > > > 
> > > > > > }****
> > > > > > 
> > > > > > {/code}****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > Concept in XML format:****
> > > > > > 
> > > > > > <org.openmrs.module.webservices.rest.SimpleObject>
> > > > > > <uuid>15f83cd6-64e9-4e06-a5f9-364d3b14a43d</uuid>
> > > > > > <display>ASPIRIN</display>
> > > > > > <name>
> > > > > > <display>ASPIRIN</display>
> > > > > > <uuid>0e61fcd8-10ac-431f-9e96-70ab0b5b2385</uuid>
> > > > > > <name>ASPIRIN</name>
> > > > > > <locale>en</locale>
> > > > > > <localePreferred>true</localePreferred>
> > > > > > <conceptNameType>FULLY_SPECIFIED</conceptNameType>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385</uri>
> > > > > >  </link>
> > > > > > <link>
> > > > > > <rel>full</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385?v=full</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > <resourceVersion>1.8</resourceVersion>
> > > > > > </name>
> > > > > > <datatype>
> > > > > > <uuid>8d4a4c94-c2cc-11de-8d13-0010c6dffd0f</uuid>
> > > > > > <display>N/A - Not associated with a datatype (e.g., term answers,
> > > > > > sets)</display>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/conceptdatatype/8d4a4c94-c2cc-11de-8d13-0010c6dffd0f</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > </datatype>
> > > > > > <conceptClass>
> > > > > > <uuid>3d065ed4-b0b9-4710-9a17-6d8c4fd259b7</uuid>
> > > > > > <display>Drug - Drug</display>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/conceptclass/3d065ed4-b0b9-4710-9a17-6d8c4fd259b7</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > </conceptClass>
> > > > > > <set>false</set>
> > > > > > <version/>
> > > > > > <retired>false</retired>
> > > > > > <names>
> > > > > > <name>
> > > > > > <uuid>d2fddd31-5a0e-49e6-9ff2-522cd35ab01a</uuid>
> > > > > > <display>ASA</display>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/d2fddd31-5a0e-49e6-9ff2-522cd35ab01a</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > </name>
> > > > > > <name>
> > > > > > <uuid>0e61fcd8-10ac-431f-9e96-70ab0b5b2385</uuid>
> > > > > > <display>ASPIRIN</display>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > </name>
> > > > > > </names>
> > > > > > <descriptions>
> > > > > > <description>
> > > > > > <uuid>7ae2d5db-2aab-49b9-a256-7c258eaab067</uuid>
> > > > > > <display>Drug used for pain relief, fever, and antiplatelet
> > > > > > actions.</display>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/description/7ae2d5db-2aab-49b9-a256-7c258eaab067</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > </description>
> > > > > > </descriptions>
> > > > > > <mappings/>
> > > > > > <answers/>
> > > > > > <setMembers/>
> > > > > > <links>
> > > > > > <link>
> > > > > > <rel>self</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d</uri>
> > > > > >  </link>
> > > > > > <link>
> > > > > > <rel>full</rel>
> > > > > > 
> > > > > > <uri>NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d?v=full</uri>
> > > > > >  </link>
> > > > > > </links>
> > > > > > <resourceVersion>1.8</resourceVersion>
> > > > > > </org.openmrs.module.webservices.rest.SimpleObject>****
> > > > > > 
> > > > > > {/code}****
> > > > > > 
> > > > > > This message is automatically generated by JIRA.
> > > > > > If you think it was sent incorrectly, please contact your JIRA
> > > > > > administrators<https://tickets.openmrs.org/secure/ContactAdministrators!default.jspa>
> > > > > >  For more information on JIRA, see:
> > > > > > http://www.atlassian.com/software/jira ****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > --
> > > > > > OpenMRS Developers: http://go.openmrs.org/dev
> > > > > > Post: dev@openmrs.org
> > > > > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > > > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > > > > 
> > > > > > ****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > --
> > > > > > OpenMRS Developers: http://go.openmrs.org/dev
> > > > > > Post: dev@openmrs.org
> > > > > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > > > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > > > > 
> > > > > > ****
> > > > > > 
> > > > > > ** **
> > > > > > 
> > > > > > --
> > > > > > OpenMRS Developers: http://go.openmrs.org/dev
> > > > > > Post: dev@openmrs.org
> > > > > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > > > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > > > > 
> > > > > > ****
> > > > > > 
> > > > > > --
> > > > > > OpenMRS Developers: http://go.openmrs.org/dev
> > > > > > Post: dev@openmrs.org
> > > > > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > > > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > 
> > > > > --
> > > > > OpenMRS Developers: http://go.openmrs.org/dev
> > > > > Post: dev@openmrs.org
> > > > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > > > 
> > > > > 
> > > > > 
> > > > 
> > > > --
> > > > OpenMRS Developers: http://go.openmrs.org/dev
> > > > Post: dev@openmrs.org
> > > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > > 
> > > > 
> > > > 
> > > 
> > > --
> > > OpenMRS Developers: http://go.openmrs.org/dev
> > > Post: dev@openmrs.org
> > > Unsubscribe: dev+unsubscribe@openmrs.org
> > > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > > 
> > > 
> > > 
> > 
> > --
> > OpenMRS Developers: http://go.openmrs.org/dev
> > Post: dev@openmrs.org
> > Unsubscribe: dev+unsubscribe@openmrs.org
> > Manage your OpenMRS subscriptions at https://id.openmrs.org/
> > 
> > 
> > 
> 
> --
> OpenMRS Developers: http://go.openmrs.org/dev
> Post: dev@openmrs.org
> Unsubscribe: dev+unsubscribe@openmrs.org
> Manage your OpenMRS subscriptions at https://id.openmrs.org/
> 
> 
> 

-- 
OpenMRS Developers: http://go.openmrs.org/dev
Post: dev@openmrs.org
Unsubscribe: dev+unsubscribe@openmrs.org
Manage your OpenMRS subscriptions at https://id.openmrs.org/


[Attachment #3 (text/html)]

I agree partly with you, for simple patterns it&#39;s ok to use regexp, but for \
others it&#39;s better a parser or even a scripting engine.<br>For instance I wrote \
this a month ago:<br>...<br>Pattern p = \
                Pattern.compile(&quot;(?&lt;=\\w)(?=\\W)|(?&lt;=\\W)(?=\\w)&quot;);<br>
                
...<br>And now I don&#39;t remember how it works (I got it from stack overflow). \
<br><br>Cheers<br><br><div class="gmail_quote">On Thu, Feb 28, 2013 at 3:59 PM, Burke \
Mamlin <span dir="ltr">&lt;<a href="mailto:burke@openmrs.org" \
target="_blank">burke@openmrs.org</a>&gt;</span> wrote:<br> <blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr"><div class="im"><blockquote \
class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 I&#39;m not really inclined to learn regular expressions (it&#39;s kinda obfuscated \
code for me). </blockquote>

<div class="gmail_extra"><br></div></div><div class="gmail_extra">Regular expressions \
can be an extremely efficient and produce much more easily explained code to solving \
a problem when there are even mildly complex patterns within text.  Sure, you can get \
regex-happy and overuse them, which is no good… but even a sophisticated regular \
expression along with a comment in the code explaining what it&#39;s doing that \
reduces the code size by 50% is a winner, IMHO. :-)</div> <span class="HOEnZb"><font \
color="#888888">

<div class="gmail_extra"><br></div></font></span><div class="gmail_extra"><span \
class="HOEnZb"><font color="#888888">-Burke</font></span><div><div \
class="h5"><br><br><div class="gmail_quote">On Thu, Feb 28, 2013 at 6:55 AM, Lluis \
Martinez <span dir="ltr">&lt;<a href="mailto:lluismf@gmail.com" \
target="_blank">lluismf@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Thanks \
for the links, but to be sincere I&#39;m not really inclined to learn regular \
expressions (it&#39;s kinda obfuscated code for me). <br>


<br>Currently the resource name is embedded in the URI and can be grabbed with a \
simple split if needed (as long as the UUID do not contain slashes), but I prefer to \
avoid it.<br> <br>Cheers<div><div><br><br><div class="gmail_quote">On Thu, Feb 28, \
2013 at 6:12 AM, Burke Mamlin <span dir="ltr">&lt;<a href="mailto:burke@openmrs.org" \
target="_blank">burke@openmrs.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 <div dir="ltr">If you want to play &amp; learn regular expressions, visit the <a \
href="http://burkeware.com/software/regex_playground.html" target="_blank">regular \
expression playground</a>.  A great resource for regular expressions is <a \
href="http://www.regular-expressions.info/" \
target="_blank">regular-expressions.info</a>, especially the basic &amp; advanced \
parts of their <a href="http://www.regular-expressions.info/reference.html" \
target="_blank">reference</a> pages.<div>





<br></div><div>+1000 for pretty/clean json, XML that doesn&#39;t rely on the sequence \
of elements, and not a single &lt;object&gt; tag in our XML. :-)</div><span><font \
                color="#888888"><div><div><br></div><div>
-Burke</div></div></font></span></div><div><div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Wed, Feb 27, 2013 at 6:57 PM, Lluis Martinez \
<span dir="ltr">&lt;<a href="mailto:lluismf@gmail.com" \
target="_blank">lluismf@gmail.com</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">






I used Roger&#39;s trick to get the resource name of the self link, however I added a \
new attribute to the Hyperlink class (declared as transient, which is enough for \
XStream but not for Jackson). It&#39;s possible to get rid of it and parse the link \
URI instead, but it&#39;s hacky and I&#39;m not good at regular expressions. Let me \
know if you&#39;re all happy now :-)<div>






<br></div><div>Cheers<div><div><br><br><div class="gmail_quote">On Wed, Feb 27, 2013 \
at 10:08 PM, Darius Jazayeri <span dir="ltr">&lt;<a href="mailto:darius@openmrs.org" \
target="_blank">darius@openmrs.org</a>&gt;</span> wrote:<br>





<blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 <div dir="ltr">To summarize a quick discussion we had on today&#39;s design \
call:<div><br></div><div>It would be better if the entries in a list were called \
&lt;item&gt; instead of &lt;object&gt;. (But if it&#39;s not in a list, then \
&lt;object&gt; is better.)</div>








<div><br></div><div>It would be even better to user Roger&#39;s clever trick to the \
get the resource name of the self link.</div><div><br></div><div>But in any case we \
shouldn&#39;t spend a ton of effort on this...</div>






<span><font color="#888888">

<div><br></div><div>-Darius</div></font></span></div><div><div><div \
class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 27, 2013 at 9:23 AM, \
Friedman, Roger (CDC/CGH/DGHA) (CTR) <span dir="ltr">&lt;<a \
href="mailto:rdf4@cdc.gov" target="_blank">rdf4@cdc.gov</a>&gt;</span> wrote:<br>








<blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">






<div link="blue" vlink="purple" lang="EN-US">
<div>
<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">@Burke \
--<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
We don&#39;t want to change the existing json output format at this point because it \
would impact everyone using RESTWS.  That&#39;s why the change  can&#39;t affect \
SimpleObject.  <u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> \
<u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
We can certainly take the names of internal objects from their self links and use \
those in the XML (although a subclass would refer to the most  general class in the \
inheritance tree, not the most useful).  However, not all resources are unnamed -- a \
field can contain a resource or list of resources and carry the name of the field.  I \
don&#39;t think we want<u></u><u></u></span></p>









<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;concept&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;name&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;conceptname&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;nametype&gt;FULLY-DEFINED&lt;/nametype&gt;<u></u><u></u></span></p>








<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;locale&gt;en-US&lt;/locale&gt;<u></u><u></u></span></p>






<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;name&gt;Aspirin&lt;/name&gt;<u></u><u></u></span></p>






<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
 </span><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)" \
lang="ES">&lt;uuid&gt;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&lt;/uuid&gt;<u></u><u></u></span></p>
 <p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)" \
lang="ES">                                                </span><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">&lt;/conceptname&gt;<u></u><u></u></span></p>
 <p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> \
&lt;/name&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
....<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;/concept&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">or<u></u><u></u></span></p>
 <p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> \
&lt;concept&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;conceptname fieldname=&quot;name&quot;&gt;<u></u><u></u></span></p>






<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;string fieldname=&quot;nametype&quot;&gt;FULLY-DEFINED&lt;/string&gt;<u></u><u></u></span></p>










<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;string fieldname=&quot;locale&quot;&gt;en-US&lt;/string&gt;<u></u><u></u></span></p>










<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;string fieldname=&quot;name&quot;&gt;Aspirin&lt;/string&gt;<u></u><u></u></span></p>










<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
 </span><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)" \
lang="ES">&lt;uuid fieldname=&quot;uuid&quot;&gt;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&lt;/uuid&gt;<u></u><u></u></span></p>







<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)" \
lang="ES">                                </span><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">&lt;/conceptname&gt;<u></u><u></u></span></p>
 <p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> \
....<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;/concept&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">but \
something at corresponds to the json like<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;object&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;name&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;nametype&gt;FULLY-DEFINED&lt;/nametype&gt;<u></u><u></u></span></p>






<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;locale&gt;en-US&lt;/locale&gt;<u></u><u></u></span></p>






<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
&lt;name&gt;Aspirin&lt;/name&gt;<u></u><u></u></span></p>






<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">  \
 </span><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)" \
lang="ES">&lt;uuid&gt;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&lt;/uuid&gt;<u></u><u></u></span></p>
 <p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)" \
lang="ES">                                </span><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">&lt;/name&gt;<u></u><u></u></span></p>
 <p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"> \
....<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">           \
&lt;/object&gt;<u></u><u></u></span></p> <p><span \
style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">The second \
form wouldn&#39;t be too bad, but there would have to be a conventional datatype for \
lists (list-of-&lt;resource-name&gt;?).<u></u><u></u></span></p>









<p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> \
<u></u></span></p> <p><b><span \
style="font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span \
style="font-size:10pt;font-family:Tahoma,sans-serif"> <a \
href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a> [mailto:<a \
href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a>] <b>On Behalf Of \
</b>Burke Mamlin<br> <b>Sent:</b> Wednesday, February 27, 2013 10:20 AM<br>
<b>To:</b> <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
<b>Subject:</b> Re: [OPENMRS-JIRA] (RESTWS-206) When the client specifies an \
Accept-Type of xml we should produce better XML<u></u><u></u></span></p><div><div> \
<p><u></u> <u></u></p> <div>
<p>Do we have to use &quot;object&quot; for the element name?  There isn&#39;t an \
option to use &quot;name&quot; in the XML and have it anonymous in the \
JSON?<u></u><u></u></p> <div>
<p><u></u> <u></u></p>
</div>
<div>
<p>-Burke<u></u><u></u></p>
</div>
</div>
</div></div><div>
<p style="margin-bottom:12pt"><u></u> <u></u></p>
<div><div><div>
<p>On Wed, Feb 27, 2013 at 4:58 AM, Lluis Martinez &lt;<a \
href="mailto:lluismf@gmail.com" target="_blank">lluismf@gmail.com</a>&gt; \
wrote:<u></u><u></u></p> <p>Hi Darius,<br>
<br>
It&#39;s clear now, JSON output should be not affected, I&#39;ll tweak the XML \
converter to add the object node. I hope this time we&#39;ll get it right :-)<br> \
<br> Cheers<u></u><u></u></p>
</div></div><div>
<div>
<p style="margin-bottom:12pt"><u></u> <u></u></p>
<div><div><div>
<p>On Wed, Feb 27, 2013 at 3:33 AM, Darius Jazayeri &lt;<a \
href="mailto:darius@openmrs.org" target="_blank">darius@openmrs.org</a>&gt; \
wrote:<u></u><u></u></p> <div>
<p>Hi Lluis,<u></u><u></u></p>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>Sorry, I didn&#39;t look closely, and I had not appreciated that you made the \
change in SimpleObject builder.<u></u><u></u></p> </div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>I definitely think that&#39;s a mistake. (But I&#39;m open for disagreement \
here.)<u></u><u></u></p> </div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>I think that:<u></u><u></u></p>
</div>
<div>
<p>* JSON is our primary output format. XML is sort of a bonus.<u></u><u></u></p>
</div>
<div>
<p>* We should optimize for JSON, while still making the XML not \
suck<u></u><u></u></p> </div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>I would expect this when I get a single concept:<u></u><u></u></p>
</div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>JSON:<u></u><u></u></p>
</div>
<div>
<div>
<p>{<u></u><u></u></p>
</div>
<div>
<p>  &quot;uuid&quot; : \
&quot;15f83cd6-64e9-4e06-a5f9-364d3b14a43d&quot;,<u></u><u></u></p> </div>
<div>
<p>  &quot;display&quot; : &quot;ASPIRIN&quot;,<u></u><u></u></p>
</div>
<div>
<p>  // many more fields about the concept<u></u><u></u></p>
</div>
<div>
<p>  &quot;names&quot;: [<u></u><u></u></p>
</div>
<div>
<p>    {<u></u><u></u></p>
</div>
<div>
<p>      &quot;uuid&quot; : \
&quot;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&quot;,<u></u><u></u></p> </div>
<div>
<p>      &quot;display&quot; : &quot;ASA&quot;,<u></u><u></u></p>
</div>
<div>
<p>      // links too, about the name<u></u><u></u></p>
</div>
<div>
<p>    },<u></u><u></u></p>
</div>
<div>
<p>    // more names<u></u><u></u></p>
</div>
<div>
<p>  ],<u></u><u></u></p>
</div>
<div>
<p>  // etc<u></u><u></u></p>
</div>
<div>
<p>}<u></u><u></u></p>
</div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>To get a name&#39;s display, I&#39;d do &quot;obj.names[0].display&quot;. As I \
understand it you&#39;ve changed things so this would instead be \
&quot;obj.names[0].name.display&quot; which I don&#39;t like.<u></u><u></u></p>









</div>
</div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>XML:<u></u><u></u></p>
</div>
<div>
<div>
<p>&lt;object&gt;<u></u><u></u></p>
</div>
<div>
<p>  &lt;uuid&gt;15f83cd6-64e9-4e06-a5f9-364d3b14a43d&lt;/uuid&gt;<u></u><u></u></p>
</div>
<div>
<p>  &lt;display&gt;ASPIRIN&lt;/display&gt;<u></u><u></u></p>
</div>
<div>
<p>  // many more fields about the concept<u></u><u></u></p>
</div>
<div>
<p>  &lt;names&gt;<u></u><u></u></p>
</div>
<div>
<p>    &lt;object&gt;<u></u><u></u></p>
</div>
<div>
<p>      &lt;uuid&gt;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&lt;/uuid&gt;<u></u><u></u></p>
 </div>
<div>
<p>      &lt;display&gt;ASA&lt;/display&gt;<u></u><u></u></p>
</div>
<div>
<p>      // links too, about the name<u></u><u></u></p>
</div>
<div>
<p>    &lt;/object&gt;<u></u><u></u></p>
</div>
<div>
<p>    // more names<u></u><u></u></p>
</div>
<div>
<p>  &lt;/names&gt;<u></u><u></u></p>
</div>
<div>
<p>  // etc<u></u><u></u></p>
</div>
<div>
<p>&lt;/object&gt;<u></u><u></u></p>
</div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>I think that querying this document via xpath will end up needing some extra \
&quot;object&quot; nodes, which is annoying, but I&#39;d rather make the xpath more \
annoying, than to make the JSON harder to work with.<u></u><u></u></p>









</div>
</div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>Am I getting this right?<u></u><u></u></p>
</div>
<div>
<p><u></u> <u></u></p>
</div>
<div>
<p>-Darius<u></u><u></u></p>
</div>
</div>
</div></div><div>
<p style="margin-bottom:12pt"><u></u> <u></u></p>
<div><div><div>
<p>On Tue, Feb 26, 2013 at 6:15 PM, Lluis Martinez (JIRA) &lt;<a \
href="mailto:jira-noreply@openmrs.org" \
target="_blank">jira-noreply@openmrs.org</a>&gt; wrote:<u></u><u></u></p> \
</div></div><div> <div align="center">
<table style="width:100%;background-color:rgb(240,240,240)" border="0" \
cellpadding="0" cellspacing="0" width="100%"> <tbody>
<tr>
<td style="padding:0in 0in 0in 0in 16px!important" valign="top">
<div align="center">
<table style="width:100%;background-color:white;border:1pt solid rgb(187,187,187)" \
border="1" cellpadding="0" cellspacing="0" width="100%"> <tbody>
<tr>
<td style="border:none;background-color:rgb(247,245,240);padding:0in" valign="top">
<p><span style="font-size:9pt;font-family:Arial,sans-serif;color:rgb(62,66,69)"><u></u><u></u></span></p>
 </td>
</tr>
<tr>
<td style="border:none;padding:24pt 24pt 0in" valign="top">
<table style="width:100%" align="left" border="0" cellpadding="0" cellspacing="0" \
width="100%"> <tbody>
<tr>
<td style="padding:0in" valign="top">
<p style="line-height:13.5pt"><u></u><img src="" align="left" height="48" \
width="48"><u></u><span \
style="font-size:9pt;font-family:Arial,sans-serif;color:rgb(80,80,80)"><a \
href="https://tickets.openmrs.org/secure/ViewProfile.jspa?name=lluismf" \
target="_blank"><span style="color:rgb(133,102,40)">Lluis  Martinez</span></a> \
commented on <a href="https://tickets.openmrs.org/browse/RESTWS-206" target="_blank"> \
<span style="color:rgb(133,102,40);text-decoration:none">RESTWS-206</span></a> \
<u></u><u></u></span></p><div><div> <div>
<p style="line-height:15pt"><span \
style="font-family:Arial,sans-serif;color:rgb(80,80,80)"><a \
href="https://tickets.openmrs.org/browse/RESTWS-206" target="_blank"><b><span \
style="color:rgb(133,102,40);text-decoration:none">When the client specifies  an \
Accept-Type of xml we should produce better XML</span></b></a> \
<u></u><u></u></span></p> </div>
</div></div></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="border:none;padding:0in 24pt 24pt" valign="top">
<table style="width:100%" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td style="width:48pt;padding:0in" nowrap valign="top" width="64">
</td>
<td style="padding:0in" valign="top">
<table style="width:100%" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td style="width:100%;padding:0in 0in 12pt" valign="top" width="100%">
<div style="border:1pt solid rgb(221,221,221);padding:9pt">
<p style="background-color:rgb(237,245,255)"><span \
style="font-size:9pt;font-family:Arial,sans-serif">I don&#39;t think I understand \
your point, currently both JSON and XML are almost identical (except for the root) \
because I did the change in the SimpleObject builder,  not in the XML serialization. \
But as I said in the dev list, this is not good if somebody already parses JSON. \
<u></u><u></u></span></p> <p style="background-color:rgb(237,245,255)"><span \
style="font-size:9pt;font-family:Arial,sans-serif">Concept in JSON \
format:<u></u><u></u></span></p> <div>
<div>
<pre style="background-color:rgb(237,245,255)">{<u></u><u></u></pre>
<pre style="background-color:rgb(237,245,255)">  &quot;uuid&quot; : \
&quot;15f83cd6-64e9-4e06-a5f9-364d3b14a43d&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;display&quot; : \
&quot;ASPIRIN&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;name&quot; : {<u></u><u></u></pre> \
<pre style="background-color:rgb(237,245,255)">    &quot;display&quot; : \
&quot;ASPIRIN&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;uuid&quot; : \
&quot;0e61fcd8-10ac-431f-9e96-70ab0b5b2385&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;name&quot; : \
&quot;ASPIRIN&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;locale&quot; : \
&quot;en&quot;,<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">   \
&quot;localePreferred&quot; : true,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;conceptNameType&quot; : \
&quot;FULLY_SPECIFIED&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;links&quot; : [ \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">      \
&quot;uri&quot; : &quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">      &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
}, {<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">      \
&quot;uri&quot; : &quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-3 \
64d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385?v=full&quot;,<u></u><u></u></pre>




<pre style="background-color:rgb(237,245,255)">      &quot;rel&quot; : \
&quot;full&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ],<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;resourceVersion&quot; : &quot;1.8&quot;<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  },<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;datatype&quot; : \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;uuid&quot; : &quot;8d4a4c94-c2cc-11de-8d13-0010c6dffd0f&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">    &quot;display&quot; : &quot;N/A - \
Not associated with a datatype (e.g., term answers, sets)&quot;,<u></u><u></u></pre> \
<pre style="background-color:rgb(237,245,255)">    &quot;links&quot; : [ \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">      \
&quot;uri&quot; : &quot;NEED-TO-CONFIGURE/ws/rest/v1/conceptdatatype/8d4a4c94-c2cc-11de-8d13-0010c6dffd0f&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">      &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ]<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
},<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;conceptClass&quot; : {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;uuid&quot; : \
&quot;3d065ed4-b0b9-4710-9a17-6d8c4fd259b7&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;display&quot; : &quot;Drug - \
Drug&quot;,<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;links&quot; : [ {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">      &quot;uri&quot; : \
&quot;NEED-TO-CONFIGURE/ws/rest/v1/conceptclass/3d065ed4-b0b9-4710-9a17-6d8c4fd259b7&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">      &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ]<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
},<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;set&quot; : false,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;version&quot; : \
&quot;&quot;,<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;retired&quot; : false,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;names&quot; : [ \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;name&quot; : {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">      &quot;uuid&quot; : \
&quot;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">      &quot;display&quot; : \
&quot;ASA&quot;,<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;links&quot; : [ {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">        &quot;uri&quot; : \
&quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&quot;,<u></u><u></u></pre>




<pre style="background-color:rgb(237,245,255)">        &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ]<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
}<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  }, \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;name&quot; : {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">      &quot;uuid&quot; : \
&quot;0e61fcd8-10ac-431f-9e96-70ab0b5b2385&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">      &quot;display&quot; : \
&quot;ASPIRIN&quot;,<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">      &quot;links&quot; : [ \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">        \
&quot;uri&quot; : &quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385&quot;,<u></u><u></u></pre>




<pre style="background-color:rgb(237,245,255)">        &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ]<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
}<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  } \
],<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;descriptions&quot; : [ {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">    &quot;description&quot; : \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">      \
&quot;uuid&quot; : &quot;7ae2d5db-2aab-49b9-a256-7c258eaab067&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">      &quot;display&quot; : \
&quot;Drug used for pain relief, fever, and antiplatelet \
actions.&quot;,<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">   \
&quot;links&quot; : [ {<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">        &quot;uri&quot; : \
&quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/description/7ae2d5db-2aab-49b9-a256-7c258eaab067&quot;,<u></u><u></u></pre>




<pre style="background-color:rgb(237,245,255)">        &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ]<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
}<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  } \
],<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;mappings&quot; : [ ],<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;answers&quot; : [ \
],<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;setMembers&quot; : [ ],<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">  &quot;links&quot; : [ \
{<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;uri&quot; : &quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">    &quot;rel&quot; : \
&quot;self&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
}, {<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">    \
&quot;uri&quot; : &quot;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d?v=full&quot;,<u></u><u></u></pre>
 <pre style="background-color:rgb(237,245,255)">    &quot;rel&quot; : \
&quot;full&quot;<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
} ],<u></u><u></u></pre> <pre style="background-color:rgb(237,245,255)">  \
&quot;resourceVersion&quot; : &quot;1.8&quot;<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">}<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)">{/code}<u></u><u></u></pre> <pre \
style="background-color:rgb(237,245,255)"><u></u> <u></u></pre> <pre \
style="background-color:rgb(237,245,255)">Concept in XML format:<u></u><u></u></pre> \
</div> </div>
<p style="background-color:rgb(237,245,255)"><span \
style="font-size:9pt;font-family:Arial,sans-serif">&lt;org.openmrs.module.webservices.rest.SimpleObject&gt;<br>
 &lt;uuid&gt;15f83cd6-64e9-4e06-a5f9-364d3b14a43d&lt;/uuid&gt;<br>
&lt;display&gt;ASPIRIN&lt;/display&gt;<br>
&lt;name&gt;<br>
&lt;display&gt;ASPIRIN&lt;/display&gt;<br>
&lt;uuid&gt;0e61fcd8-10ac-431f-9e96-70ab0b5b2385&lt;/uuid&gt;<br>
&lt;name&gt;ASPIRIN&lt;/name&gt;<br>
&lt;locale&gt;en&lt;/locale&gt;<br>
&lt;localePreferred&gt;true&lt;/localePreferred&gt;<br>
&lt;conceptNameType&gt;FULLY_SPECIFIED&lt;/conceptNameType&gt;<br>
&lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;full&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385?v=full&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;resourceVersion&gt;1.8&lt;/resourceVersion&gt;<br>
&lt;/name&gt;<br>
&lt;datatype&gt;<br>
&lt;uuid&gt;8d4a4c94-c2cc-11de-8d13-0010c6dffd0f&lt;/uuid&gt;<br>
&lt;display&gt;N/A - Not associated with a datatype (e.g., term answers, \
sets)&lt;/display&gt;<br> &lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/conceptdatatype/8d4a4c94-c2cc-11de-8d13-0010c6dffd0f&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;/datatype&gt;<br>
&lt;conceptClass&gt;<br>
&lt;uuid&gt;3d065ed4-b0b9-4710-9a17-6d8c4fd259b7&lt;/uuid&gt;<br>
&lt;display&gt;Drug - Drug&lt;/display&gt;<br>
&lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/conceptclass/3d065ed4-b0b9-4710-9a17-6d8c4fd259b7&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;/conceptClass&gt;<br>
&lt;set&gt;false&lt;/set&gt;<br>
&lt;version/&gt;<br>
&lt;retired&gt;false&lt;/retired&gt;<br>
&lt;names&gt;<br>
&lt;name&gt;<br>
&lt;uuid&gt;d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&lt;/uuid&gt;<br>
&lt;display&gt;ASA&lt;/display&gt;<br>
&lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/d2fddd31-5a0e-49e6-9ff2-522cd35ab01a&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;/name&gt;<br>
&lt;name&gt;<br>
&lt;uuid&gt;0e61fcd8-10ac-431f-9e96-70ab0b5b2385&lt;/uuid&gt;<br>
&lt;display&gt;ASPIRIN&lt;/display&gt;<br>
&lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/name/0e61fcd8-10ac-431f-9e96-70ab0b5b2385&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;/name&gt;<br>
&lt;/names&gt;<br>
&lt;descriptions&gt;<br>
&lt;description&gt;<br>
&lt;uuid&gt;7ae2d5db-2aab-49b9-a256-7c258eaab067&lt;/uuid&gt;<br>
&lt;display&gt;Drug used for pain relief, fever, and antiplatelet \
actions.&lt;/display&gt;<br> &lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d/description/7ae2d5db-2aab-49b9-a256-7c258eaab067&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;/description&gt;<br>
&lt;/descriptions&gt;<br>
&lt;mappings/&gt;<br>
&lt;answers/&gt;<br>
&lt;setMembers/&gt;<br>
&lt;links&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;self&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;link&gt;<br>
&lt;rel&gt;full&lt;/rel&gt;<br>
&lt;uri&gt;NEED-TO-CONFIGURE/ws/rest/v1/concept/15f83cd6-64e9-4e06-a5f9-364d3b14a43d?v=full&lt;/uri&gt;<br>
 &lt;/link&gt;<br>
&lt;/links&gt;<br>
&lt;resourceVersion&gt;1.8&lt;/resourceVersion&gt;<br>
&lt;/org.openmrs.module.webservices.rest.SimpleObject&gt;<u></u><u></u></span></p>
<p style="background-color:rgb(237,245,255)"><span \
style="font-size:9pt;font-family:Arial,sans-serif">{/code}<u></u><u></u></span></p> \
</div> </td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
<tr>
<td style="padding:0in 12pt 12pt" valign="top">
<p style="text-align:center;line-height:10.5pt" align="center">
<span style="font-size:7.5pt;font-family:Arial,sans-serif;color:rgb(80,80,80)">This \
message is automatically generated by JIRA.<br> If you think it was sent incorrectly, \
please contact your <a \
href="https://tickets.openmrs.org/secure/ContactAdministrators!default.jspa" \
target="_blank"> <span style="color:rgb(133,102,40)">JIRA \
administrators</span></a><br> For more information on JIRA, see: <a \
href="http://www.atlassian.com/software/jira" target="_blank"> <span \
style="color:rgb(133,102,40)">http://www.atlassian.com/software/jira</span></a></span><span \
style="font-size:7.5pt;font-family:Arial,sans-serif;color:rgb(136,136,136)"> \
</span><span style="font-size:7.5pt;font-family:Arial,sans-serif;color:rgb(80,80,80)"><u></u><u></u></span></p>
 </td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p><u></u> <u></u></p>
</div><div><div>
<p><span style="color:rgb(136,136,136)">-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank"> https://id.openmrs.org/</a><br>
 <br>
 </span><u></u><u></u></p>
</div></div></div><div><div>
<p><u></u> <u></u></p>
<p>-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank"> https://id.openmrs.org/</a><br>
 <br>
 <u></u><u></u></p>
</div></div></div>
</div>
</div>
<p><u></u> <u></u></p>
</div><div><div>
<p>-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev+unsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <u></u><u></u></p>
</div></div></div>
</div><div><div>


<p></p>

-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <br>
</div></div></blockquote></div><br></div>

<p></p>

-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <br>
</div></div></blockquote></div><br></div></div></div><div><div>

<p></p>

-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <br>
</div></div></blockquote></div><br></div>

<p></p>

-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <br>
</div></div></blockquote></div><br>

<p></p>

-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <br>
</div></div></blockquote></div><br></div></div></div></div><div class="HOEnZb"><div \
class="h5">

<p></p>

-- <br>
OpenMRS Developers: <a href="http://go.openmrs.org/dev" \
                target="_blank">http://go.openmrs.org/dev</a><br>
Post: <a href="mailto:dev@openmrs.org" target="_blank">dev@openmrs.org</a><br>
Unsubscribe: <a href="mailto:dev%2Bunsubscribe@openmrs.org" \
target="_blank">dev+unsubscribe@openmrs.org</a><br> Manage your OpenMRS subscriptions \
at <a href="https://id.openmrs.org/" target="_blank">https://id.openmrs.org/</a><br>  \
<br>  <br>
</div></div></blockquote></div><br>

<p></p>

-- <br />
OpenMRS Developers: <a \
                href="http://go.openmrs.org/dev">http://go.openmrs.org/dev</a><br />
Post: dev@openmrs.org<br />
Unsubscribe: dev+unsubscribe@openmrs.org<br />
Manage your OpenMRS subscriptions at <a \
href="https://id.openmrs.org/">https://id.openmrs.org/</a><br /> &nbsp;<br />
&nbsp;<br />



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic