Skip to content

Commit 4c34371

Browse files
committed
Add getInstance method to DTOReader/Writer so instances are factories
1 parent c42b0a7 commit 4c34371

File tree

8 files changed

+40
-7
lines changed

8 files changed

+40
-7
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ target
22
.idea
33
*.log
44
*.iml
5+
*.swp
56
.DS_Store
67
.settings
78
.project

fcrepo-dto/fcrepo-dto-core/src/main/java/com/github/cwilper/fcrepo/dto/core/io/ContentHandlingDTOReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99
public abstract class ContentHandlingDTOReader implements DTOReader {
1010

11-
private final ContentHandler defaultContentHandler =
11+
protected final ContentHandler defaultContentHandler =
1212
new DefaultContentHandler();
1313

1414
protected ContentHandler contentHandler;

fcrepo-dto/fcrepo-dto-core/src/main/java/com/github/cwilper/fcrepo/dto/core/io/ContentResolvingDTOWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
public abstract class ContentResolvingDTOWriter implements DTOWriter {
1111

12-
private final ContentResolver defaultContentResolver =
12+
protected final ContentResolver defaultContentResolver =
1313
new DefaultContentResolver();
1414

1515
protected ContentResolver contentResolver;

fcrepo-dto/fcrepo-dto-core/src/main/java/com/github/cwilper/fcrepo/dto/core/io/DTOReader.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
* Interface for reading a {@link FedoraObject} from a stream.
1010
*/
1111
public interface DTOReader {
12+
/**
13+
* Gets a new instance configured like this one.
14+
*
15+
* @return a new instance.
16+
*/
17+
DTOReader getInstance();
1218

1319
/**
1420
* Deserializes the given stream into a <code>FedoraObject</code>.

fcrepo-dto/fcrepo-dto-core/src/main/java/com/github/cwilper/fcrepo/dto/core/io/DTOWriter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
* Interface for writing a {@link FedoraObject} to a stream.
1010
*/
1111
public interface DTOWriter {
12+
/**
13+
* Gets a new instance configured like this one.
14+
*
15+
* @return the instance.
16+
*/
17+
DTOWriter getInstance();
1218

1319
/**
1420
* Serializes a <code>FedoraObject</code> to the given stream.

fcrepo-dto/fcrepo-dto-foxml/src/main/java/com/github/cwilper/fcrepo/dto/foxml/FOXMLReader.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.github.cwilper.fcrepo.dto.core.State;
1010
import com.github.cwilper.fcrepo.dto.core.io.ContentHandlingDTOReader;
1111
import com.github.cwilper.fcrepo.dto.core.io.DateUtil;
12+
import com.github.cwilper.fcrepo.dto.core.io.DTOReader;
1213
import com.github.cwilper.fcrepo.dto.core.io.XMLUtil;
1314
import org.apache.commons.codec.binary.Base64OutputStream;
1415
import org.apache.commons.io.IOUtils;
@@ -30,8 +31,7 @@
3031
import java.util.Set;
3132

3233
/**
33-
* A {@link com.github.cwilper.fcrepo.dto.core.io.DTOReader} that reads
34-
* Fedora Object XML.
34+
* A {@link DTOReader} that reads Fedora Object XML.
3535
* <p>
3636
* <b>NOTE:</b> Only FOXML version 1.1 is supported.
3737
*
@@ -52,6 +52,15 @@ public class FOXMLReader extends ContentHandlingDTOReader {
5252
public FOXMLReader() {
5353
}
5454

55+
@Override
56+
public DTOReader getInstance() {
57+
FOXMLReader reader = new FOXMLReader();
58+
if (contentHandler != defaultContentHandler) {
59+
reader.setContentHandler(contentHandler);
60+
}
61+
return reader;
62+
}
63+
5564
@Override
5665
public FedoraObject readObject(InputStream source) throws IOException {
5766
obj = new FedoraObject();

fcrepo-dto/fcrepo-dto-foxml/src/main/java/com/github/cwilper/fcrepo/dto/foxml/FOXMLWriter.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import com.github.cwilper.fcrepo.dto.core.State;
2323
import com.github.cwilper.fcrepo.dto.core.io.ContentResolvingDTOWriter;
2424
import com.github.cwilper.fcrepo.dto.core.io.DateUtil;
25+
import com.github.cwilper.fcrepo.dto.core.io.DTOWriter;
2526
import com.github.cwilper.fcrepo.dto.core.io.XMLUtil;
2627

2728
/**
28-
* A {@link com.github.cwilper.fcrepo.dto.core.io.DTOWriter} that writes
29-
* Fedora Object XML.
29+
* A {@link DTOWriter} that writes Fedora Object XML.
3030
* <p>
3131
* <b>NOTE:</b> Only FOXML version 1.1 is supported.
3232
*
@@ -49,6 +49,18 @@ public void setManagedDatastreamsToEmbed(
4949
this.managedDatastreamsToEmbed = managedDatastreamsToEmbed;
5050
}
5151

52+
@Override
53+
public DTOWriter getInstance() {
54+
FOXMLWriter writer = new FOXMLWriter();
55+
if (contentResolver != defaultContentResolver) {
56+
writer.setContentResolver(contentResolver);
57+
}
58+
writer.setManagedDatastreamsToEmbed(
59+
new HashSet<String>(managedDatastreamsToEmbed));
60+
return writer;
61+
}
62+
63+
@Override
5264
public void writeObject(FedoraObject obj, OutputStream sink)
5365
throws IOException {
5466
this.obj = obj;

pom.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,6 @@
272272
<artifactId>maven-compiler-plugin</artifactId>
273273
<version>2.3.1</version>
274274
<configuration>
275-
<debug>true</debug>
276275
<source>1.6</source>
277276
<target>1.6</target>
278277
</configuration>

0 commit comments

Comments
 (0)