Lines 15-24
Link Here
|
15 |
import java.util.ArrayList; |
15 |
import java.util.ArrayList; |
16 |
import java.util.Collections; |
16 |
import java.util.Collections; |
17 |
import java.util.HashMap; |
17 |
import java.util.HashMap; |
|
|
18 |
import java.util.HashSet; |
18 |
import java.util.Iterator; |
19 |
import java.util.Iterator; |
19 |
import java.util.List; |
20 |
import java.util.List; |
20 |
import java.util.ListIterator; |
21 |
import java.util.ListIterator; |
21 |
import java.util.Map; |
22 |
import java.util.Map; |
|
|
23 |
import java.util.Set; |
22 |
|
24 |
|
23 |
import org.eclipse.emf.common.util.BasicDiagnostic; |
25 |
import org.eclipse.emf.common.util.BasicDiagnostic; |
24 |
import org.eclipse.emf.common.util.Diagnostic; |
26 |
import org.eclipse.emf.common.util.Diagnostic; |
Lines 129-135
Link Here
|
129 |
DiagnosticChain diagnostics, Map context) { |
131 |
DiagnosticChain diagnostics, Map context) { |
130 |
boolean result = true; |
132 |
boolean result = true; |
131 |
|
133 |
|
132 |
if (element.allOwnedElements().contains(element)) { |
134 |
// get all elements owning the 'element' |
|
|
135 |
Set owners = collectOwners(element); |
136 |
|
137 |
if (owners.contains(element)) { |
133 |
result = false; |
138 |
result = false; |
134 |
|
139 |
|
135 |
if (diagnostics != null) { |
140 |
if (diagnostics != null) { |
Lines 144-149
Link Here
|
144 |
|
149 |
|
145 |
return result; |
150 |
return result; |
146 |
} |
151 |
} |
|
|
152 |
|
153 |
protected static Set collectOwners(Element element) { |
154 |
Set result = new HashSet(); |
155 |
Element owner = element.getOwner(); |
156 |
|
157 |
while ((owner != null) && result.add(owner)) { |
158 |
owner = owner.getOwner(); |
159 |
} |
160 |
|
161 |
return result; |
162 |
} |
147 |
|
163 |
|
148 |
/** |
164 |
/** |
149 |
* <!-- begin-user-doc --> |
165 |
* <!-- begin-user-doc --> |