User:Mineo/SearchWS
From MusicBrainz Wiki
Jump to navigationJump to search
Examples
- http://search.musicbrainz.org/ws/2/release/?query=release:Schneider&fmt=xml
- http://search.musicbrainz.org/ws/2/release/?query=release:Schneider&fmt=json
- this is not available through the web service of MBS
- http://search.musicbrainz.org/ws/2/release/?query=release:Schneider&fmt=jsonnew
- this is the same as http://musicbrainz.org/ws/2/release/?query=release:Schneider&fmt=json
How this works
- http://bugs.musicbrainz.org/browser/search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ResultsWriter.java#L171 checks if the desired format is jsonnew
- if so, use the context created by http://bugs.musicbrainz.org/browser/search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ResultsWriter.java#L94
- that accesses http://bugs.musicbrainz.org/browser/search_server/trunk/servlet/src/main/resources/oxml.xml
- that xml file is responsible for renaming fields conforming to Development/JSON_Web_Service
- lines like http://bugs.musicbrainz.org/browser/search_server/trunk/servlet/src/main/resources/oxml.xml#L158 rename fields (see http://www.eclipse.org/eclipselink/documentation/2.4/moxy/runtime003.htm#CACEDHHB)
- lines like http://bugs.musicbrainz.org/browser/search_server/trunk/servlet/src/main/resources/oxml.xml#L8 collapse the structure (see the third example on http://www.eclipse.org/eclipselink/api/2.2/org/eclipse/persistence/oxm/annotations/XmlPath.html)
Renaming
<java-type name="IpiList"> <java-attributes> <xml-element java-attribute="ipi" name="ipis"/> -- <java-type name="LabelList"> <java-attributes> <xml-element java-attribute="label" name="labels"/> -- <java-type name="TagList"> <java-attributes> <xml-element java-attribute="tag" name="tags"/> -- <java-type name="AliasList"> <java-attributes> <xml-element java-attribute="alias" name="aliases"/> -- <java-type name="IswcList"> <java-attributes> <xml-element java-attribute="iswc" name="iswcs"/> -- <java-type name="UrlList"> <java-attributes> <xml-element java-attribute="url" name="urls"/> -- <java-type name="PuidList"> <java-attributes> <xml-element java-attribute="puid" name="puids"/> -- <java-type name="AreaList"> <java-attributes> <xml-element java-attribute="area" name="areas"/> -- <java-type name="PlaceList"> <java-attributes> <xml-element java-attribute="place" name="places"/> -- <java-type name="InstrumentList"> <java-attributes> <xml-element java-attribute="instrument" name="instruments"/> -- <java-type name="EditorList"> <java-attributes> <xml-element java-attribute="editor" name="editors"/> -- <java-type name="ReleaseList"> <java-attributes> <xml-element java-attribute="release" name="releases"/> -- <java-type name="ReleaseGroupList"> <java-attributes> <xml-element java-attribute="releaseGroup" name="release-groups"/> -- <java-type name="MediumList"> <java-attributes> <xml-element java-attribute="medium" name="media"/> -- <java-type name="IsrcList"> <java-attributes> <xml-element java-attribute="isrc" name="isrcs"/> -- <java-type name="SecondaryTypeList"> <java-attributes> <xml-element java-attribute="secondaryType" name="secondary-types"/> -- <java-type name="IsrcList"> <java-attributes> <xml-element java-attribute="isrc" name="isrcs"/> -- <java-type name="ArtistCredit"> <java-attributes> <xml-element java-attribute="nameCredit" name="artist-credit"/> -- <java-type name="FreedbDiscList"> <java-attributes> <xml-element java-attribute="freedbDisc" name="freedb-discs"/> -- <java-type name="LabelInfoList"> <java-attributes> <xml-element java-attribute="labelInfo" name="label-info"/> -- <java-type name="AnnotationList"> <java-attributes> <xml-element java-attribute="annotation" name="annotations"/> -- <java-type name="CdstubList"> <java-attributes> <xml-element java-attribute="cdstub" name="cdstubs"/> -- <java-type name="Medium$TrackList"> <java-attributes> <xml-element java-attribute="count" name="track-count"/> -- <java-type name="Medium$TrackList"> <java-attributes> <xml-element java-attribute="offset" name="track-offset"/> -- <java-type name="DiscList"> <java-attributes> <xml-element java-attribute="count" name="disc-count"/> -- <java-type name="DiscList"> <java-attributes> <xml-element java-attribute="offset" name="disc-offset"/> -- <java-type name="Relation$AttributeList"> <java-attributes> <xml-element java-attribute="attribute" name="attributes"/> -- <java-attributes> <xml-transient java-attribute="targetType"/> <xml-element java-attribute="relation" name="relations"/> -- <java-type name="ReleaseEventList"> <java-attributes> <xml-element java-attribute="releaseEvent" name="release-events"/> -- <java-type name="Iso31661CodeList"> <java-attributes> <xml-element java-attribute="iso31661Code" name="iso-3166-1-codes"/> -- <java-type name="Iso31662CodeList"> <java-attributes> <xml-element java-attribute="iso31662Code" name="iso-3166-2-codes"/> -- <java-type name="Iso31663CodeList"> <java-attributes> <xml-element java-attribute="iso31663Code" name="iso-3166-3-codes"/> -- <xml-type prop-order=""/> <java-attributes> <xml-element java-attribute="content" name="name"/> <xml-element java-attribute="beginDate" name="begin-date" nillable="true"/> <xml-element java-attribute="endDate" name="end-date" nillable="true"/> <xml-element java-attribute="locale" name="locale" nillable="true"/> <xml-element java-attribute="type" name="type" nillable="true"/>
Collapsing
<java-type name="Metadata"> <java-attributes> <xml-element java-attribute="instrumentList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="seriesList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="editorList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="placeList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="areaList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="artistList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="releaseGroupList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="annotationList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="labelList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="recordingList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="urlList" xml-path="."/> -- <java-type name="DefAreaElementInner"> <java-attributes> <xml-element java-attribute="iso31661CodeList" xml-path="."/> -- <java-type name="DefAreaElementInner"> <java-attributes> <xml-element java-attribute="iso31662CodeList" xml-path="."/> -- <java-type name="DefAreaElementInner"> <java-attributes> <xml-element java-attribute="iso31663CodeList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="releaseList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="workList" xml-path="."/> -- <java-type name="Artist"> <java-attributes> <xml-element java-attribute="ipiList" xml-path="."/> -- <java-type name="Artist"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Release"> <java-attributes> <xml-element java-attribute="artistCredit" xml-path="."/> -- <java-type name="ReleaseGroup"> <java-attributes> <xml-element java-attribute="artistCredit" xml-path="."/> -- <java-type name="Recording"> <java-attributes> <xml-element java-attribute="artistCredit" xml-path="."/> -- <java-type name="Label"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Recording"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Release"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Work"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="Instrument"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="Series"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="Work"> <java-attributes> <xml-element java-attribute="iswcList" xml-path="."/> -- <java-type name="Recording"> <java-attributes> <xml-element java-attribute="puidList" xml-path="."/> -- <java-type name="Work"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Recording"> <java-attributes> <xml-element java-attribute="releaseList" xml-path="."/> -- <java-type name="Release"> <java-attributes> <xml-element java-attribute="mediumList" xml-path="."/> -- <java-type name="Release"> <java-attributes> <xml-element java-attribute="releaseEventList" xml-path="."/> -- <java-type name="Recording"> <java-attributes> <xml-element java-attribute="isrcList" xml-path="."/> -- <java-type name="ReleaseGroup"> <java-attributes> <xml-element java-attribute="secondaryTypeList" xml-path="."/> -- <java-type name="ReleaseGroup"> <java-attributes> <xml-element java-attribute="releaseList" xml-path="."/> -- <java-type name="Medium"> <java-attributes> <xml-element java-attribute="trackList" xml-path="."/> -- <java-type name="Label"> <java-attributes> <xml-element java-attribute="ipiList" xml-path="."/> -- <java-type name="Label"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="cdstubList" xml-path="."/> -- <java-type name="Cdstub"> <java-attributes> <xml-element java-attribute="trackList" xml-path="."/> -- <java-type name="Metadata"> <java-attributes> <xml-element java-attribute="freedbDiscList" xml-path="."/> -- <java-type name="FreedbDisc"> <java-attributes> <xml-element java-attribute="trackList" xml-path="."/> -- <java-type name="Release"> <java-attributes> <xml-element java-attribute="labelInfoList" xml-path="."/> -- <java-type name="DefAreaElementInner"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="Place"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="Artist"> <java-attributes> <xml-element java-attribute="aliasList" xml-path="."/> -- <java-type name="ReleaseGroup"> <java-attributes> <xml-element java-attribute="tagList" xml-path="."/> -- <java-type name="Medium"> <java-attributes> <xml-element java-attribute="discList" xml-path="."/> -- <java-type name="Relation"> <java-attributes> <xml-element java-attribute="attributeList" xml-path="."/>