Package org.kie.remote.services.ws.sei

Source Code of org.kie.remote.services.ws.sei.XmlAnnotationCorrectnessTest

package org.kie.remote.services.ws.sei;

import static org.junit.Assert.*;

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import javax.xml.bind.annotation.XmlType;

import org.junit.Test;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
import org.reflections.scanners.TypeAnnotationsScanner;
import org.reflections.util.ClasspathHelper;

public class XmlAnnotationCorrectnessTest {

    private static Reflections reflections = new Reflections(ClasspathHelper.forPackage("org.kie.remote.services.sei"),
            new TypeAnnotationsScanner(), new SubTypesScanner());

    @Test
    public void testCorrectNames() {
        Set<Class<?>> xmlTypeClasses = reflections.getTypesAnnotatedWith(XmlType.class);
        for( Class<?> xmlTypeClass : xmlTypeClasses ) {
            if( !xmlTypeClass.getPackage().getName().startsWith("org.kie.remote.services.sei") ) {
                continue;
            }
            String className = xmlTypeClass.getSimpleName();
            XmlType xmlTypeAnno = xmlTypeClass.getAnnotation(XmlType.class);
            assertEquals("Name property inequal for " + className, className, xmlTypeAnno.name());
            Set<String> properties = new HashSet<String>(Arrays.asList(xmlTypeAnno.propOrder()));
            Set<String> fields = new HashSet<String>();
            for( Field field : xmlTypeClass.getFields() ) {
                String fieldName = field.getName();
                assertTrue(fieldName + " not present in XmlType propOrder value in " + className, properties.contains(fieldName));
                fields.add(fieldName);
            }
            for( String prop : properties ) {
                assertTrue(prop + " XmlType propOrder values, but not a field in " + className, fields.contains(prop));
            }
        }
    }
}
TOP

Related Classes of org.kie.remote.services.ws.sei.XmlAnnotationCorrectnessTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.