1 package spoon.jdiet;2 3 import java.io.Serializable ;4 import java.util.Iterator ;5 import java.util.Set ;6 7 import spoon.processing.AbstractProcessor;8 import spoon.reflect.declaration.CtClass;9 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> superitfs = cl.getSuperinterfaces();30 for (Iterator <CtTypeReference> iter = superitfs.iterator(); iter.hasNext();) {31 CtTypeReference superitf = iter.next();32 33 // Remove Serializable34 if( superitf.isSubtypeOf(tf.createReference(Serializable .class)) ) {35 36 /*37 * Do not remove directly superitf from superitfs as this leads38 * to a ConcurrentModificationException.39 */40 iter.remove();41 }42 }43 }44 }45