You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by aj...@apache.org on 2005/08/25 12:51:06 UTC

svn commit: r240042 - in /webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl: codegen/CodeGenerationEngine.java codegen/codegen-config.properties util/ConfigPropertyFileLoader.java

Author: ajith
Date: Thu Aug 25 03:50:10 2005
New Revision: 240042

URL: http://svn.apache.org/viewcvs?rev=240042&view=rev
Log:
Updated the codegen engine to laod the extensions from a property file

Added:
    webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/codegen-config.properties
    webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java
Modified:
    webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java

Modified: webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java?rev=240042&r1=240041&r2=240042&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java (original)
+++ webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/CodeGenerationEngine.java Thu Aug 25 03:50:10 2005
@@ -22,6 +22,7 @@
 import org.apache.axis2.wsdl.codegen.emitter.JavaEmitter;
 import org.apache.axis2.wsdl.codegen.extension.*;
 import org.apache.axis2.wsdl.databinding.TypeMapper;
+import org.apache.axis2.wsdl.util.ConfigPropertyFileLoader;
 import org.apache.wsdl.WSDLDescription;
 
 import javax.wsdl.WSDLException;
@@ -57,22 +58,29 @@
         loadExtensions();
     }
 
-    private void loadExtensions() {
-        //Ideally these extensions should be loaded through a configuration taken
-        //from some external location. Say a config file.
-        addExtension(new AxisBindingBuilder());
-        addExtension(new WSDLValidatorExtension());
-        addExtension(new PackageFinder());
-        //Xbeans extension
-        addExtension(new XMLBeansExtension());
-        //simple databinding extension
-        //addExtension(new SimpleDBExtension());
-        //default extension. Does the cleanup
-        addExtension(new DefaultDatabindingExtension());
+    private void loadExtensions() throws CodeGenerationException{
+        try {
+            String[] extensions = ConfigPropertyFileLoader.getExtensionClassNames();
+            Class extensionClass;
+            for (int i = 0; i < extensions.length; i++) {
+                //load the Extension class
+                extensionClass = this.getClass().getClassLoader().loadClass(extensions[i]);
+                addExtension((CodeGenExtension)extensionClass.newInstance());
+
+            }
+        } catch (ClassNotFoundException e) {
+            throw new CodeGenerationException("Extension class loading problem",e);
+        } catch (InstantiationException e) {
+            throw new CodeGenerationException("Extension class instantiation problem",e);
+        } catch (IllegalAccessException e) {
+            throw new CodeGenerationException("Illegal extension!",e);
+        } catch (Exception e) {
+            throw new CodeGenerationException(e);
+        }
 
     }
 
-    private void addExtension(AbstractCodeGenerationExtension ext){
+    private void addExtension(CodeGenExtension ext){
         ext.init(this.configuration);
         this.moduleEndpoints.add(ext);
     }

Added: webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/codegen-config.properties
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/codegen-config.properties?rev=240042&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/codegen-config.properties (added)
+++ webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/codegen/codegen-config.properties Thu Aug 25 03:50:10 2005
@@ -0,0 +1,6 @@
+#######################################################################################################################
+#####################   code generator property file  #################################################################
+#######################################################################################################################
+#Extensions - The extensions are comma seperated
+#these are loaded in their lexical order
+codegen.extension=org.apache.axis2.wsdl.codegen.extension.AxisBindingBuilder,org.apache.axis2.wsdl.codegen.extension.WSDLValidatorExtension,org.apache.axis2.wsdl.codegen.extension.PackageFinder,org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension,org.apache.axis2.wsdl.codegen.extension.DefaultDatabindingExtension
\ No newline at end of file

Added: webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java?rev=240042&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java (added)
+++ webservices/axis/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/util/ConfigPropertyFileLoader.java Thu Aug 25 03:50:10 2005
@@ -0,0 +1,39 @@
+package org.apache.axis2.wsdl.util;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * Tries to load the properties from the config properties
+ */
+public class ConfigPropertyFileLoader {
+
+    private static String[] extensionClassNames;
+
+    private static final String CODE_GEN_KEY = "codegen.extension";
+
+    static{
+        try {
+            InputStream stream = Object.class.getResourceAsStream("/org/apache/axis2/wsdl/codegen/codegen-config.properties");
+            Properties props = new Properties();
+            props.load(stream);
+
+            String codeGenExtensionClasses = props.getProperty(CODE_GEN_KEY);
+            if (codeGenExtensionClasses!=null){
+                extensionClassNames = codeGenExtensionClasses.split(",");
+
+            }
+
+
+
+        } catch (IOException e) {
+           throw new RuntimeException(e);
+        }
+
+    }
+
+    public static String[] getExtensionClassNames() {
+        return extensionClassNames;
+    }
+}