Skip to content

Commit 5679c2e

Browse files
authored
Merge pull request #86 from ChrisBethgster/fix/3_x_use_templates_instead_of_transformer
Fix/3 x use templates instead of transformer
2 parents 3747282 + 2c79b4b commit 5679c2e

File tree

15 files changed

+68
-52
lines changed

15 files changed

+68
-52
lines changed

src/main/java/com/lyncode/xoai/dataprovider/data/internal/MetadataFormat.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@
1919
import com.lyncode.xoai.dataprovider.data.ItemIdentifier;
2020
import com.lyncode.xoai.dataprovider.filter.conditions.Condition;
2121

22-
import javax.xml.transform.Transformer;
22+
import javax.xml.transform.Templates;
2323

2424
/**
2525
2626
* @version 3.1.0
2727
*/
2828
public class MetadataFormat {
2929
private String prefix;
30-
private Transformer xsltTransformer;
30+
private Templates xsltTemplates;
3131
private String namespace;
3232
private String schemaLocation;
3333
private Condition filter;
3434

35-
public MetadataFormat(String prefix, Transformer transformer, String namespace, String schemaLocation) {
35+
public MetadataFormat(String prefix, Templates xsltTemplates, String namespace, String schemaLocation) {
3636
this.prefix = prefix;
37-
this.xsltTransformer = transformer;
37+
this.xsltTemplates = xsltTemplates;
3838
this.namespace = namespace;
3939
this.schemaLocation = schemaLocation;
4040
}
@@ -43,8 +43,8 @@ public String getPrefix() {
4343
return prefix;
4444
}
4545

46-
public Transformer getTransformer() {
47-
return xsltTransformer;
46+
public Templates getXsltTemplates() {
47+
return xsltTemplates;
4848
}
4949

5050
public String getNamespace() {

src/main/java/com/lyncode/xoai/dataprovider/data/internal/MetadataTransformer.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,28 @@
1616

1717
package com.lyncode.xoai.dataprovider.data.internal;
1818

19-
import com.lyncode.xoai.dataprovider.transform.XSLTransformer;
19+
import com.lyncode.xoai.dataprovider.transform.XSLTemplates;
2020

2121
/**
2222
2323
* @version 3.1.0
2424
*/
2525
public class MetadataTransformer {
26-
private XSLTransformer xslTransformer;
26+
private XSLTemplates xslTemplates;
2727

2828
public MetadataTransformer() {
29-
xslTransformer = null;
29+
xslTemplates = null;
3030
}
3131

32-
public MetadataTransformer(XSLTransformer xsltTransformer) {
33-
this.xslTransformer = xsltTransformer;
32+
public MetadataTransformer(XSLTemplates xslTemplates) {
33+
this.xslTemplates = xslTemplates;
3434
}
3535

36-
public boolean hasTransformer() {
37-
return (this.xslTransformer != null);
36+
public boolean hasXslTemplates() {
37+
return (this.xslTemplates != null);
3838
}
3939

40-
public XSLTransformer getXslTransformer() {
41-
return this.xslTransformer;
40+
public XSLTemplates getXslTemplates() {
41+
return this.xslTemplates;
4242
}
4343
}

src/main/java/com/lyncode/xoai/dataprovider/format/MetadataFormatManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.apache.logging.log4j.Logger;
2727
import org.apache.logging.log4j.LogManager;
2828

29-
import javax.xml.transform.Transformer;
29+
import javax.xml.transform.Templates;
3030
import javax.xml.transform.TransformerConfigurationException;
3131
import java.io.IOException;
3232
import java.util.ArrayList;
@@ -48,17 +48,17 @@ public MetadataFormatManager(ResourceResolver resolver, List<FormatConfiguration
4848
FilterManager filterManager) throws ConfigurationException {
4949
contexts = new HashMap<String, MetadataFormat>();
5050
for (FormatConfiguration format : config) {
51-
Transformer transformer = null;
51+
Templates templates = null;
5252

5353
try {
54-
transformer = resolver.getTransformer(format.getXslt());
54+
templates = resolver.getTemplates(format.getXslt());
5555
} catch (TransformerConfigurationException e) {
5656
throw new ConfigurationException(e.getMessage(), e);
5757
} catch (IOException e) {
5858
throw new ConfigurationException(e.getMessage(), e);
5959
}
6060

61-
MetadataFormat metadataFormat = new MetadataFormat(format.getPrefix(), transformer, format.getNamespace(), format.getSchemaLocation());
61+
MetadataFormat metadataFormat = new MetadataFormat(format.getPrefix(), templates, format.getNamespace(), format.getSchemaLocation());
6262
if (format.hasFilter())
6363
metadataFormat.setFilter(filterManager.getFilter(format.getFilter().getReference()));
6464
contexts.put(format.getId(), metadataFormat);

src/main/java/com/lyncode/xoai/dataprovider/handlers/GetRecordHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ public GetRecordType handle(OAIParameters parameters) throws OAIException, Handl
5454
if (!itemHelper.getItem().isDeleted()) {
5555
MetadataType metadata = null;
5656
try {
57-
if (context.getTransformer().hasTransformer()) {
57+
if (context.getTransformer().hasXslTemplates()) {
5858
metadata = new MetadataType(itemHelper.toPipeline(true)
59-
.apply(context.getTransformer().getXslTransformer().getValue())
60-
.apply(format.getTransformer())
59+
.apply(context.getTransformer().getXslTemplates().getValue())
60+
.apply(format.getXsltTemplates())
6161
.getTransformed());
6262
} else {
6363
metadata = new MetadataType(itemHelper.toPipeline(true)
64-
.apply(format.getTransformer())
64+
.apply(format.getXsltTemplates())
6565
.getTransformed());
6666
}
6767
} catch (WritingXmlException e) {

src/main/java/com/lyncode/xoai/dataprovider/handlers/ListRecordsHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,14 @@ private RecordType createRecord(OAIParameters parameters, Item item)
150150
if (!item.isDeleted()) {
151151
MetadataType metadata = null;
152152
try {
153-
if (context.getTransformer().hasTransformer()) {
153+
if (context.getTransformer().hasXslTemplates()) {
154154
metadata = new MetadataType(itemHelperWrap.toPipeline(true)
155-
.apply(context.getTransformer().getXslTransformer().getValue())
156-
.apply(format.getTransformer())
155+
.apply(context.getTransformer().getXslTemplates().getValue())
156+
.apply(format.getXsltTemplates())
157157
.getTransformed());
158158
} else {
159159
metadata = new MetadataType(itemHelperWrap.toPipeline(true)
160-
.apply(format.getTransformer())
160+
.apply(format.getXsltTemplates())
161161
.getTransformed());
162162
}
163163
} catch (WritingXmlException e) {
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.lyncode.xoai.dataprovider.services.api;
22

3-
import javax.xml.transform.Transformer;
3+
import javax.xml.transform.Templates;
44
import javax.xml.transform.TransformerConfigurationException;
55
import java.io.IOException;
66
import java.io.InputStream;
77

88
public interface ResourceResolver {
99
InputStream getResource(String path) throws IOException;
10-
Transformer getTransformer (String path) throws IOException, TransformerConfigurationException;
10+
11+
Templates getTemplates(String path) throws IOException, TransformerConfigurationException;
1112
}

src/main/java/com/lyncode/xoai/dataprovider/services/impl/FileResourceResolver.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.lyncode.xoai.dataprovider.services.api.ResourceResolver;
44

5-
import javax.xml.transform.Transformer;
5+
import javax.xml.transform.Templates;
66
import javax.xml.transform.TransformerConfigurationException;
77
import javax.xml.transform.TransformerFactory;
88
import javax.xml.transform.stream.StreamSource;
@@ -24,8 +24,9 @@ public InputStream getResource(String path) throws IOException {
2424
return new FileInputStream(new File(basePath, path));
2525
}
2626

27+
2728
@Override
28-
public Transformer getTransformer(String path) throws IOException, TransformerConfigurationException {
29-
return tFactory.newTransformer(new StreamSource(getResource(path)));
29+
public Templates getTemplates(String path) throws IOException, TransformerConfigurationException {
30+
return tFactory.newTemplates(new StreamSource(getResource(path)));
3031
}
3132
}

src/main/java/com/lyncode/xoai/dataprovider/transform/TransformManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ public TransformManager(ResourceResolver resolver, List<TransformerConfiguration
4242
for (TransformerConfiguration t : transformerConfigurations) {
4343
try {
4444
_contexts.put(t.getId(),
45-
new MetadataTransformer(new XSLTransformer(
46-
resolver.getTransformer(t.getXslt())
45+
new MetadataTransformer(new XSLTemplates(
46+
resolver.getTemplates(t.getXslt())
4747
))
4848
);
4949
} catch (TransformerConfigurationException e) {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.lyncode.xoai.dataprovider.transform;
2+
3+
import com.lyncode.xoai.util.TinyType;
4+
5+
import javax.xml.transform.Templates;
6+
7+
public class XSLTemplates extends TinyType<Templates> {
8+
public XSLTemplates(Templates templates) {
9+
super(templates);
10+
}
11+
}

src/main/java/com/lyncode/xoai/dataprovider/transform/XSLTransformer.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/com/lyncode/xoai/util/XSLPipeline.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.lyncode.xoai.util;
22

33
import javax.xml.transform.OutputKeys;
4+
import javax.xml.transform.Templates;
45
import javax.xml.transform.Transformer;
56
import javax.xml.transform.TransformerException;
67
import javax.xml.transform.stream.StreamResult;
@@ -19,8 +20,9 @@ public XSLPipeline(InputStream inputStream, boolean omitXMLDeclaration) {
1920
this.omitXMLDeclaration = omitXMLDeclaration;
2021
}
2122

22-
public XSLPipeline apply(Transformer xslTransformer) throws TransformerException {
23+
public XSLPipeline apply(Templates xslTemplates) throws TransformerException {
2324
outputStream = new ByteArrayOutputStream();
25+
Transformer xslTransformer = xslTemplates.newTransformer();
2426
xslTransformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, (omitXMLDeclaration) ? "yes" : "no");
2527
xslTransformer.transform(new StreamSource(inputStream), new StreamResult(outputStream));
2628
inputStream = new ByteArrayInputStream(outputStream.toByteArray());

src/test/java/com/lyncode/xoai/tests/dataprovider/acceptance/AbstractDataProviderTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import javax.xml.stream.XMLStreamException;
3636
import javax.xml.transform.TransformerConfigurationException;
3737
import javax.xml.transform.TransformerFactory;
38+
import javax.xml.transform.stream.StreamSource;
3839
import java.io.ByteArrayOutputStream;
3940
import java.io.IOException;
4041
import java.text.ParseException;
@@ -70,7 +71,9 @@ public abstract class AbstractDataProviderTest {
7071

7172
@Before
7273
public void setUp() throws IOException, TransformerConfigurationException, ParseException {
73-
when(resourceResolver.getTransformer(XOAI_XSLT_LOCATION)).thenReturn(tFactory.newTransformer());
74+
when(resourceResolver.getTemplates(XOAI_XSLT_LOCATION)).
75+
thenReturn(tFactory.newTemplates(new StreamSource(
76+
this.getClass().getClassLoader().getResourceAsStream("identity_transform.xsl"))));
7477

7578
configuration = new Configuration().withIndented(true);
7679

src/test/java/com/lyncode/xoai/tests/dataprovider/unit/XmlTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77

88
import javax.xml.stream.XMLStreamException;
99
import javax.xml.stream.XMLStreamWriter;
10-
import javax.xml.transform.Transformer;
10+
import javax.xml.transform.Templates;
1111
import javax.xml.transform.TransformerConfigurationException;
1212
import javax.xml.transform.TransformerFactory;
13+
import javax.xml.transform.stream.StreamSource;
1314
import java.io.ByteArrayOutputStream;
1415

1516
public abstract class XmlTest {
@@ -27,9 +28,10 @@ protected String theOutput() {
2728
return output.toString();
2829
}
2930

30-
protected Transformer identityTransformer() {
31+
protected Templates identityTemplate() {
3132
try {
32-
return tFactory.newTransformer();
33+
return tFactory.newTemplates(new StreamSource(
34+
this.getClass().getClassLoader().getResourceAsStream("identity_transform.xsl")));
3335
} catch (TransformerConfigurationException e) {
3436
throw new RuntimeException(e.getMessage(), e);
3537
}

src/test/java/com/lyncode/xoai/tests/util/XSLPipelineTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ public void shouldGiveTheSameIfNoTransformationIsApplied() throws IOException {
3030
@Test
3131
public void shouldTransformWithXmlDeclarationOnTop() throws TransformerException, IOException {
3232
XSLPipeline underTest = new XSLPipeline(input, false);
33-
underTest.apply(identityTransformer());
33+
underTest.apply(identityTemplate());
3434
assertThat(IOUtils.toString(underTest.getTransformed()), containsString("<?xml"));
3535
}
3636

3737
@Test
3838
public void shouldTransformWithoutXmlDeclarationOnTop() throws TransformerException, IOException {
3939
XSLPipeline underTest = new XSLPipeline(input, true);
40-
underTest.apply(identityTransformer());
40+
underTest.apply(identityTemplate());
4141
assertThat(IOUtils.toString(underTest.getTransformed()), not(containsString("<?xml")));
4242
}
4343
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2+
<xsl:template match="@*|node()">
3+
<xsl:copy>
4+
<xsl:apply-templates select="@*|node()"/>
5+
</xsl:copy>
6+
</xsl:template>
7+
</xsl:stylesheet>

0 commit comments

Comments
 (0)