01: package spoon.jdiet;
02:
03: import java.io.Serializable;
04: import java.util.Iterator;
05: import java.util.Set;
06:
07: import spoon.processing.AbstractProcessor;
08: import spoon.reflect.declaration.CtClass;
09: import spoon.reflect.factory.TypeFactory;
10: import spoon.reflect.reference.CtTypeReference;
11:
12: /**
13: * This processor processes types extended and implemented by a class.
14: *
15: * @author Lionel Seinturier <Lionel.Seinturier@lifl.fr>
16: */
17: public class ClassProcessor extends AbstractProcessor<CtClass> {
18:
19: public ClassProcessor() {
20: }
21:
22: public void process(CtClass cl) {
23:
24: TypeFactory tf = getFactory().Type();
25:
26: /*
27: * Process the implemented interfaces.
28: */
29: Set<CtTypeReference> super itfs = cl.getSuperinterfaces();
30: for (Iterator<CtTypeReference> iter = super itfs.iterator(); iter
31: .hasNext();) {
32: CtTypeReference super itf = iter.next();
33:
34: // Remove Serializable
35: if (super itf.isSubtypeOf(tf
36: .createReference(Serializable.class))) {
37:
38: /*
39: * Do not remove directly superitf from superitfs as this leads
40: * to a ConcurrentModificationException.
41: */
42: iter.remove();
43: }
44: }
45: }
46: }
|