Commit da78cca9 authored by Steinberg, Jan's avatar Steinberg, Jan

giga test cases

parent a4167e47
......@@ -69,6 +69,7 @@ public class XmlXsltBundlesStreamSource implements BundlesStreamSource {
JAXBContext jaxbContext = JAXBContext.newInstance(XmlBundles.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
// LOG.info("Konvertiert: {}", xsltConvertedXmlOutput);
InputStream convertedXmlInputStream = new ByteArrayInputStream(xsltConvertedXmlOutput.getBytes(StandardCharsets.UTF_8) );
XmlBundles xmlBundles = (XmlBundles) unmarshaller.unmarshal(convertedXmlInputStream);
Stream<Bundle> bundlesStream = xmlBundles.getBundlesStream();
......
......@@ -276,13 +276,13 @@ public class XmlXsltBundlesStreamSourceTest {
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).count() );
assertEquals("monograph", metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).findFirst().get().getValue() );
}
@Test
public void testGigaXml() throws IOException {
public void testGigaXmlAfricaSpectrum() throws IOException {
String gigaXmlString = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xml/africa-spectrum/10.1177_186810261804700101.xml"), StandardCharsets.UTF_8);
getResourceAsStream("xml/africa-spectrum/10.1177_0002039719852229.xml"), StandardCharsets.UTF_8);
LOG.info("gigaXmlString={}", gigaXmlString);
String xsltString = IOUtils.toString(
getClass().
......@@ -291,17 +291,278 @@ public class XmlXsltBundlesStreamSourceTest {
LOG.info("xsltString={}", xsltString);
XmlXsltBundlesStreamSource underTest = new XmlXsltBundlesStreamSource(gigaXmlString, xsltString, 6666);
Stream<Bundle> stream = underTest.getBundlesStream();
String ref = underTest.getReference();
Set<Metadatum> metadata = underTest.getAllMetadata("10.1177_0002039719852229");
Metadatum internalDdaReference = metadata.stream().filter(m -> m.getKey().equals("internal.dda.reference")).findFirst().get();
assertEquals("xmlxslt-bundlessource-6666@@10.1177_0002039719852229", internalDdaReference.getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.title")).count() );
assertEquals("What Is Our Research For? Responsibility, Humility and the Production of Knowledge about Burundi", metadata.stream().filter(m -> m.getKey().equals("dc.title")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.journal")).count() );
assertEquals("10", metadata.stream().filter(m -> m.getKey().equals("dc.source.journal")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).count() );
assertEquals("1868-6869", metadata.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).count() );
assertEquals("https://doi.org/10.1177/0002039719852229", metadata.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author")).count() );
assertEquals("Curtis, Devon E. A.", metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author")).findFirst().get().getValue() );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author") && m.getValue().equals("Curtis, Devon E. A.")).findFirst().get().getValue() != null );
assertEquals(2, metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract")).count() );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") && m.getValue().equals("Political space in Burundi underwent a remarkable opening during the Burundian peace process and its immediate aftermath, which led to a rise in social science scholarship in Burundi. This space has increasingly narrowed, particularly since the crisis in 2015, presenting important challenges for social science scholars of Burundi. This changing political environment has consequences for the production of knowledge on Burundi. It is therefore timely to ask what purposes does research on Burundi serve. This article reflects upon different motivations and goals for social science research in Burundi and how these affect the types of research questions that are asked and the formats for knowledge dissemination. It argues that both the opening and closing of the Burundian political landscape bring into sharp relief the need for greater scholarly reflexivity. The article argues that in contexts of structural inequality and increased political control such as Burundi, we need to be particularly attentive to the need for scholarly responsibility and humility, as well as an awareness of the dynamics that have led to calls for the decolonisation of knowledge within the social sciences.")).findFirst().get().getValue() != null );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") && m.getValue().equals("Der Friedensprozess in Burundi hat eine bemerkenswerte politische Öffnung bewirkt, die zu einem Anstieg sozialwissenschaftlicher Forschung über Burundi führte. Diese Spielräume nehmen jedoch vor allem seit der Krise 2015 wieder ab, was eine große Herausforderung für die sozialwissenschaftliche Forschung über Burundi darstellt. Die sich wandelnde politische Landschaft beeinflusst die Wissensproduktion über Burundi, sodass sich die Frage aufdrängt, welchem Zweck diese Forschung dient. Dieser Artikel reflektiert verschiedene Motivationen und Ziele sozialwissenschaftlicher Forschung über Burundi und zeigt auf, wie sie die Fragestellungen und Formen des Wissenstransfers beeinflussen. Es wird argumentiert, dass sowohl Zeiten politischer Öffnung als auch die Einschränkung politischer Freiheiten die Notwendigkeit stärkerer wissenschaftlicher Reflexivität deutlich machen. In Kontexten wie Burundi, die von strukturellen Ungleichheiten und zunehmender politischer Kontrolle geprägt sind, spielen wissenschaftliche Verantwortung, Bescheidenheit sowie das Bewusstsein für Dynamiken, die Forderungen nach eine Dekolonialisierung des Wissens in den Sozialwissenschaften befördert haben, eine besondere Rolle.")).findFirst().get().getValue() != null );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.volume")).count() );
assertEquals("54", metadata.stream().filter(m -> m.getKey().equals("dc.source.volume")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).count() );
assertEquals("4-21", metadata.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.date.issued")).count() );
assertEquals("2019", metadata.stream().filter(m -> m.getKey().equals("dc.date.issued")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).count() );
assertEquals("article", metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.language")).count() );
assertEquals("en", metadata.stream().filter(m -> m.getKey().equals("dc.language")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.document")).count() );
assertEquals("32", metadata.stream().filter(m -> m.getKey().equals("dc.type.document")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.rights.licence")).count() );
assertEquals("2", metadata.stream().filter(m -> m.getKey().equals("dc.rights.licence")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
}
@Test
public void testGigaXmlPLA() throws IOException {
String gigaXmlString = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xml/pla/10.1177_1866802X19843008.xml"), StandardCharsets.UTF_8);
LOG.info("gigaXmlString={}", gigaXmlString);
String xsltString = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xslt/giga-2-xmlbundle.xslt"), StandardCharsets.UTF_8);
LOG.info("xsltString={}", xsltString);
XmlXsltBundlesStreamSource underTest = new XmlXsltBundlesStreamSource(gigaXmlString, xsltString, 6668);
String ref = underTest.getReference();
Set<Metadatum> metadata = underTest.getAllMetadata("10.1177_1866802X19843008");
Metadatum internalDdaReference = metadata.stream().filter(m -> m.getKey().equals("internal.dda.reference")).findFirst().get();
assertEquals("xmlxslt-bundlessource-6668@@10.1177_1866802X19843008", internalDdaReference.getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.title")).count() );
assertEquals("Fuel for Conspiracy: Suspected Imperialist Plots and the Chaco War", metadata.stream().filter(m -> m.getKey().equals("dc.title")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.journal")).count() );
assertEquals("202", metadata.stream().filter(m -> m.getKey().equals("dc.source.journal")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).count() );
assertEquals("1868-4890", metadata.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).count() );
assertEquals("https://doi.org/10.1177/1866802X19843008", metadata.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).findFirst().get().getValue() );
assertEquals(2, metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author")).count() );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author") && m.getValue().equals("Roniger, Luis")).findFirst().get().getValue() != null );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author") && m.getValue().equals("Senkman, Leonardo")).findFirst().get().getValue() != null );
assertEquals(2, metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract")).count() );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") && m.getValue().equals("Conspiracy discourse interprets the world as the object of sinister machinations, rife with opaque plots and covert actors. With this frame, the war between Bolivia and Paraguay over the Northern Chaco region (1932–1935) emerges as a paradigmatic conflict that many in the Americas interpreted as resulting from the conspiracy manoeuvres of foreign oil interests to grab land supposedly rich in oil. At the heart of such interpretation, projected by those critical of the fratricidal war, were partial and extrapolated facts, which sidelined the weight of long-term disputes between these South American countries traumatised by previous international wars resulting in humiliating defeats and territorial losses, and thus prone to welcome warfare to bolster national pride and overcome the memory of past debacles. The article reconstructs the transnational diffusion of the conspiracy narrative that tilted political and intellectual imagination towards attributing the war to imperialist economic interests, downplaying the political agency of those involved. Analysis suggests that such transnational reception highlights a broader trend in the twentieth-century Latin American conspiracy discourse, stemming from the theorization of geopolitical marginality and the belief that political decision-making was shaped by the plots of hegemonic powers.")).findFirst().get().getValue() != null );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") && m.getValue().equals("Todo discurso conspirativo interpreta el mundo como sujeto a maquinaciones siniestras tramadas tras bambalinas. Desde esa perspectiva, la guerra entre Bolivia y Paraguay sobre el Chaco Boreal (1932–1935) es paradigmática de un conflicto que muchos en América Latina interpretaron como resultado de las maniobras conspirativas de intereses petroleros extranjeros que intentaban apoderarse de tierras supuestamente ricas en petróleo. Tal interpretación, proyectada por quienes lamentaron la guerra fratricida, se basó en hechos parciales y extrapolados, que ignoraron el peso de disputas de larga traza entre esos dos estados traumatizados por guerras internacionales anteriores que habían resultado en derrotas humillantes y pérdidas territoriales, y que, por lo tanto, eran propensos a lanzarse a una nueva guerra que podría reparar el mellado orgullo nacional y superar la memoria de debacles pasados. El artículo reconstruye la difusión de la narrativa conspirativa que atribuyó la guerra a los intereses económicos imperialistas, minimizando el rol y la agencia política de las partes beligerantes; y sugiere que tal recepción transnacional refleja una tendencia más amplia en el discurso conspirativo latinoamericano del siglo XX, tendencia derivada de teorizar la marginalidad geopolítica de la región y asumir que la toma de decisiones políticas ha sido producto de complots originados en los poderes hegemónicos globales.")).findFirst().get().getValue() != null );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.volume")).count() );
assertEquals("11", metadata.stream().filter(m -> m.getKey().equals("dc.source.volume")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).count() );
assertEquals("3-22", metadata.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.date.issued")).count() );
assertEquals("2019", metadata.stream().filter(m -> m.getKey().equals("dc.date.issued")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).count() );
assertEquals("article", metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.language")).count() );
assertEquals("en", metadata.stream().filter(m -> m.getKey().equals("dc.language")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.document")).count() );
assertEquals("32", metadata.stream().filter(m -> m.getKey().equals("dc.type.document")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.rights.licence")).count() );
assertEquals("2", metadata.stream().filter(m -> m.getKey().equals("dc.rights.licence")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
}
@Test
public void testGigaXmlSAA() throws IOException {
String gigaXmlString = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xml/saa/10.1177_1868103419845515.xml"), StandardCharsets.UTF_8);
LOG.info("gigaXmlString={}", gigaXmlString);
String xsltString = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xslt/giga-2-xmlbundle.xslt"), StandardCharsets.UTF_8);
LOG.info("xsltString={}", xsltString);
XmlXsltBundlesStreamSource underTest = new XmlXsltBundlesStreamSource(gigaXmlString, xsltString, 6668);
String ref = underTest.getReference();
Set<Metadatum> metadata = underTest.getAllMetadata("10.1177_1868103419845515");
Metadatum internalDdaReference = metadata.stream().filter(m -> m.getKey().equals("internal.dda.reference")).findFirst().get();
assertEquals("xmlxslt-bundlessource-6668@@10.1177_1868103419845515", internalDdaReference.getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.title")).count() );
assertEquals("Protests, Regulations, and Environmental Accountability in Cambodia", metadata.stream().filter(m -> m.getKey().equals("dc.title")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.journal")).count() );
assertEquals("193", metadata.stream().filter(m -> m.getKey().equals("dc.source.journal")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).count() );
assertEquals("1868-4882", metadata.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).count() );
assertEquals("https://doi.org/10.1177/1868103419845515", metadata.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author")).count() );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author") && m.getValue().equals("Young, Sokphea")).findFirst().get().getValue() != null );
// assert(metadata.stream().filter(m -> m.getKey().equals("dc.contributor.author") && m.getValue().equals("Senkman, Leonardo")).findFirst().get().getValue() != null );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract")).count() );
assert(metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") && m.getValue().equals("In the realm of global environmental governance, accountability has been key to the debate concerning pervasive environmental deterioration. Among the factors underlying this deterioration, a perceived challenge is the lack of clear mechanisms for identifying to whom the actors in environmental governance in general, and in other sectors, for example, hydropower, agricultural land, mining, and infrastructure in particular, are accountable to for their actions. To investigate the challenge of this situation, this article explores the ways in which the protest movements of grass-roots communities and non-governmental organizations endeavour to hold government and foreign corporations accountable for the actions they have taken which have contributed to environmental degradation in Cambodia. Drawing on two case studies, this article argues that these protest movements have played an increasing role in requiring environmental accountability from both government and corporations.")).findFirst().get().getValue() != null );
// assert(metadata.stream().filter(m -> m.getKey().equals("dc.description.abstract") && m.getValue().equals("Todo discurso conspirativo interpreta el mundo como sujeto a maquinaciones siniestras tramadas tras bambalinas. Desde esa perspectiva, la guerra entre Bolivia y Paraguay sobre el Chaco Boreal (1932–1935) es paradigmática de un conflicto que muchos en América Latina interpretaron como resultado de las maniobras conspirativas de intereses petroleros extranjeros que intentaban apoderarse de tierras supuestamente ricas en petróleo. Tal interpretación, proyectada por quienes lamentaron la guerra fratricida, se basó en hechos parciales y extrapolados, que ignoraron el peso de disputas de larga traza entre esos dos estados traumatizados por guerras internacionales anteriores que habían resultado en derrotas humillantes y pérdidas territoriales, y que, por lo tanto, eran propensos a lanzarse a una nueva guerra que podría reparar el mellado orgullo nacional y superar la memoria de debacles pasados. El artículo reconstruye la difusión de la narrativa conspirativa que atribuyó la guerra a los intereses económicos imperialistas, minimizando el rol y la agencia política de las partes beligerantes; y sugiere que tal recepción transnacional refleja una tendencia más amplia en el discurso conspirativo latinoamericano del siglo XX, tendencia derivada de teorizar la marginalidad geopolítica de la región y asumir que la toma de decisiones políticas ha sido producto de complots originados en los poderes hegemónicos globales.")).findFirst().get().getValue() != null );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.volume")).count() );
assertEquals("38", metadata.stream().filter(m -> m.getKey().equals("dc.source.volume")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).count() );
assertEquals("33-54", metadata.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.date.issued")).count() );
assertEquals("2019", metadata.stream().filter(m -> m.getKey().equals("dc.date.issued")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).count() );
assertEquals("article", metadata.stream().filter(m -> m.getKey().equals("dc.type.stock")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.language")).count() );
assertEquals("en", metadata.stream().filter(m -> m.getKey().equals("dc.language")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.type.document")).count() );
assertEquals("32", metadata.stream().filter(m -> m.getKey().equals("dc.type.document")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.rights.licence")).count() );
assertEquals("2", metadata.stream().filter(m -> m.getKey().equals("dc.rights.licence")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).findFirst().get().getValue() );
assertEquals(1, metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
}
@Test
public void testGigaXmlCCA() throws IOException {
String gigaXmlString2 = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xml/cca/10.1177_186810261804700101.xml"), StandardCharsets.UTF_8);
LOG.info("gigaXmlString2={}", gigaXmlString2);
String xsltString2 = IOUtils.toString(
getClass().
getClassLoader().
getResourceAsStream("xslt/giga-2-xmlbundle.xslt"), StandardCharsets.UTF_8);
LOG.info("xsltString={}", xsltString2);
XmlXsltBundlesStreamSource underTest = new XmlXsltBundlesStreamSource(gigaXmlString2, xsltString2, 6667);
Set<Metadatum> metadata2 = underTest.getAllMetadata("10.1177_186810261804700101");
Metadatum internalDdaReference = metadata2.stream().filter(m -> m.getKey().equals("internal.dda.reference")).findFirst().get();
assertEquals("xmlxslt-bundlessource-6667@@10.1177_186810261804700101", internalDdaReference.getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.title")).count() );
assertEquals("“Project Battle” or “Policy War”?: Protest, Advocacy, and the Outcomes of Environmental Contention in China", metadata2.stream().filter(m -> m.getKey().equals("dc.title")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.source.journal")).count() );
assertEquals("192", metadata2.stream().filter(m -> m.getKey().equals("dc.source.journal")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).count() );
assertEquals("1868-4874", metadata2.stream().filter(m -> m.getKey().equals("dc.identifier.issn")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).count() );
assertEquals("https://doi.org/10.1177/186810261804700101", metadata2.stream().filter(m -> m.getKey().equals("dc.identifier.doi")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.contributor.author")).count() );
assertEquals("Tang, Phoebe Mengxiao", metadata2.stream().filter(m -> m.getKey().equals("dc.contributor.author")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.description.abstract")).count() );
assertEquals("Over the past decade, several environmental protests against hazardous projects have been mounted across China. Though extensive scholarship has been devoted to the outcomes of environmental contention, a significant distinction between local government's one-off decision change regarding the specific project and long-term, locked-in policy change towards better governance has largely been overlooked. Meanwhile, environmental contention in authoritarian China has largely been studied in terms of disparate episodes, making systematic observation and effective comparison difficult. Using crisp-set qualitative comparative analysis (csQCA), this article investigates the effect of social contention on shaping environmental governance, analysing 20 influential cases of environmental protests in China from 2007 to 2014. It demonstrates that environmental contention efforts often yield different fruits in their “project battles” than in their “policy wars.” Moreover, this study argues that environmental protests necessitate ample effort of public policy from a variety of social agents with multifaceted mechanisms and strategies, highlighting the significance of the protest–advocacy linkage in extracting better governance from local states in authoritarian settings.", metadata2.stream().filter(m -> m.getKey().equals("dc.description.abstract")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.source.volume")).count() );
assertEquals("47", metadata2.stream().filter(m -> m.getKey().equals("dc.source.volume")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata2.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).count() );
assertEquals("3-40", metadata2.stream().filter(m -> m.getKey().equals("dc.source.pageinfo")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.date.issued")).count() );
assertEquals("2018", metadata2.stream().filter(m -> m.getKey().equals("dc.date.issued")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.type.stock")).count() );
assertEquals("article", metadata2.stream().filter(m -> m.getKey().equals("dc.type.stock")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.language")).count() );
assertEquals("en", metadata2.stream().filter(m -> m.getKey().equals("dc.language")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.type.document")).count() );
assertEquals("32", metadata2.stream().filter(m -> m.getKey().equals("dc.type.document")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.rights.licence")).count() );
assertEquals("2", metadata2.stream().filter(m -> m.getKey().equals("dc.rights.licence")).findFirst().get().getValue() );
assertEquals(2, stream.count() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).count() );
assertEquals("1", metadata2.stream().filter(m -> m.getKey().equals("dc.description.pubstatus")).findFirst().get().getValue() );
assertEquals( "xmlxslt-bundlessource-6666", underTest.getReference() );
LOG.info("Under Test Ref: {}", underTest.getReference());
Bundle testBundle = underTest.getBundlesStream().filter(b -> b.getReference().equals("CCA@@10.1177_186810261804700101") ).findFirst().get();
assertEquals(1, testBundle.getMetadata().stream().filter(m -> m.getKey().equals("dc.title")).count() );
assertEquals("“Project Battle” or “Policy War”?: Protest, Advocacy, and the Outcomes of Environmental Contention in China", testBundle.getMetadata().stream().filter(m -> m.getKey().equals("dc.title")).findFirst().get().getValue() );
assertEquals(1, metadata2.stream().filter(m -> m.getKey().equals("dc.source.issue")).count() );
assertEquals("1", metadata2.stream().filter(m -> m.getKey().equals("dc.source.issue")).findFirst().get().getValue() );
}
@Test
......
<?xml version="1.0" encoding="UTF-8"?>
<article article-type="research-article" xml:lang="EN" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">AFR</journal-id>
<journal-id journal-id-type="hwp">spafr</journal-id>
<journal-title-group>
<journal-title>Africa Spectrum</journal-title>
</journal-title-group>
<issn pub-type="ppub">0002-0397</issn>
<issn pub-type="epub">1868-6869</issn>
<publisher>
<publisher-name>SAGE Publications</publisher-name>
<publisher-loc>Sage UK: London, England</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.1177/0002039719852229</article-id>
<article-id pub-id-type="publisher-id">10.1177_0002039719852229</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Research articles</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>What Is Our Research For? Responsibility, Humility and the Production of Knowledge about Burundi</article-title>
<trans-title-group xml:lang="de">
<trans-title>Wozu dient unsere Forschung? Verantwortung, Bescheidenheit und Wissensproduktion über Burundi</trans-title>
</trans-title-group>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Curtis</surname>
<given-names>Devon E. A.</given-names>
</name>
<xref ref-type="corresp" rid="corresp1-0002039719852229"/>
</contrib>
<aff id="aff1-0002039719852229">Department of Politics and International Studies, University of Cambridge, UK</aff>
<bio>
<title>Author biography</title>
<p>
<bold>Devon E. A. Curtis</bold> is senior lecturer in the Department of Politics and International Studies at the University of Cambridge, and a Fellow of Emmanuel College. This article builds upon the keynote address she gave at the Conference on Governance, Peace and Development in Burundi at the University of Antwerp, 5-6 July 2018.</p>
</bio>
</contrib-group>
<author-notes>
<corresp id="corresp1-0002039719852229">Devon E. A. Curtis, University of Cambridge, 7 West Road, Cambridge CB3 9DT, UK. Email: <email>dc403@cam.ac.uk</email>
</corresp>
</author-notes>
<pub-date pub-type="epub-ppub">
<month>4</month>
<year>2019</year>
</pub-date>
<volume>54</volume>
<issue>1</issue>
<fpage>4</fpage>
<lpage>21</lpage>
<history>
<date date-type="received">
<day>14</day>
<month>2</month>
<year>2019</year>
</date>
<date date-type="accepted">
<day>9</day>
<month>4</month>
<year>2019</year>
</date>
</history>
<permissions>
<copyright-statement>© The Author(s) 2019</copyright-statement>
<copyright-year>2019</copyright-year>
<copyright-holder content-type="sage">SAGE Publications Ltd, or GIGA German Institute of Global and Area Studies, unless otherwise noted. Manuscript content on this site is licensed under Creative Commons Licenses</copyright-holder>
<license license-type="creative-commons" xlink:href="http://creativecommons.org/licenses/by-nc/4.0/" xlink:type="simple">
<license-p>This article is distributed under the terms of the Creative Commons Attribution-NonCommercial 4.0 License (<ext-link ext-link-type="uri" xlink:href="http://www.creativecommons.org/licenses/by-nc/4.0/">http://www.creativecommons.org/licenses/by-nc/4.0/</ext-link>) which permits non-commercial use, reproduction and distribution of the work without further permission provided the original work is attributed as specified on the SAGE and Open Access pages (<ext-link ext-link-type="uri" xlink:href="https://us.sagepub.com/en-us/nam/open-access-at-sage">https://us.sagepub.com/en-us/nam/open-access-at-sage</ext-link>).</license-p>
</license>
</permissions>
<abstract>
<p>Political space in Burundi underwent a remarkable opening during the Burundian peace process and its immediate aftermath, which led to a rise in social science scholarship in Burundi. This space has increasingly narrowed, particularly since the crisis in 2015, presenting important challenges for social science scholars of Burundi. This changing political environment has consequences for the production of knowledge on Burundi. It is therefore timely to ask what purposes does research on Burundi serve. This article reflects upon different motivations and goals for social science research in Burundi and how these affect the types of research questions that are asked and the formats for knowledge dissemination. It argues that both the opening and closing of the Burundian political landscape bring into sharp relief the need for greater scholarly reflexivity. The article argues that in contexts of structural inequality and increased political control such as Burundi, we need to be particularly attentive to the need for scholarly responsibility and humility, as well as an awareness of the dynamics that have led to calls for the decolonisation of knowledge within the social sciences.</p>
</abstract>
<trans-abstract xml:lang="de">
<p>Der Friedensprozess in Burundi hat eine bemerkenswerte politische Öffnung bewirkt, die zu einem Anstieg sozialwissenschaftlicher Forschung über Burundi führte. Diese Spielräume nehmen jedoch vor allem seit der Krise 2015 wieder ab, was eine große Herausforderung für die sozialwissenschaftliche Forschung über Burundi darstellt. Die sich wandelnde politische Landschaft beeinflusst die Wissensproduktion über Burundi, sodass sich die Frage aufdrängt, welchem Zweck diese Forschung dient. Dieser Artikel reflektiert verschiedene Motivationen und Ziele sozialwissenschaftlicher Forschung über Burundi und zeigt auf, wie sie die Fragestellungen und Formen des Wissenstransfers beeinflussen. Es wird argumentiert, dass sowohl Zeiten politischer Öffnung als auch die Einschränkung politischer Freiheiten die Notwendigkeit stärkerer wissenschaftlicher Reflexivität deutlich machen. In Kontexten wie Burundi, die von strukturellen Ungleichheiten und zunehmender politischer Kontrolle geprägt sind, spielen wissenschaftliche Verantwortung, Bescheidenheit sowie das Bewusstsein für Dynamiken, die Forderungen nach eine Dekolonialisierung des Wissens in den Sozialwissenschaften befördert haben, eine besondere Rolle.</p>
</trans-abstract>
<kwd-group>
<kwd>Burundi</kwd>
<kwd>knowledge production</kwd>
<kwd>reflexivity</kwd>
<kwd>fieldwork</kwd>
<kwd>decolonisation</kwd>
</kwd-group>
<kwd-group xml:lang="de">
<kwd>Burundi</kwd>
<kwd>Wissensproduktion</kwd>
<kwd>Reflexivität</kwd>
<kwd>Feldforschung</kwd>
<kwd>Dekolonialisierung</kwd>
</kwd-group>
</article-meta>
</front>
<back>
<ack>
<title>Acknowledgement</title>
<p>The author would like to thank the organisers and participants at the July 2018 University of Antwerp Conference on Governance, Peace and Development in Burundi for the discussions that inspired this article. The author is also enormously grateful for the constructive feedback and suggestions from the anonymous reviewers and the editor Julia Grauvogel, as well as Ntagahoraho Z. Burihabwa, Andrea Filipi, Maria Martin de Almagro, Aymar Bisoka Nyenyezi, and Katrin Wittig. Their immensely helpful comments and suggestions greatly strengthened the article, but also showed how much more there is to discuss.</p>
</ack>
<fn-group>
<fn fn-type="conflict" id="fn14-0002039719852229">
<label>Declaration of conflicting interests</label>
<p>The author(s) declared no potential conflicts of interest with respect to the research, authorship, and/or publication of this article.</p>
</fn>
<fn fn-type="financial-disclosure" id="fn15-0002039719852229">
<label>Funding</label>
<p>The author(s) received no financial support for the research, authorship, and/or publication of this article.</p>
</fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="bibr1-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Alfieri</surname>
<given-names>V</given-names>
</name>
</person-group> (<year>2016</year>) <article-title>Le Palipehutu-FNL au Burundi: Dynamique d’ethnicisation et de ‘désethnicisation’</article-title>. <source>Politique Africaine</source> <volume>1</volume>(<issue>141</issue>): <fpage>169</fpage><lpage>190</lpage>.</mixed-citation>
</ref>
<ref id="bibr2-0002039719852229">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Autesserre</surname>
<given-names>S</given-names>
</name>
</person-group> (<year>2014</year>) <source>Peaceland: Conflict Resolution and the Everyday Politics of International Intervention</source>. <publisher-loc>New York</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>.</mixed-citation>
</ref>
<ref id="bibr3-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Baser</surname>
<given-names>B</given-names>
</name>
<name>
<surname>Samim</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Öztürk</surname>
<given-names>AE</given-names>
</name>
</person-group> (<year>2017</year>) <article-title>“Academics for Peace” in Turkey: a case of criminalising dissent and critical thought via counterterrorism policy</article-title>. <source>Critical Studies on Terrorism</source> <volume>10</volume>(<issue>2</issue>): <fpage>274</fpage><lpage>296</lpage>.</mixed-citation>
</ref>
<ref id="bibr4-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Berckmoes</surname>
<given-names>L</given-names>
</name>
<name>
<surname>White</surname>
<given-names>B</given-names>
</name>
</person-group> (<year>2014</year>) <article-title>Youth, farming and precarity in rural Burundi</article-title>. <source>European Journal of Development Research</source> <volume>26</volume>(<issue>2</issue>): <fpage>190</fpage><lpage>203</lpage>.</mixed-citation>
</ref>
<ref id="bibr5-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Biaumet</surname>
<given-names>G</given-names>
</name>
</person-group> (<year>2017</year>) <article-title>The sentinel and the rebel: multi-choice policing in Burundi and the state-centred approach of security sector reform</article-title>. <source>Crime, Law and Social Change</source> <volume>67</volume>(<issue>3</issue>): <fpage>333</fpage><lpage>351</lpage>.</mixed-citation>
</ref>
<ref id="bibr90-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bouka</surname>
<given-names>Y</given-names>
</name>
</person-group> (<year>2018</year>) <article-title>Collaborative research as structural violence</article-title>. <source>Blog post</source>. <comment>Available at</comment>: <ext-link ext-link-type="uri" xlink:href="http://politicalviolenceataglance.org/2018/07/12/collaborative-research-as-structural-violence/">http://politicalviolenceataglance.org/2018/07/12/collaborative-research-as-structural-violence/</ext-link> <comment>Accessed 2 May 2019</comment>.</mixed-citation>
</ref>
<ref id="bibr6-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Branch</surname>
<given-names>A</given-names>
</name>
</person-group> (<year>2018</year>) <article-title>Decolonizing the African studies centre</article-title>. <source>The Cambridge Journal of Anthropology</source> <volume>36</volume>(<issue>2</issue>): <fpage>73</fpage><lpage>91</lpage>.</mixed-citation>
</ref>
<ref id="bibr7-0002039719852229">
<mixed-citation publication-type="book">
<person-group person-group-type="editor">
<name>
<surname>Bugwabari</surname>
<given-names>N</given-names>
</name>
<name>
<surname>Cazenave-Piarrot</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Thibon</surname>
<given-names>OPC</given-names>
</name>
</person-group> (eds) (<year>2012</year>) <source>Universités, universitaires en Afrique de l’Est</source>. <publisher-loc>Paris</publisher-loc>: <publisher-name>Karthala</publisher-name>.</mixed-citation>
</ref>
<ref id="bibr8-0002039719852229">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Burihabwa</surname>
<given-names>NZ</given-names>
</name>
</person-group> (<year>2017</year>) <source>Continuity and Contingency: The CNDD-FDD and its Transformation from Rebel Movement to Governing Political Party in Burundi</source>. <comment>PhD Dissertation</comment>, <publisher-name>University of Antwerp</publisher-name>.</mixed-citation>
</ref>
<ref id="bibr9-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Burihabwa</surname>
<given-names>NZ</given-names>
</name>
<name>
<surname>Curtis</surname>
<given-names>DEA</given-names>
</name>
</person-group> (<year>2019</year>) <article-title>The limits of resistance ideologies? The CNDD-FDD and the legacies of governance in Burundi</article-title>. <source>Government and Opposition</source> <volume>54</volume>(<issue>3</issue>): <fpage>559</fpage><lpage>583</lpage>.</mixed-citation>
</ref>
<ref id="bibr10-0002039719852229">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Buyoya</surname>
<given-names>P</given-names>
</name>
</person-group> (<year>1998</year>) <source>Mission Possible: Construire une paix durable au Burundi</source>. <publisher-loc>Paris</publisher-loc>: <publisher-name>L’Harmattan</publisher-name>.</mixed-citation>
</ref>
<ref id="bibr11-0002039719852229">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Campbell</surname>
<given-names>SP</given-names>
</name>
</person-group> (<year>2018</year>) <source>Global Governance and Local Peace: Accountability and Performance in International Peacebuilding</source>. <publisher-loc>Cambridge</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>.</mixed-citation>
</ref>
<ref id="bibr12-0002039719852229">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Chakrabarty</surname>
<given-names>D</given-names>
</name>
</person-group> (<year>2000</year>) <source>Provincializing Europe: Postcolonial Thought and Historical Difference</source>. <publisher-loc>Princeton</publisher-loc>: <publisher-name>Princeton University Press</publisher-name>.</mixed-citation>
</ref>
<ref id="bibr13-0002039719852229">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cheeseman</surname>
<given-names>N</given-names>
</name>
</person-group> (<year>2011</year>) <article-title>The internal dynamics of power-sharing in Africa</article-title>. <source>Democratization</source> <volume>18</volume>(<issue>2</issue>): <fpage>336</fpage><lpage>365</lpage>.</mixed-citation>