You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/02/24 17:14:57 UTC

svn commit: r1074197 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/model/ main/java/org/apache/camel/model/dataformat/ main/java/org/apache/camel/model/language/ main/java/org/apache/camel/model/loadbalancer/ test/java/org/apache/camel/m...

Author: davsclaus
Date: Thu Feb 24 16:14:57 2011
New Revision: 1074197

URL: http://svn.apache.org/viewvc?rev=1074197&view=rev
Log:
CAMEL-3693: Added sanity checker test that ensures the model is consistent. Fixed the errors it reported.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java Thu Feb 24 16:14:57 2011
@@ -37,7 +37,6 @@ import org.apache.camel.spi.RouteContext
 @XmlAccessorType(XmlAccessType.FIELD)
 @Deprecated
 public class AOPDefinition extends OutputDefinition<AOPDefinition> {
-
     @XmlAttribute
     private String beforeUri;
     @XmlAttribute
@@ -57,14 +56,26 @@ public class AOPDefinition extends Outpu
         return beforeUri;
     }
 
+    public void setBeforeUri(String beforeUri) {
+        this.beforeUri = beforeUri;
+    }
+
     public String getAfterUri() {
         return afterUri;
     }
 
+    public void setAfterUri(String afterUri) {
+        this.afterUri = afterUri;
+    }
+
     public String getAfterFinallyUri() {
         return afterFinallyUri;
     }
 
+    public void setAfterFinallyUri(String afterFinallyUri) {
+        this.afterFinallyUri = afterFinallyUri;
+    }
+
     @Override
     public String getShortName() {
         return "aop";

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/DynamicRouterDefinition.java Thu Feb 24 16:14:57 2011
@@ -70,8 +70,8 @@ public class DynamicRouterDefinition<Typ
         String delimiter = getUriDelimiter() != null ? getUriDelimiter() : DEFAULT_DELIMITER;
 
         DynamicRouter dynamicRouter = new DynamicRouter(routeContext.getCamelContext(), expression, delimiter);
-        if (getIgnoreInvalidEndpoint() != null) {
-            dynamicRouter.setIgnoreInvalidEndpoints(getIgnoreInvalidEndpoint());
+        if (getIgnoreInvalidEndpoints() != null) {
+            dynamicRouter.setIgnoreInvalidEndpoints(getIgnoreInvalidEndpoints());
         }
         return dynamicRouter;
     }
@@ -88,7 +88,7 @@ public class DynamicRouterDefinition<Typ
         this.ignoreInvalidEndpoints = ignoreInvalidEndpoints;
     }
 
-    public Boolean getIgnoreInvalidEndpoint() {
+    public Boolean getIgnoreInvalidEndpoints() {
         return ignoreInvalidEndpoints;
     }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java Thu Feb 24 16:14:57 2011
@@ -45,10 +45,6 @@ public class RollbackDefinition extends 
         this.message = message;
     }
 
-    public String getMessage() {
-        return message;
-    }
-    
     @Override
     public String getShortName() {
         return "rollback";
@@ -76,6 +72,14 @@ public class RollbackDefinition extends 
         return answer;
     }
 
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
     public Boolean getMarkRollbackOnly() {
         return markRollbackOnly;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutingSlipDefinition.java Thu Feb 24 16:14:57 2011
@@ -81,8 +81,8 @@ public class RoutingSlipDefinition<Type 
         String delimiter = getUriDelimiter() != null ? getUriDelimiter() : DEFAULT_DELIMITER;
 
         RoutingSlip routingSlip = new RoutingSlip(routeContext.getCamelContext(), expression, delimiter);
-        if (getIgnoreInvalidEndpoint() != null) {
-            routingSlip.setIgnoreInvalidEndpoints(getIgnoreInvalidEndpoint());
+        if (getIgnoreInvalidEndpoints() != null) {
+            routingSlip.setIgnoreInvalidEndpoints(getIgnoreInvalidEndpoints());
         }
         return routingSlip;
     }
@@ -104,7 +104,7 @@ public class RoutingSlipDefinition<Type 
         this.ignoreInvalidEndpoints = ignoreInvalidEndpoints;
     }
     
-    public Boolean getIgnoreInvalidEndpoint() {
+    public Boolean getIgnoreInvalidEndpoints() {
         return ignoreInvalidEndpoints;
     }
     

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java Thu Feb 24 16:14:57 2011
@@ -62,6 +62,14 @@ public class ThrowExceptionDefinition ex
         return new ThrowExceptionProcessor(exception);
     }
 
+    public String getRef() {
+        return ref;
+    }
+
+    public void setRef(String ref) {
+        this.ref = ref;
+    }
+
     public Exception getException() {
         return exception;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java Thu Feb 24 16:14:57 2011
@@ -43,14 +43,26 @@ public class BindyDataFormat extends Dat
     public BindyDataFormat() {
     }
 
-    public void setPackages(String[] packages) {
-        this.packages = packages;
+    public BindyType getType() {
+        return type;
     }
 
     public void setType(BindyType type) {
         this.type = type;
     }
 
+    public String[] getPackages() {
+        return packages;
+    }
+
+    public void setPackages(String[] packages) {
+        this.packages = packages;
+    }
+
+    public String getLocale() {
+        return locale;
+    }
+
     public void setLocale(String locale) {
         this.locale = locale;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java Thu Feb 24 16:14:57 2011
@@ -103,39 +103,75 @@ public class CryptoDataFormat extends Da
         }
     }
 
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
     public void setAlgorithm(String algorithm) {
         this.algorithm = algorithm;
     }
 
+    public String getCryptoProvider() {
+        return cryptoProvider;
+    }
+
     public void setCryptoProvider(String cryptoProvider) {
         this.cryptoProvider = cryptoProvider;
     }
 
-    public void setKeyReference(String keyReference) {
-        this.keyRef = keyReference;
+    public String getKeyRef() {
+        return keyRef;
+    }
+
+    public void setKeyRef(String keyRef) {
+        this.keyRef = keyRef;
+    }
+
+    public String getInitVectorRef() {
+        return initVectorRef;
     }
 
     public void setInitVectorRef(String initVectorRef) {
         this.initVectorRef = initVectorRef;
     }
 
+    public String getAlgorithmParameterRef() {
+        return algorithmParameterRef;
+    }
+
     public void setAlgorithmParameterRef(String algorithmParameterRef) {
         this.algorithmParameterRef = algorithmParameterRef;
     }
 
+    public Integer getBuffersize() {
+        return buffersize;
+    }
+
     public void setBuffersize(Integer buffersize) {
         this.buffersize = buffersize;
     }
 
+    public String getMacAlgorithm() {
+        return macAlgorithm;
+    }
+
     public void setMacAlgorithm(String macAlgorithm) {
         this.macAlgorithm = macAlgorithm;
     }
 
+    public Boolean getShouldAppendHMAC() {
+        return shouldAppendHMAC;
+    }
+
     public void setShouldAppendHMAC(Boolean shouldAppendHMAC) {
         this.shouldAppendHMAC = shouldAppendHMAC;
     }
 
-    public void setShouldInlineInitVector(Boolean inline) {
+    public Boolean getInline() {
+        return inline;
+    }
+
+    public void setInline(Boolean inline) {
         this.inline = inline;
     }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java Thu Feb 24 16:14:57 2011
@@ -74,23 +74,31 @@ public class JaxbDataFormat extends Data
     public void setPrettyPrint(Boolean prettyPrint) {
         this.prettyPrint = prettyPrint;
     }
-    
+
     public Boolean getIgnoreJAXBElement() {
         return ignoreJAXBElement;
     }
-    
+
     public void setIgnoreJAXBElement(Boolean ignoreJAXBElement) {
         this.ignoreJAXBElement = ignoreJAXBElement;
     }
-    
+
     public Boolean getFilterNonXmlChars() {
         return filterNonXmlChars;
     }
-    
+
     public void setFilterNonXmlChars(Boolean filterNonXmlChars) {
         this.filterNonXmlChars = filterNonXmlChars;
     }
 
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
     public String getPartClass() {
         return partClass;
     }
@@ -99,16 +107,12 @@ public class JaxbDataFormat extends Data
         this.partClass = partClass;
     }
 
-    public void setPartNamespace(String partNamespace) {
-        this.partNamespace = partNamespace;
+    public String getPartNamespace() {
+        return partNamespace;
     }
 
-    public String getEncoding() {
-        return encoding;
-    }
-
-    public void setEncoding(String encoding) {
-        this.encoding = encoding;
+    public void setPartNamespace(String partNamespace) {
+        this.partNamespace = partNamespace;
     }
 
     @Override

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java Thu Feb 24 16:14:57 2011
@@ -75,6 +75,14 @@ public class JsonDataFormat extends Data
         this.unmarshalType = unmarshalType;
     }
 
+    public JsonLibrary getLibrary() {
+        return library;
+    }
+
+    public void setLibrary(JsonLibrary library) {
+        this.library = library;
+    }
+
     @Override
     protected DataFormat createDataFormat(RouteContext routeContext) {
         if (library == JsonLibrary.XStream) {
@@ -90,7 +98,6 @@ public class JsonDataFormat extends Data
                 throw ObjectHelper.wrapRuntimeCamelException(e);
             }
         }
-        Boolean answer = ObjectHelper.toBoolean(getPrettyPrint());
 
         return super.createDataFormat(routeContext);
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java Thu Feb 24 16:14:57 2011
@@ -47,15 +47,23 @@ public class ProtobufDataFormat extends 
         this();
         setInstanceClass(instanceClass); 
     }
-    
+
+    public String getInstanceClass() {
+        return instanceClass;
+    }
+
     public void setInstanceClass(String instanceClass) {
         this.instanceClass = instanceClass;
     }
-    
-    public void setDefaultInstance(Object instance) {
-        this.defaultInstance = instance;
+
+    public Object getDefaultInstance() {
+        return defaultInstance;
     }
-    
+
+    public void setDefaultInstance(Object defaultInstance) {
+        this.defaultInstance = defaultInstance;
+    }
+
     @Override
     protected void configureDataFormat(DataFormat dataFormat) {
         if (this.instanceClass != null) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java Thu Feb 24 16:14:57 2011
@@ -91,6 +91,22 @@ public class MethodCallExpression extend
         return "bean";
     }
 
+    public String getBean() {
+        return bean;
+    }
+
+    public void setBean(String bean) {
+        this.bean = bean;
+    }
+
+    public String getRef() {
+        return ref;
+    }
+
+    public void setRef(String ref) {
+        this.ref = ref;
+    }
+
     public String getMethod() {
         return method;
     }
@@ -99,6 +115,22 @@ public class MethodCallExpression extend
         this.method = method;
     }
 
+    public Class<?> getBeanType() {
+        return beanType;
+    }
+
+    public void setBeanType(Class<?> beanType) {
+        this.beanType = beanType;
+    }
+
+    public Object getInstance() {
+        return instance;
+    }
+
+    public void setInstance(Object instance) {
+        this.instance = instance;
+    }
+
     @Override
     public Expression createExpression(CamelContext camelContext) {
         Expression answer;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java?rev=1074197&r1=1074196&r2=1074197&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/loadbalancer/WeightedLoadBalancerDefinition.java Thu Feb 24 16:14:57 2011
@@ -91,10 +91,18 @@ public class WeightedLoadBalancerDefinit
         return distributionRatio;
     }
 
-    public void setDistributionRatioList(String distributionRatio) {
+    public void setDistributionRatio(String distributionRatio) {
         this.distributionRatio = distributionRatio;
     }
 
+    public String getDistributionRatioDelimiter() {
+        return distributionRatioDelimiter;
+    }
+
+    public void setDistributionRatioDelimiter(String distributionRatioDelimiter) {
+        this.distributionRatioDelimiter = distributionRatioDelimiter;
+    }
+
     @Override
     public String toString() {
         if (!isRoundRobin()) {

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java?rev=1074197&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java Thu Feb 24 16:14:57 2011
@@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Set;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+
+import junit.framework.TestCase;
+import org.apache.camel.impl.DefaultPackageScanClassResolver;
+import org.apache.camel.spi.PackageScanClassResolver;
+import org.apache.camel.util.IntrospectionSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Performs sanity check on the model classes that their JAXB annotations and getter/setter match up.
+ */
+public class ModelSanityCheckerTest extends TestCase {
+
+    private static final Logger LOG = LoggerFactory.getLogger(ModelSanityCheckerTest.class);
+
+    private Set<Class<?>> discoverJAxbClasses() {
+        PackageScanClassResolver resolver = new DefaultPackageScanClassResolver();
+        String[] packages = Constants.JAXB_CONTEXT_PACKAGES.split(":");
+        return resolver.findAnnotated(XmlAccessorType.class, packages);
+    }
+
+    public void testSanity() throws Exception {
+        Set<Class<?>> classes = discoverJAxbClasses();
+        assertNotNull(classes);
+        assertTrue("There should be > 140 classes, was: " + classes.size(), classes.size() > 140);
+
+        // check each class is okay
+        for (Class clazz : classes) {
+
+            // skip ProcessorDefinition as its special
+            if (clazz == ProcessorDefinition.class) {
+                continue;
+            }
+            // skip RouteDefinition as its special
+            if (clazz == RouteDefinition.class) {
+                continue;
+            }
+
+            // check each declared field in the class
+            for (Field field : clazz.getDeclaredFields()) {
+                LOG.debug("Class {} has field {}", clazz.getName(), field.getName());
+
+                // does the field have a jaxb annotation?
+                boolean attribute = field.getAnnotation(XmlAttribute.class) != null;
+                boolean element = field.getAnnotation(XmlElement.class) != null;
+                boolean elementRef = field.getAnnotation(XmlElementRef.class) != null;
+
+                // only one of those 3 is allowed, so check that we don't have 2+ of them
+                if ((attribute && element) || (attribute && elementRef) || (element && elementRef)) {
+                    fail("Class " + clazz.getName() + " has field " + field.getName() + " which has 2+ annotations that are not allowed together.");
+                }
+
+                // check getter/setter
+                if (attribute || element || elementRef) {
+                    // check for getter/setter
+                    Method getter = IntrospectionSupport.getPropertyGetter(clazz, field.getName());
+                    Method setter = IntrospectionSupport.getPropertySetter(clazz, field.getName());
+
+                    assertNotNull("Getter " + field.getName() + " on class " + clazz.getName() + " is missing", getter);
+                    assertNotNull("Setter " + field.getName() + " on class " + clazz.getName() + " is missing", setter);
+                }
+            }
+
+            // we do not expect any JAXB annotations on methods
+            for (Method method : clazz.getDeclaredMethods()) {
+                LOG.debug("Class {} has method {}", clazz.getName(), method.getName());
+
+                // does the field have a jaxb annotation?
+                boolean attribute = method.getAnnotation(XmlAttribute.class) != null;
+                boolean element = method.getAnnotation(XmlElement.class) != null;
+                boolean elementRef = method.getAnnotation(XmlElementRef.class) != null;
+
+                assertFalse("Class " + clazz.getName() + " has method " + method.getName() + " should not have @XmlAttribute annotation", attribute);
+                assertFalse("Class " + clazz.getName() + " has method " + method.getName() + " should not have @XmlElement annotation", element);
+                assertFalse("Class " + clazz.getName() + " has method " + method.getName() + " should not have @XmlElementRef annotation", elementRef);
+            }
+        }
+
+    }
+
+}