|
||||||||||
| 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 SugarConfigurationpublic void addFactoryMethod(FactoryMethod method)
addFactoryMethod in interface SugarConfigurationReflectiveFactoryReader,
FactoryMethodpublic void addFactoryMethods(java.lang.Iterable<FactoryMethod> methods)
addFactoryMethods in interface SugarConfigurationaddFactoryMethod(FactoryMethod)
public void generate()
throws java.io.IOException
java.io.IOException
public void close()
throws java.io.IOException
close in interface java.io.Closeablejava.io.IOException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||