Java Reference
In-Depth Information
public KodoFetchGroupInterceptor(PersistenceManagerFactory pmf,
Map fetchGroupConfig) {
this.pmf = pmf;
this.fetchGroupConfig = fetchGroupConfig;
}
B
public Object invoke(MethodInvocation methodInvocation)
throws Throwable {
PersistenceManager pm = PersistenceManagerFactoryUtils
.getPersistenceManager(pmf, false);
KodoPersistenceManager kpm = (KodoPersistenceManager) pm;
C
FetchConfiguration fetchConfiguration = kpm
.getFetchConfiguration();
String[] originalFetchGroups = fetchConfiguration
.getFetchGroups();
String[] originalFields = fetchConfiguration.getFields();
D
try {
configureFetchGroups(methodInvocation.getMethod()
.getName(), kpm, fetchConfiguration);
return methodInvocation.proceed();
} finally {
fetchConfiguration.clearFetchGroups();
fetchConfiguration.addFetchGroups(originalFetchGroups);
fetchConfiguration.clearFields();
fetchConfiguration.addFields(originalFields);
E
F
G
H
PersistenceManagerFactoryUtils
.closePersistenceManagerIfNecessary(pm, pmf);
}
}
private void configureFetchGroups(String methodName,
KodoPersistenceManager kpm,
FetchConfiguration fetchConfiguration) {
List fieldNames = getFieldNames(methodName);
if (fieldNames != null) {
for (Iterator it = fieldNames.iterator(); it
.hasNext();) {
String fieldName = (String) it.next();
fetchConfiguration.addField(fieldName);
}
}
}
I
J
private List getFieldNames(String methodName) {
List fieldNames = (List) fetchGroupConfig
.get(methodName);
if (fieldNames == null)
fieldNames = (List) fetchGroupConfig.get("*");
Search WWH ::




Custom Search