|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.hamcrest.generator.SugarGenerator
public class SugarGenerator
API for syntactic sugar and wrapper code generation framework.
Generally, Matcher factory methods are defined all over the place, which makes it really hard to remember which methods need to be imported and doesn't allow you to easily browse a list of all of them.
This generates one uber matcher factory that delegates to all the respective classes.
Additionally, this allows the uber-classes to do things like wrap matchers in adapters (e.g. to make them EasyMock friendly) or even generate wrappers in other languages (such as JRuby or Jython).
You need to add at least one writer and at least one factory method for this to be any help.
SugarGenerator sugarGenerator = new SugarGenerator(); try { // Write out sugar as standard Hamcrest factories. sugarGenerator.addWriter( new HamcrestFactoryWriter("com.some.package", "MyMatcherClass", new FileWriter(...))); // Also write out sugar as EasyMock compatible factories. sugarGenerator.addWriter( new EasyMockFactoryWriter("com.some.package", "MyEasyMatcherClass", new FileWriter(...))); // Add a load of Matcher factories to the generated sugar. The factory methods // are read via reflection. sugarGenerator.addFactoryMethods(new ReflectiveFactoryReader(IsIn.class)); sugarGenerator.addFactoryMethods(new ReflectiveFactoryReader(IsSame.class)); sugarGenerator.addFactoryMethods(new ReflectiveFactoryReader(IsNot.class)); // Generate everything! sugarGenerator.generate(); } finally { // Clean up... close all streams. sugarGenerator.close(); }
FactoryWriter
,
HamcrestFactoryWriter
,
ReflectiveFactoryReader
Constructor Summary | |
---|---|
SugarGenerator()
|
Method Summary | |
---|---|
void |
addFactoryMethod(FactoryMethod method)
Add a FactoryMethod that will be generated in the sugar. |
void |
addFactoryMethods(java.lang.Iterable<FactoryMethod> methods)
Convient way to add multiple FactoryMethods. |
void |
addWriter(FactoryWriter factoryWriter)
Add a writer of factories. |
void |
close()
Close all underlying streams. |
void |
generate()
Generate all the factory methods using all the writers. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SugarGenerator()
Method Detail |
---|
public void addWriter(FactoryWriter factoryWriter)
addWriter
in interface SugarConfiguration
public void addFactoryMethod(FactoryMethod method)
addFactoryMethod
in interface SugarConfiguration
ReflectiveFactoryReader
,
FactoryMethod
public void addFactoryMethods(java.lang.Iterable<FactoryMethod> methods)
addFactoryMethods
in interface SugarConfiguration
addFactoryMethod(FactoryMethod)
public void generate() throws java.io.IOException
java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
java.io.IOException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |