Author: jgallimore
Date: Sat Apr 18 10:59:52 2009
New Revision: 766299

URL: http://svn.apache.org/viewvc?rev=766299&view=rev
Log:
OEP-26 don't create annotations that already exist on methods and fields

Modified:
    
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/main/java/org/apache/openejb/plugins/common/IJDTFacade.java
    
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/test/java/org/apache/openejb/plugins/common/JDTFacadeStub.java
    
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.devtools.core/src/main/java/org/apache/openejb/devtools/core/JDTFacade.java

Modified: 
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/main/java/org/apache/openejb/plugins/common/IJDTFacade.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/main/java/org/apache/openejb/plugins/common/IJDTFacade.java?rev=766299&r1=766298&r2=766299&view=diff
==============================================================================
--- 
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/main/java/org/apache/openejb/plugins/common/IJDTFacade.java
 (original)
+++ 
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/main/java/org/apache/openejb/plugins/common/IJDTFacade.java
 Sat Apr 18 10:59:52 2009
@@ -23,8 +23,8 @@
 
 public interface IJDTFacade {
        void addClassAnnotation(String targetClass, Class<? extends Annotation> 
annotation, Map<String,Object> properties);
-       void addMethodAnnotation(String fullyQualifiedClassName, String 
methodName, String[] signature, Class<?> annotationClass, Map<String, Object> 
properties);
-       void addFieldAnnotation(String targetClass, String targetField, 
Class<?> annotation, Map<String, Object> properties);
+       void addMethodAnnotation(String fullyQualifiedClassName, String 
methodName, String[] signature, Class<? extends Annotation> annotationClass, 
Map<String, Object> properties);
+       void addFieldAnnotation(String targetClass, String targetField, Class<? 
extends Annotation> annotation, Map<String, Object> properties);
        void removeInterface(String targetClass, String interfaceToRemove);
        void removeAbstractModifierFromClass(String targetClass);
        void removeAbstractModifierFromMethod(String targetClass, String 
methodName, String[] signature, String methodBody);
@@ -32,7 +32,7 @@
        boolean classImplements(String targetClass, String targetInterface);
        String getMethodReturnType(String targetClass, String methodName, 
String[] signature);
        void addField(String targetClass, String fieldName, String fieldType);
-       void addAnnotationToFieldsOfType(String targetClass, Class<?> 
annotation, Map<String, Object> properties);
+       void addAnnotationToFieldsOfType(String targetClass, Class<? extends 
Annotation> annotation, Map<String, Object> properties);
        void addInterface(String ejbClass, String interfaceClass);
        void addWarning(String warning);
        public void convertMethodToConstructor(String className, String 
methodName, String[] signature);

Modified: 
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/test/java/org/apache/openejb/plugins/common/JDTFacadeStub.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/test/java/org/apache/openejb/plugins/common/JDTFacadeStub.java?rev=766299&r1=766298&r2=766299&view=diff
==============================================================================
--- 
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/test/java/org/apache/openejb/plugins/common/JDTFacadeStub.java
 (original)
+++ 
openejb/trunk/sandbox/openejb-eclipse-plugin/common/src/test/java/org/apache/openejb/plugins/common/JDTFacadeStub.java
 Sat Apr 18 10:59:52 2009
@@ -24,7 +24,7 @@
 
 public class JDTFacadeStub implements IJDTFacade {
 
-       public void addAnnotationToFieldsOfType(String targetClass, Class<?> 
annotation, Map<String, Object> properties) {
+       public void addAnnotationToFieldsOfType(String targetClass, Class<? 
extends Annotation> annotation, Map<String, Object> properties) {
                StringBuffer buffer = new StringBuffer();
                buffer.append("[ADD ANNOTATIONS TO FIELDS OF TYPE] Target field 
type: ");
                buffer.append(targetClass);
@@ -104,7 +104,7 @@
                System.out.println(buffer.toString());
        }
 
-       public void addFieldAnnotation(String targetClass, String targetField, 
Class<?> annotation, Map<String, Object> properties) {
+       public void addFieldAnnotation(String targetClass, String targetField, 
Class<? extends Annotation> annotation, Map<String, Object> properties) {
                StringBuffer buffer = new StringBuffer();
                buffer.append("[ADD FIELD ANNOTATION] Target field type: ");
                buffer.append(targetClass);
@@ -124,7 +124,7 @@
 
        }
 
-       public void addMethodAnnotation(String fullyQualifiedClassName, String 
methodName, String[] signature, Class<?> annotationClass, Map<String, Object> 
properties) {
+       public void addMethodAnnotation(String fullyQualifiedClassName, String 
methodName, String[] signature, Class<? extends Annotation> annotationClass, 
Map<String, Object> properties) {
                StringBuffer buffer = new StringBuffer();
                buffer.append("[ADD METHOD ANNOTATION] Target field type: ");
                buffer.append(fullyQualifiedClassName);

Modified: 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.devtools.core/src/main/java/org/apache/openejb/devtools/core/JDTFacade.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.devtools.core/src/main/java/org/apache/openejb/devtools/core/JDTFacade.java?rev=766299&r1=766298&r2=766299&view=diff
==============================================================================
--- 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.devtools.core/src/main/java/org/apache/openejb/devtools/core/JDTFacade.java
 (original)
+++ 
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.apache.openejb.devtools.core/src/main/java/org/apache/openejb/devtools/core/JDTFacade.java
 Sat Apr 18 10:59:52 2009
@@ -319,13 +319,19 @@
                return expression;
        }
 
-       public void addMethodAnnotation(String fullyQualifiedClassName, String 
methodName, String[] signature, Class<?> annotationClass, Map<String, Object> 
properties) {
+       public void addMethodAnnotation(String fullyQualifiedClassName, String 
methodName, String[] signature, Class<? extends 
java.lang.annotation.Annotation> annotationClass, Map<String, Object> 
properties) {
                try {
                        CompilationUnit cu = 
compilationUnitCache.getCompilationUnit(fullyQualifiedClassName);
                        MethodDeclaration method = 
compilationUnitCache.getMethodDeclaration(fullyQualifiedClassName, methodName, 
signature);
                        if (method == null) {
                                return;
                        }
+                       
+                       if 
(isAnnotationAlreadyUsedOnDeclaration(annotationClass, method)) {
+                               
warnings.add(String.format(Messages.getString("org.apache.openejb.helper.annotation.warnings.1"),
 annotationClass.getCanonicalName(), fullyQualifiedClassName + "." + 
methodName)); //$NON-NLS-1$
+                               return;
+                       }
+                       
                        Annotation modifier = createModifier(cu.getAST(), 
annotationClass, properties, cu);
                        method.modifiers().add(0, modifier);
 
@@ -349,7 +355,7 @@
 
        
 
-       public void addFieldAnnotation(String targetClass, String targetField, 
Class<?> annotation, Map<String, Object> properties) {
+       public void addFieldAnnotation(String targetClass, String targetField, 
Class<? extends java.lang.annotation.Annotation> annotation, Map<String, 
Object> properties) {
                try {
                        CompilationUnit cu = 
compilationUnitCache.getCompilationUnit(targetClass);
 
@@ -363,6 +369,12 @@
                                        continue;
                                }
 
+                               if 
(isAnnotationAlreadyUsedOnDeclaration(annotation, field)) {
+                                       
warnings.add(String.format(Messages.getString("org.apache.openejb.helper.annotation.warnings.1"),
 annotation.getCanonicalName(), targetClass + "." + targetField)); //$NON-NLS-1$
+                                       return;
+                               }
+
+                               
                                VariableDeclarationFragment varibleDeclaration 
= (VariableDeclarationFragment) field.fragments().get(0);
                                if 
(varibleDeclaration.getName().toString().equals(targetField)) {
                                        Annotation modifier = 
createModifier(cu.getAST(), annotation, properties, cu);
@@ -525,7 +537,7 @@
 
        }
 
-       public void addAnnotationToFieldsOfType(String targetClass, Class<?> 
annotation, Map<String, Object> properties) {
+       public void addAnnotationToFieldsOfType(String targetClass, Class<? 
extends java.lang.annotation.Annotation> annotation, Map<String, Object> 
properties) {
                try {
                        IType element = javaProject.findType(targetClass);
 


Reply via email to