diff --git a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/AreaAdapter.java b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/AreaAdapter.java new file mode 100644 index 0000000..efe06da --- /dev/null +++ b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/AreaAdapter.java @@ -0,0 +1,76 @@ +/* Copyright (c) 2026 MetaBrainz Foundation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the MusicBrainz project nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.musicbrainz.search.solrwriter.moxy; + +import org.musicbrainz.mmd2.Relation; +import org.musicbrainz.mmd2.RelationList; +import org.musicbrainz.mmd2.DefAreaElementInner; + +import java.util.ArrayList; +import java.util.List; + +public class AreaAdapter extends NotUnmarshallableXmlAdapter { + + public static class AdaptedArea extends DefAreaElementInner { + public List relations; + } + + /** + * Call when convert model to json, replaces area in model with adaptedArea + * which does not contain a list of RelationList, instead all relations in each existing + * RelationList are merged into a list of relations. We do this because it is not possible to merge + * a List of RelationLists into the area using oxml.xml mapping + */ + @Override + public AdaptedArea marshal(DefAreaElementInner area) throws Exception { + AdaptedArea adaptedArea = new AdaptedArea(); + adaptedArea.relations = RelationListUtil.marshal(area.getRelationList()); + + //Also need to copy any other elements/attributes we may want to output + adaptedArea.setName(area.getName()); + adaptedArea.setSortName(area.getSortName()); + adaptedArea.setDisambiguation(area.getDisambiguation()); + adaptedArea.setIso31661CodeList(area.getIso31661CodeList()); + adaptedArea.setIso31662CodeList(area.getIso31662CodeList()); + adaptedArea.setIso31663CodeList(area.getIso31663CodeList()); + adaptedArea.setAnnotation(area.getAnnotation()); + adaptedArea.setLifeSpan(area.getLifeSpan()); + adaptedArea.setAliasList(area.getAliasList()); + adaptedArea.setTagList(area.getTagList()); + adaptedArea.setUserTagList(area.getUserTagList()); + adaptedArea.setGenreList(area.getGenreList()); + adaptedArea.setUserGenreList(area.getUserGenreList()); + adaptedArea.setId(area.getId()); + adaptedArea.setType(area.getType()); + adaptedArea.setTypeId(area.getTypeId()); + adaptedArea.setScore(area.getScore()); + + return adaptedArea; + } +} diff --git a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/EventAdapter.java b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/EventAdapter.java index 0ccb798..7d93158 100644 --- a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/EventAdapter.java +++ b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/EventAdapter.java @@ -38,23 +38,19 @@ public class EventAdapter extends NotUnmarshallableXmlAdapter { public static class AdaptedEvent extends Event { - public List relations = new ArrayList(); + public List relations; } /** - * Call when convert model to json, replaces work in model with adaptedWork + * Call when convert model to json, replaces event in model with adaptedEvent * which does not contain a list of RelationList, instead all relations in each existing * RelationList are merged into a list of relations. We do this because it is not possible to merge - * a List of RelationLists into the work using oxml.xml mapping + * a List of RelationLists into the event using oxml.xml mapping */ @Override public AdaptedEvent marshal(Event event) throws Exception { AdaptedEvent adaptedEvent = new AdaptedEvent(); - for(RelationList relationList : event.getRelationList()) { - for(Relation relation : relationList.getRelation()) { - adaptedEvent.relations.add(relation); - } - } + adaptedEvent.relations = RelationListUtil.marshal(event.getRelationList()); //Also need to copy any other elements/attributes we may want to output adaptedEvent.setAliasList(event.getAliasList()); diff --git a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/RelationAdapter.java b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/RelationAdapter.java new file mode 100644 index 0000000..9d17e93 --- /dev/null +++ b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/RelationAdapter.java @@ -0,0 +1,79 @@ +/* Copyright (c) 2026 MetaBrainz Foundation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the MusicBrainz project nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.musicbrainz.search.solrwriter.moxy; + +import jakarta.xml.bind.annotation.XmlElement; +import org.musicbrainz.mmd2.Relation; + +/** + * This adapter class only exists to extend `Relation` with a `target-type` + * attribute. Since the target type is only accessible on the parent + * `RelationList`, it's not actually assigned to here, but via + * `RelationListUtil.marshal`. All other relation properties are copied onto + * the adapted relation instance as-is. + */ + +public class RelationAdapter extends NotUnmarshallableXmlAdapter { + + public static class AdaptedRelation extends Relation { + @XmlElement(name = "target-type") + protected String targetType; + } + + @Override + public AdaptedRelation marshal(Relation relation) throws Exception { + AdaptedRelation adaptedRelation = new AdaptedRelation(); + + adaptedRelation.setOrderingKey(relation.getOrderingKey()); + adaptedRelation.setDirection(relation.getDirection()); + adaptedRelation.setAttributeList(relation.getAttributeList()); + adaptedRelation.setBegin(relation.getBegin()); + adaptedRelation.setEnd(relation.getEnd()); + adaptedRelation.setEnded(relation.getEnded()); + adaptedRelation.setSourceCredit(relation.getSourceCredit()); + adaptedRelation.setTargetCredit(relation.getTargetCredit()); + adaptedRelation.setType(relation.getType()); + adaptedRelation.setTypeId(relation.getTypeId()); + + adaptedRelation.setArea(relation.getArea()); + adaptedRelation.setArtist(relation.getArtist()); + adaptedRelation.setEvent(relation.getEvent()); + adaptedRelation.setInstrument(relation.getInstrument()); + adaptedRelation.setLabel(relation.getLabel()); + adaptedRelation.setPlace(relation.getPlace()); + adaptedRelation.setRecording(relation.getRecording()); + adaptedRelation.setRelease(relation.getRelease()); + adaptedRelation.setReleaseGroup(relation.getReleaseGroup()); + adaptedRelation.setSeries(relation.getSeries()); + adaptedRelation.setTarget(relation.getTarget()); + adaptedRelation.setWork(relation.getWork()); + + return adaptedRelation; + } +} diff --git a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/StringTargetAdapter.java b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/RelationListUtil.java similarity index 64% rename from mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/StringTargetAdapter.java rename to mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/RelationListUtil.java index 82badd6..b329b7c 100644 --- a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/StringTargetAdapter.java +++ b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/RelationListUtil.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2018 MetaBrainz Foundation +/* Copyright (c) 2026 MetaBrainz Foundation * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,12 +28,24 @@ package org.musicbrainz.search.solrwriter.moxy; -import org.musicbrainz.mmd2.Target; +import org.musicbrainz.mmd2.Relation; +import org.musicbrainz.mmd2.RelationList; +import java.util.ArrayList; +import java.util.List; -public class StringTargetAdapter extends NotUnmarshallableXmlAdapter { - @Override - public String marshal(Target v) throws Exception { - return v.getValue(); - } +public class RelationListUtil { + public static List marshal(List relationLists) throws Exception { + List relations = new ArrayList<>(); + RelationAdapter adapter = new RelationAdapter(); + for (RelationList relationList : relationLists) { + String targetType = relationList.getTargetType(); + for (Relation relation : relationList.getRelation()) { + RelationAdapter.AdaptedRelation adaptedRelation = adapter.marshal(relation); + adaptedRelation.targetType = targetType; + relations.add(adaptedRelation); + } + } + return relations; + } } diff --git a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/UrlAdapter.java b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/UrlAdapter.java new file mode 100644 index 0000000..d4df469 --- /dev/null +++ b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/UrlAdapter.java @@ -0,0 +1,62 @@ +/* Copyright (c) 2026 MetaBrainz Foundation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the MusicBrainz project nor the names of the + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.musicbrainz.search.solrwriter.moxy; + +import org.musicbrainz.mmd2.Relation; +import org.musicbrainz.mmd2.RelationList; +import org.musicbrainz.mmd2.Url; + +import java.util.ArrayList; +import java.util.List; + +public class UrlAdapter extends NotUnmarshallableXmlAdapter { + + public static class AdaptedUrl extends Url { + public List relations; + } + + /** + * Call when convert model to json, replaces url in model with adaptedUrl + * which does not contain a list of RelationList, instead all relations in each existing + * RelationList are merged into a list of relations. We do this because it is not possible to merge + * a List of RelationLists into the url using oxml.xml mapping + */ + @Override + public AdaptedUrl marshal(Url url) throws Exception { + AdaptedUrl adaptedUrl = new AdaptedUrl(); + adaptedUrl.relations = RelationListUtil.marshal(url.getRelationList()); + + //Also need to copy any other elements/attributes we may want to output + adaptedUrl.setResource(url.getResource()); + adaptedUrl.setId(url.getId()); + adaptedUrl.setScore(url.getScore()); + + return adaptedUrl; + } +} diff --git a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/WorkAdapter.java b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/WorkAdapter.java index 11c0dd4..79b4ce4 100644 --- a/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/WorkAdapter.java +++ b/mb-solr/src/main/java/org/musicbrainz/search/solrwriter/moxy/WorkAdapter.java @@ -39,7 +39,7 @@ public class WorkAdapter extends NotUnmarshallableXmlAdapter { public static class AdaptedWork extends Work { - public List relations = new ArrayList(); + public List relations; public List languages = new ArrayList(); } @@ -53,11 +53,7 @@ public static class AdaptedWork extends Work { public AdaptedWork marshal(Work work) throws Exception { AdaptedWork adaptedWork = new AdaptedWork(); - for(RelationList relationList : work.getRelationList()) { - for(Relation relation : relationList.getRelation()) { - adaptedWork.relations.add(relation); - } - } + adaptedWork.relations = RelationListUtil.marshal(work.getRelationList()); LanguageList languageList = work.getLanguageList(); if (languageList != null) diff --git a/mb-solr/src/main/resources/oxml.xml b/mb-solr/src/main/resources/oxml.xml index a1cc52a..9f3b1c1 100644 --- a/mb-solr/src/main/resources/oxml.xml +++ b/mb-solr/src/main/resources/oxml.xml @@ -145,7 +145,9 @@ - + + + @@ -154,8 +156,10 @@ - - + > + + + @@ -275,11 +279,10 @@ + - - - + diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterEventTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterEventTest.java new file mode 100644 index 0000000..8e6301f --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterEventTest.java @@ -0,0 +1,13 @@ +package org.musicbrainz.search.solrwriter; + +import java.util.ArrayList; +import java.util.Arrays; + +public abstract class AbstractMBWriterEventTest extends AbstractMBWriterTest { + @Override + public ArrayList getDoc() { + return new ArrayList<>(Arrays.asList(new String[]{ + "event", "Wacken Open Air 2024", + "mbid", uuid})); + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterUrlTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterUrlTest.java new file mode 100644 index 0000000..64772d7 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterUrlTest.java @@ -0,0 +1,13 @@ +package org.musicbrainz.search.solrwriter; + +import java.util.ArrayList; +import java.util.Arrays; + +public abstract class AbstractMBWriterUrlTest extends AbstractMBWriterTest { + @Override + public ArrayList getDoc() { + return new ArrayList<>(Arrays.asList(new String[]{ + "url", "https://www.nin.com/", + "mbid", uuid})); + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterWorkTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterWorkTest.java new file mode 100644 index 0000000..137b59e --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/AbstractMBWriterWorkTest.java @@ -0,0 +1,13 @@ +package org.musicbrainz.search.solrwriter; + +import java.util.ArrayList; +import java.util.Arrays; + +public abstract class AbstractMBWriterWorkTest extends AbstractMBWriterTest { + @Override + public ArrayList getDoc() { + return new ArrayList<>(Arrays.asList(new String[]{ + "work", "Poker Face", + "mbid", uuid})); + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterEventTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterEventTest.java new file mode 100644 index 0000000..10dcae3 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterEventTest.java @@ -0,0 +1,10 @@ +package org.musicbrainz.search.solrwriter.json; + +import org.musicbrainz.search.solrwriter.AbstractMBWriterEventTest; +import org.musicbrainz.search.solrwriter.MBJSONWriterTestInterface; + +public class MBJSONWriterEventTest extends AbstractMBWriterEventTest implements MBJSONWriterTestInterface { + static { + corename = "event"; + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterUrlTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterUrlTest.java new file mode 100644 index 0000000..c3b1829 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterUrlTest.java @@ -0,0 +1,10 @@ +package org.musicbrainz.search.solrwriter.json; + +import org.musicbrainz.search.solrwriter.AbstractMBWriterUrlTest; +import org.musicbrainz.search.solrwriter.MBJSONWriterTestInterface; + +public class MBJSONWriterUrlTest extends AbstractMBWriterUrlTest implements MBJSONWriterTestInterface { + static { + corename = "url"; + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterWorkTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterWorkTest.java new file mode 100644 index 0000000..ed0cbb5 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/json/MBJSONWriterWorkTest.java @@ -0,0 +1,10 @@ +package org.musicbrainz.search.solrwriter.json; + +import org.musicbrainz.search.solrwriter.AbstractMBWriterWorkTest; +import org.musicbrainz.search.solrwriter.MBJSONWriterTestInterface; + +public class MBJSONWriterWorkTest extends AbstractMBWriterWorkTest implements MBJSONWriterTestInterface { + static { + corename = "work"; + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterEventTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterEventTest.java new file mode 100644 index 0000000..92a78b9 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterEventTest.java @@ -0,0 +1,10 @@ +package org.musicbrainz.search.solrwriter.xml; + +import org.musicbrainz.search.solrwriter.AbstractMBWriterEventTest; +import org.musicbrainz.search.solrwriter.MBXMLWriterTestInterface; + +public class MBXMLWriterEventTest extends AbstractMBWriterEventTest implements MBXMLWriterTestInterface { + static { + corename = "event"; + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterUrlTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterUrlTest.java new file mode 100644 index 0000000..e3acd15 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterUrlTest.java @@ -0,0 +1,10 @@ +package org.musicbrainz.search.solrwriter.xml; + +import org.musicbrainz.search.solrwriter.AbstractMBWriterUrlTest; +import org.musicbrainz.search.solrwriter.MBXMLWriterTestInterface; + +public class MBXMLWriterUrlTest extends AbstractMBWriterUrlTest implements MBXMLWriterTestInterface { + static { + corename = "url"; + } +} diff --git a/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterWorkTest.java b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterWorkTest.java new file mode 100644 index 0000000..e4c2ef0 --- /dev/null +++ b/mb-solr/src/test/java/org/musicbrainz/search/solrwriter/xml/MBXMLWriterWorkTest.java @@ -0,0 +1,10 @@ +package org.musicbrainz.search.solrwriter.xml; + +import org.musicbrainz.search.solrwriter.AbstractMBWriterWorkTest; +import org.musicbrainz.search.solrwriter.MBXMLWriterTestInterface; + +public class MBXMLWriterWorkTest extends AbstractMBWriterWorkTest implements MBXMLWriterTestInterface { + static { + corename = "work"; + } +} diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/area-list.json b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/area-list.json index 5e95d16..8526265 100644 --- a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/area-list.json +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/area-list.json @@ -35,22 +35,18 @@ "end-date": null } ], - "relation-list": [ + "relations": [ { - "relations": [ - { - "type": "part of", - "type-id": "de7cc874-8b1b-3a05-8272-f3834c968fb7", - "target": "85752fda-13c4-31a3-bee5-0e5cb1f51dad", - "direction": "backward", - "area": { - "id": "85752fda-13c4-31a3-bee5-0e5cb1f51dad", - "type": "Country", - "name": "Germany", - "sort-name": "Germany" - } - } - ] + "target-type": "area", + "type": "part of", + "type-id": "de7cc874-8b1b-3a05-8272-f3834c968fb7", + "direction": "backward", + "area": { + "id": "85752fda-13c4-31a3-bee5-0e5cb1f51dad", + "type": "Country", + "name": "Germany", + "sort-name": "Germany" + } } ] } diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event-list.json b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event-list.json new file mode 100644 index 0000000..05124e7 --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event-list.json @@ -0,0 +1,29 @@ +{ + "created": "${json-unit.matches:validXMLGregorianCalendar}", + "count": 1, + "offset": 0, + "events": [ + { + "id": "183ba1ec-a87b-4c0e-85dd-496b7cea4399", + "type": "Festival", + "score": 100, + "name": "Wacken Open Air 2024", + "life-span": { + "begin": "2024-07-31", + "end": "2024-08-03" + }, + "relations": [ + { + "target-type": "place", + "type": "held at", + "type-id": "e2c6f697-07dc-38b1-be0b-83d740165532", + "direction": "backward", + "place": { + "id": "3acd3d34-e8ea-4b9d-be0f-bd1e128aa8ba", + "name": "Wacken Open Air Festival Grounds" + } + } + ] + } + ] +} diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event-list.xml b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event-list.xml new file mode 100644 index 0000000..a364a14 --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event-list.xml @@ -0,0 +1,21 @@ + + + + + Wacken Open Air 2024 + + 2024-07-31 + 2024-08-03 + + + + 3acd3d34-e8ea-4b9d-be0f-bd1e128aa8ba + backward + + Wacken Open Air Festival Grounds + + + + + + diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event.xml b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event.xml new file mode 100644 index 0000000..56870fd --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/event.xml @@ -0,0 +1,15 @@ + + Wacken Open Air 2024 + + 2024-07-31 + 2024-08-03 + + + + backward + + Wacken Open Air Festival Grounds + + + + diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url-list.json b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url-list.json new file mode 100644 index 0000000..71cc0d2 --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url-list.json @@ -0,0 +1,25 @@ +{ + "created": "${json-unit.matches:validXMLGregorianCalendar}", + "count": 1, + "offset": 0, + "urls": [ + { + "id": "bd9db597-5ccf-427d-94d9-c3bd23c00f37", + "score": 100, + "resource": "https://www.nin.com/", + "relations": [ + { + "target-type": "artist", + "type": "official homepage", + "type-id": "fe33d22f-c3b0-4d68-bd53-a856badf2b15", + "direction": "backward", + "artist": { + "id": "b7ffd2af-418f-4be2-bdd1-22f8b48613da", + "name": "Nine Inch Nails", + "sort-name": "Nine Inch Nails" + } + } + ] + } + ] +} diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url-list.xml b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url-list.xml new file mode 100644 index 0000000..646e23e --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url-list.xml @@ -0,0 +1,18 @@ + + + + + https://www.nin.com/ + + + b7ffd2af-418f-4be2-bdd1-22f8b48613da + backward + + Nine Inch Nails + Nine Inch Nails + + + + + + diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url.xml b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url.xml new file mode 100644 index 0000000..492078b --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/url.xml @@ -0,0 +1,13 @@ + + https://www.nin.com/ + + + b7ffd2af-418f-4be2-bdd1-22f8b48613da + backward + + Nine Inch Nails + Nine Inch Nails + + + + diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work-list.json b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work-list.json new file mode 100644 index 0000000..dece4c9 --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work-list.json @@ -0,0 +1,62 @@ +{ + "created": "${json-unit.matches:validXMLGregorianCalendar}", + "count": 1, + "offset": 0, + "works": [ + { + "id": "9f6363b8-7df7-3732-b2b6-94c0f02e0bde", + "type": "Song", + "score": 100, + "title": "Poker Face", + "language": "eng", + "iswcs": ["T-901.751.548-9"], + "aliases": [ + { + "sort-name": "Poker Face (Tommy Sparks & The Fury remix)", + "name": "Poker Face (Tommy Sparks & The Fury remix)", + "locale": null, + "type": null, + "primary": null, + "begin-date": null, + "end-date": null + } + ], + "relations": [ + { + "target-type": "artist", + "type": "writer", + "type-id": "a255bca1-b157-4518-9108-7b147dc3fc68", + "direction": "backward", + "artist": { + "id": "650e7db6-b795-4eb5-a702-5ea2fc46c848", + "name": "Lady Gaga", + "sort-name": "Lady Gaga" + } + }, + { + "target-type": "artist", + "type": "writer", + "type-id": "a255bca1-b157-4518-9108-7b147dc3fc68", + "direction": "backward", + "artist": { + "id": "8c84402d-f282-4afc-8d64-049bdaabb92d", + "name": "RedOne", + "sort-name": "RedOne" + } + }, + { + "target-type": "recording", + "type": "performance", + "type-id": "a3005666-a872-32c3-ad06-98af558e99b0", + "direction": "backward", + "recording": { + "id": "f8bbe5a7-bc01-4780-aee0-aef98666b874", + "title": "Poker Face (piano version)", + "video": null + } + } + ], + "languages": ["eng"] + } + ] +} diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work-list.xml b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work-list.xml new file mode 100644 index 0000000..0c4cc16 --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work-list.xml @@ -0,0 +1,46 @@ + + + + + Poker Face + eng + + eng + + + T-901.751.548-9 + + + Poker Face (Tommy Sparks & The Fury remix) + + + + 650e7db6-b795-4eb5-a702-5ea2fc46c848 + backward + + Lady Gaga + Lady Gaga + + + + 8c84402d-f282-4afc-8d64-049bdaabb92d + backward + + RedOne + RedOne + + + + + + f8bbe5a7-bc01-4780-aee0-aef98666b874 + backward + + + Poker Face (piano version) + + + + + + diff --git a/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work.xml b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work.xml new file mode 100644 index 0000000..4fcd0f9 --- /dev/null +++ b/mb-solr/src/test/resources/org/musicbrainz/search/solrwriter/work.xml @@ -0,0 +1,41 @@ + + Poker Face + eng + + eng + + + T-901.751.548-9 + + + Poker Face (Tommy Sparks & The Fury remix) + + + + 650e7db6-b795-4eb5-a702-5ea2fc46c848 + backward + + Lady Gaga + Lady Gaga + + + + 8c84402d-f282-4afc-8d64-049bdaabb92d + backward + + RedOne + RedOne + + + + + + f8bbe5a7-bc01-4780-aee0-aef98666b874 + backward + + + Poker Face (piano version) + + + +