private void processTypes()

in xstream/src/java/com/thoughtworks/xstream/mapper/AnnotationMapper.java [179:228]


    private void processTypes(final Set<Class<?>> types) {
        while (!types.isEmpty()) {
            final Iterator<Class<?>> iter = types.iterator();
            final Class<?> type = iter.next();
            iter.remove();

            synchronized (type) {
                if (annotatedTypes.contains(type)) {
                    continue;
                }
                try {
                    if (type.isPrimitive()) {
                        continue;
                    }

                    addParametrizedTypes(type, types);

                    processConverterAnnotations(type);
                    processAliasAnnotation(type, types);
                    processAliasTypeAnnotation(type);

                    if (type.isInterface()) {
                        continue;
                    }

                    final Field[] fields = type.getDeclaredFields();
                    for (final Field field : fields) {
                        if (field.isEnumConstant()
                            || (field.getModifiers() & (Modifier.STATIC | Modifier.TRANSIENT)) > 0) {
                            continue;
                        }

                        addParametrizedTypes(field.getGenericType(), types);

                        if (field.isSynthetic()) {
                            continue;
                        }

                        processFieldAliasAnnotation(field);
                        processAsAttributeAnnotation(field);
                        processImplicitAnnotation(field);
                        processOmitFieldAnnotation(field);
                        processLocalConverterAnnotation(field);
                    }
                } finally {
                    annotatedTypes.add(type);
                }
            }
        }
    }