Skip to content
Snippets Groups Projects

Resolve "CimXMLHandler.handleFeature() must take into account the absence of object"

1 file
+ 27
25
Compare changes
  • Side-by-side
  • Inline
@@ -120,32 +120,34 @@ public abstract class CimXMLHandler extends SAXXMLHandler {
@@ -120,32 +120,34 @@ public abstract class CimXMLHandler extends SAXXMLHandler {
@Override
@Override
protected void handleFeature( String prefix, String name ) {
protected void handleFeature( String prefix, String name ) {
EObject peekObject = objects.peekEObject();
EObject peekObject = objects.peekEObject();
EStructuralFeature feature = getFeature( peekObject, prefix, name, true );
if( peekObject != null ) {
// For compound objects
EStructuralFeature feature = getFeature( peekObject, prefix, name, true );
if( nextIsCompound ) {
// For compound objects
if( feature != null ) {
if( nextIsCompound ) {
// TODO: Something unexpected ???
if( feature != null ) {
}
// TODO: Something unexpected ???
nextIsCompound = false;
}
objects.push( peekObject );
nextIsCompound = false;
types.push( OBJECT_TYPE );
objects.push( peekObject );
mixedTargets.push( null );
types.push( OBJECT_TYPE );
return;
mixedTargets.push( null );
}
return;
if( feature instanceof EReference ) {
EReference eReference = ( EReference ) feature;
EReference opposite = eReference.getEOpposite();
if( eReference.isResolveProxies() && eReference.isTransient() &&
! opposite .isResolveProxies() && ! opposite. isTransient()) {
eReference.setResolveProxies( false );
eReference.setTransient( false );
opposite.setResolveProxies( true );
opposite.setTransient( true );
}
}
if( feature instanceof EReference ) {
if( eReference.isContainment() ) {
EReference eReference = ( EReference ) feature;
nextIsCompound = true;
 
EReference opposite = eReference.getEOpposite();
 
if( eReference.isResolveProxies() && eReference.isTransient() &&
 
! opposite .isResolveProxies() && ! opposite. isTransient()) {
 
eReference.setResolveProxies( false );
 
eReference.setTransient( false );
 
opposite.setResolveProxies( true );
 
opposite.setTransient( true );
 
}
 
 
if( eReference.isContainment() ) {
 
nextIsCompound = true;
 
}
}
}
}
}
super.handleFeature( prefix, name );
super.handleFeature( prefix, name );
Loading