diff --git a/commons/src/main/java/org/archive/io/ReadSource.java b/commons/src/main/java/org/archive/io/ReadSource.java index 9721bc1e..a3c29967 100644 --- a/commons/src/main/java/org/archive/io/ReadSource.java +++ b/commons/src/main/java/org/archive/io/ReadSource.java @@ -21,6 +21,17 @@ package org.archive.io; import java.io.Reader; +/** + * Interface for objects that can provide a Reader view of their + * contents. + * + */ public interface ReadSource { - Reader getReader(); + /** + * Obtain a Reader. Not named 'getReader' so that it is not + * considered a simple costless read-only property by + * bean-convention introspection tools. + * @return a Reader on this object + */ + Reader obtainReader(); } diff --git a/commons/src/main/java/org/archive/spring/ConfigFile.java b/commons/src/main/java/org/archive/spring/ConfigFile.java index 2662ab47..a0c605f6 100644 --- a/commons/src/main/java/org/archive/spring/ConfigFile.java +++ b/commons/src/main/java/org/archive/spring/ConfigFile.java @@ -41,7 +41,7 @@ public class ConfigFile extends ConfigPath implements ReadSource, WriteTarget { super(name, path); } - public Reader getReader() { + public Reader obtainReader() { try { if(!getFile().exists()) { getFile().createNewFile(); @@ -52,11 +52,11 @@ public class ConfigFile extends ConfigPath implements ReadSource, WriteTarget { } } - public Writer getWriter() { - return getWriter(false); + public Writer obtainWriter() { + return obtainWriter(false); } - public Writer getWriter(boolean append) { + public Writer obtainWriter(boolean append) { try { return new FileWriter(getFile(), append); } catch (IOException e) { diff --git a/commons/src/main/java/org/archive/spring/ConfigString.java b/commons/src/main/java/org/archive/spring/ConfigString.java index 956a7a53..1372a99e 100644 --- a/commons/src/main/java/org/archive/spring/ConfigString.java +++ b/commons/src/main/java/org/archive/spring/ConfigString.java @@ -13,7 +13,7 @@ public class ConfigString implements ReadSource { public void setValue(String value) { this.value = value; } - public Reader getReader() { + public Reader obtainReader() { return new StringReader(value); } } diff --git a/commons/src/main/java/org/archive/spring/WriteTarget.java b/commons/src/main/java/org/archive/spring/WriteTarget.java index aa802961..b8f7b42f 100644 --- a/commons/src/main/java/org/archive/spring/WriteTarget.java +++ b/commons/src/main/java/org/archive/spring/WriteTarget.java @@ -1,8 +1,56 @@ +/* + * This file is part of the Heritrix web crawler (crawler.archive.org). + * + * Licensed to the Internet Archive (IA) by one or more individual + * contributors. + * + * The IA licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.archive.spring; import java.io.Writer; +/** + * Interface for objects that can provide a Writer for replacing or + * appending to their textual contents. + * + */ public interface WriteTarget { - Writer getWriter(); - Writer getWriter(boolean append); + /** + * Obtain a Writer for changing this object's contents. By default, + * the Writer will replace the current contents. + * + * Note that the mere act of obtaining the Writer may (as in the + * case of a backing file) truncate away all existing contents, + * even before anything is written to the writer. Not named + * 'getWriter' because of this potential destructiveness. + * + * @return a Writer for replacing the object's textual contents + */ + Writer obtainWriter(); + /** + * Obtain a Writer for changing this object's contents. Whether + * written text replaces or appends existing contents is controlled + * by the 'append' parameter. + * + * Note that the mere act of obtaining the Writer may (as in the + * case of a backing file) truncate away all existing contents, + * even before anything is written to the writer. Not named + * 'getWriter' because of this potential destructiveness. + * + * @param append if true, anything written will be appended to current contents + * @return a Writer for replacing the object's textual contents + */ + Writer obtainWriter(boolean append); } diff --git a/modules/src/main/java/org/archive/modules/ScriptedProcessor.java b/modules/src/main/java/org/archive/modules/ScriptedProcessor.java index 84b207e4..d8b36eff 100644 --- a/modules/src/main/java/org/archive/modules/ScriptedProcessor.java +++ b/modules/src/main/java/org/archive/modules/ScriptedProcessor.java @@ -182,7 +182,7 @@ implements ApplicationContextAware, InitializingBean { Reader reader = null; try { - reader = getScriptSource().getReader(); + reader = getScriptSource().obtainReader(); interpreter.eval(reader); } catch (ScriptException e) { logger.log(Level.SEVERE,"script problem",e); diff --git a/modules/src/main/java/org/archive/modules/deciderules/ScriptedDecideRule.java b/modules/src/main/java/org/archive/modules/deciderules/ScriptedDecideRule.java index a1710445..b981044b 100644 --- a/modules/src/main/java/org/archive/modules/deciderules/ScriptedDecideRule.java +++ b/modules/src/main/java/org/archive/modules/deciderules/ScriptedDecideRule.java @@ -175,7 +175,7 @@ implements ApplicationContextAware, InitializingBean { Reader reader = null; try { - reader = getScriptSource().getReader(); + reader = getScriptSource().obtainReader(); interpreter.eval(reader); } catch (ScriptException e) { logger.log(Level.SEVERE,"script problem",e); diff --git a/modules/src/main/java/org/archive/modules/deciderules/surt/SurtPrefixedDecideRule.java b/modules/src/main/java/org/archive/modules/deciderules/surt/SurtPrefixedDecideRule.java index 3da55636..6fc50ac6 100644 --- a/modules/src/main/java/org/archive/modules/deciderules/surt/SurtPrefixedDecideRule.java +++ b/modules/src/main/java/org/archive/modules/deciderules/surt/SurtPrefixedDecideRule.java @@ -269,7 +269,7 @@ public class SurtPrefixedDecideRule extends PredicatedDecideRule if(deduceFromSeeds) { if(seeds instanceof ReadSource) { // scan text - fr = ((ReadSource)seeds).getReader(); + fr = ((ReadSource)seeds).obtainReader(); newSurtPrefixes.importFromMixed(fr, deduceFromSeeds); IOUtils.closeQuietly(fr); } else { diff --git a/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java b/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java index cd6172e7..79c55b4c 100644 --- a/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java +++ b/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java @@ -90,7 +90,7 @@ implements ReadSource, */ @Override public Iterator seedsIterator(Writer ignoredItemWriter) { - BufferedReader br = new BufferedReader(textSource.getReader()); + BufferedReader br = new BufferedReader(textSource.obtainReader()); return new SeedFileIterator(br,ignoredItemWriter); } @@ -113,7 +113,7 @@ implements ReadSource, logger.warning("nowhere to log added seed: "+curi); } else { try { - Writer fw = ((WriteTarget)textSource).getWriter(true); + Writer fw = ((WriteTarget)textSource).obtainWriter(true); // Write to new (last) line the URL. fw.write("\n"); fw.write("# Heritrix added seed " + @@ -165,7 +165,7 @@ implements ReadSource, // // } - public Reader getReader() { - return textSource.getReader(); + public Reader obtainReader() { + return textSource.obtainReader(); } }