This feature release brings the following additions…
Simple Pipeline
Useful if you want to quickly assemble multiple tasks to be run into a single “pipeline” while keeping it ultra simple. The following example does it all in a single class only to keep it short.
public class MyPipeline extends Pipeline<String> {
public MyPipeline() {
addStage(new MyTask1());
addStage(new MyTask2());
}
// Class: Task1
private class MyTask1 implements IPipelineStage<String> {
@Override
public boolean execute(String context) {
System.out.println("Task 1 executed: " + context);
return true;
}
}
// Class: Task2
private class MyTask2 implements IPipelineStage<String> {
@Override
public boolean execute(String context) {
System.out.println("Task 2 executed: " + context);
return true;
}
}
public static void main(String[] args) {
new MyPipeline().execute("hello");
// Will print out:
// Task 1 executed: hello
// Task 2 executed: hello
}
}
Cacheable Streams
There are several excellent object caching mechanism available to Java already if you need something sophisticated. This release offers a very lightweight cache implementation that can make InputStream and OutputStream reusable. It stores the stream in memory until a configurable threshold is reached, after which it switches to fast file lookup. A CachedStreamFactory is used to obtain cached streams sharing the same pool of memory.
int size10mb = 10 * 1024 * 1024;
int size1mb = 1024 * 1024;
InputStream is = null; // <-- your original input stream
OutputStream os = null; // <-- your original output stream
CachedStreamFactory streamFactory = new CachedStreamFactory(size10mb, size1mb);
//--- Reuse the input stream ---
CachedInputStream cachedInput = streamFactory.newInputStream(is);
// Read the input stream the first time
System.out.println(IOUtils.toString(cachedInput));
// Read the input stream a second time
System.out.println(IOUtils.toString(cachedInput));
// Released the cached data, preventing further re-use
cachedInput.dispose();
//--- Reuse the output stream ---
CachedOutputStream cachedOutput = streamFactory.newOuputStream(os);
IOUtils.write("lots of data", cachedOutput);
// Obtain a new input stream from the output
CachedInputStream newInputStream = cachedOutput.getInputStream();
// Do what you want with this input stream
Enhanced XML Writing
The Java XMLStreamWriter is a useful class, but is a bit annoying to use when you are not always writing strings. The EnhancedXMLStreamWriter add convenience method for primary types and others.
Writer out = null; // <-- your target writer
EnhancedXMLStreamWriter xml = new EnhancedXMLStreamWriter(out);
xml.writeStartDocument();
xml.writeStartElement("item");
xml.writeElementInteger("quantity", 23);
xml.writeElementString("name", "something");
xml.writeStartElement("size");
xml.writeAttributeInteger("height", 24);
xml.writeAttributeInteger("width", 26);
xml.writeEndElement();
xml.writeElementBoolean("sealwrapped", true);
xml.writeEndElement();
xml.writeEndDocument();
/* Will write:
<?xml version="1.0" encoding="UTF-8"?>
<item>
<quantity>23</quantity>
<name>something</name>
<size height="24" width="26" />
<sealwrapped>true</sealwrapped>
</item>
*/
More Equality checks
More methods were added to EqualUtils:
EqualsUtil.equalsAnyIgnoreCase("toMatch", "candidate1", "candiate1");
EqualsUtil.equalsAllIgnoreCase("toMatch", "candidate1", "candiate1");
EqualsUtil.equalsNoneIgnoreCase("toMatch", "candidate1", "candiate1");
Discover More Features
A few more features and updates were made to the Norconex Commons Lang library. For more information, check out the full release notes.
Download your copy now.