Because Meta Programming must be easy.


Now that you know your way around Mirror, maybe you want something more.

Reflection Providers

Basically, all dirty work is handled by a collection of interfaces we call Reflection Providers. These are the real Mirror's core. Today we only have, that uses only Java Reflection API. But you can just implement your own net.vidageek.mirror.provider.ReflectionProvider to give you more control over what's happening. Actually, net.vidageek.mirror.provider.ReflectionProvider is just a wrapper for more specific interfaces: But how do you make Mirror use your Reflection Provider? Take a look at Extension -> Configuration.

Sun Reflection Provider

There is an implementation of ReflectionProvider that relies on some Sun internal classes to speedup reflection by bypassing security checks. This provider may be 25% faster than the default provider depending on how you're using mirror. Warning!!! This will probably only work on Sun JVM 1.5 and 1.6. There are two ways to use it:
new Mirror(new Sun15ReflectionProvider());
or add the following line to your
provider.class = net.vidageek.mirror.provider.sun15.Sun15ReflectionProvider


There are two ways to configure Mirror. You can instantiate Mirror passing a net.vidageek.mirror.provider.ReflectionProvider :
new Mirror(new FakeReflectionProvider());
Or you can let Mirror read a property file ( located at your project root folder. For now, this configuration file will use only the following key: An example:
provider.class = net.vidageek.mirror.fake.FakeProvider
Just to remember, no configuration is needed to use Mirror. It will work just fine without it. Use it only if fine is not enough for your needs.