in src/main/java/org/apache/jackrabbit/ocm/mapper/impl/AbstractMapperImpl.java [88:156]
protected List solveReferences(List errors) {
for(Iterator it = this.mappingDescriptor.getClassDescriptorsByClassName().entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry) it.next();
ClassDescriptor cd = (ClassDescriptor) entry.getValue();
// Check if the ancestor is a persistent class
if (null != cd.getExtend() && !"".equals(cd.getExtend()))
{
ClassDescriptor superClassDescriptor = this.mappingDescriptor.getClassDescriptorByName(cd.getExtend());
if (null == superClassDescriptor)
{
// Just a debug info because we can have a non persisted ancestor class
log.debug("Cannot find mapping for class "
+ cd.getExtend()
+ " referenced as extends from "
+ cd.getClassName());
// This is not necessary to keep a non persisted ancestor class
cd.setExtend(null);
}
else
{
log.debug("Class " +cd.getClassName() + " extends " + cd.getExtend());
cd.setSuperClassDescriptor(superClassDescriptor);
}
}
else
{
rootClassDescriptors.add(cd);
}
// Check if the implemented interfaces are persistent classes
Set interfaces = cd.getImplements();
Set mappedInterfaces = new HashSet();
if (interfaces.size() > 0)
{
for (Iterator iterator = interfaces.iterator(); iterator.hasNext();)
{
String interfaceName= (String) iterator.next();
ClassDescriptor interfaceClassDescriptor = this.mappingDescriptor.getClassDescriptorByName(interfaceName);
if (null == interfaceClassDescriptor)
{
// Just a debug info because we can have a non persisted interface reference
log.debug("Cannot find mapping for interface "
+ interfaceName
+ " referenced as implements from "
+ cd.getClassName());
}
else
{
log.debug("Class " +cd.getClassName() + " implements " + interfaceName);
interfaceClassDescriptor.addDescendantClassDescriptor(cd);
mappedInterfaces.add(interfaceName);
}
}
cd.setImplements(mappedInterfaces);
}
}
return errors;
}