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 = oppositeType.getProperty(oppositePropName);
owningProp.setOpposite(prop);
prop.setOpposite(owningProp);
}
}
}
}
}
Iterator<Type> iter = getGlobalRefs().keySet().iterator();
while (iter.hasNext()) {
Object nextKey = iter.next();
java.util.List<GlobalRef> value = getGlobalRefs().get(nextKey);
java.util.List refsToRemove = new ArrayList();
if (value != null) {
for (int i = 0; i < value.size(); i++) {
GlobalRef nextGlobalRef = value.get(i);
SDOProperty p = processRef(nextGlobalRef);
if (p.isFinalized()) {
refsToRemove.add(nextGlobalRef);
}
}
}
for (int i = 0; i < refsToRemove.size(); i++) {