private void postProcessing() {
int size = getNonContainmentReferences().size();
for (int i = 0; i < size; i++) {
NonContainmentReference nonContainmentReference = (NonContainmentReference) getNonContainmentReferences().get(i);
SDOType owningType = nonContainmentReference.getOwningType();
if (owningType != null) {
String propertyTypeName = nonContainmentReference.getPropertyTypeName();
String propertyTypeUri = nonContainmentReference.getPropertyTypeURI();
SDOType oppositeType = getSDOTypeForName(propertyTypeUri, propertyTypeUri, propertyTypeName);
if (oppositeType != null) {
SDOProperty owningProp = nonContainmentReference.getOwningProp();
if (owningProp != null) {
// Spec sect 9.2 (1) oppositeType.dataType must be false
if (oppositeType.isDataType()) {
throw SDOException.propertyTypeAnnotationTargetCannotBeDataTypeTrue(//
oppositeType.getName(), owningProp.getName());
}
owningProp.setType(oppositeType);
owningProp.setContainment(false);
owningProp.buildMapping(owningProp.getType().getURI());
// Bidirectional property name
String oppositePropName = nonContainmentReference.getOppositePropName();
if (oppositePropName != null) {
SDOProperty prop = (SDOProperty) oppositeType.getProperty(oppositePropName);
owningProp.setOpposite(prop);
prop.setOpposite(owningProp);
}
}
}