You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2016/11/04 11:29:06 UTC

svn commit: r1768016 - in /qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model: ConfiguredObjectFactoryGenerator.java ManagedObjectFactoryConstructor.java

Author: orudyy
Date: Fri Nov  4 11:29:06 2016
New Revision: 1768016

URL: http://svn.apache.org/viewvc?rev=1768016&view=rev
Log:
QPID-7495: Add support for condition expression into conditionally available configured objects

Modified:
    qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java
    qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java

Modified: qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java?rev=1768016&r1=1768015&r2=1768016&view=diff
==============================================================================
--- qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java (original)
+++ qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java Fri Nov  4 11:29:06 2016
@@ -477,10 +477,11 @@ public class ConfiguredObjectFactoryGene
     private String generateObjectFactory(final Filer filer, final ExecutableElement constructorElement)
     {
         TypeElement classElement = (TypeElement) constructorElement.getEnclosingElement();
-        String factoryName = classElement.getQualifiedName().toString() + "Factory";
+        String objectQualifiedClassName = classElement.getQualifiedName().toString();
+        String factoryName = objectQualifiedClassName + "Factory";
         String factorySimpleName = classElement.getSimpleName().toString() + "Factory";
         String objectSimpleName = classElement.getSimpleName().toString();
-        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Generating factory file for " + classElement.getQualifiedName().toString());
+        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Generating factory file for " + objectQualifiedClassName);
         final ManagedObjectFactoryConstructor annotation =
                 constructorElement.getAnnotation(ManagedObjectFactoryConstructor.class);
         PackageElement packageElement = (PackageElement) classElement.getEnclosingElement();
@@ -544,13 +545,32 @@ public class ConfiguredObjectFactoryGene
             pw.println("    }");
             if(annotation.conditionallyAvailable())
             {
+                final String condition = annotation.condition();
                 pw.println();
                 pw.println("    @Override");
                 pw.println("    public boolean isAvailable()");
                 pw.println("    {");
-                pw.println("        return " + objectSimpleName + ".isAvailable();");
-                pw.println("    }");
+                if ("".equals(condition))
+                {
+                    pw.println("        return " + objectSimpleName + ".isAvailable();");
+                }
+                else
+                {
+                    if (condition.matches("([\\w][\\w\\d_]+\\.)+[\\w][\\w\\d_\\$]*#[\\w\\d_]+\\s*\\(\\s*\\)"))
+                    {
+                        pw.println("        return " + condition.replace('#', '.') + ";");
 
+                    }
+                    else
+                    {
+                        processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
+                                                                 String.format(
+                                                                         "Invalid condition expression for '%s' : %s",
+                                                                         objectQualifiedClassName,
+                                                                         condition));
+                    }
+                }
+                pw.println("    }");
             }
 
             pw.println("}");

Modified: qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java?rev=1768016&r1=1768015&r2=1768016&view=diff
==============================================================================
--- qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java (original)
+++ qpid/java/trunk/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java Fri Nov  4 11:29:06 2016
@@ -30,4 +30,6 @@ import java.lang.annotation.Target;
 public @interface ManagedObjectFactoryConstructor
 {
     boolean conditionallyAvailable() default false;
+
+    String condition() default "";
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org