I use Seam 2.2. I want to get a private field from a Seam component using Reflections. So I have:
LocalizationEditActionRoot localizationEditActionRoot = (LocalizationEditActionRoot) Component
.getInstance(LocalizationEditActionRoot.class, true);
Class currentClass = localizationEditActionRoot.getClass();
WebDavMockClient mockClient = new WebDavMockClient();
Field f = currentClass.getDeclaredField("davClient");
f.setAccessible(true);
f.set(localizationEditActionRoot, mockClient);
If I want to get a field called davClient(WebDavClient)
I get a NoSuchFieldException. The field is of course injected. If i try something like this:
Class currentClass = Class.forName("fr.isiom.bpms.admin.session.ext.action.root.LocalizationEditActionRoot");
WebDavMockClient mockClient = new WebDavMockClient();
Field f = currentClass.getDeclaredField("davClient");
f.setAccessible(true);
f.set(localizationEditActionRoot, mockClient);
I get the field davClient
but the value isn't changed. He is still a instance of WebDavClient instead of WebDavMockClient. How can I change that field value?