Author: samindaw
Date: Wed Jan  9 03:09:13 2013
New Revision: 1430668

URL: http://svn.apache.org/viewvc?rev=1430668&view=rev
Log:
refactor custom registry intiating function

Modified:
    
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
    
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java
    
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/RegistryAccessorUndefinedException.java

Modified: 
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1430668&r1=1430667&r2=1430668&view=diff
==============================================================================
--- 
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
 (original)
+++ 
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
 Wed Jan  9 03:09:13 2013
@@ -66,7 +66,6 @@ import org.apache.airavata.registry.api.
 import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
 import org.apache.airavata.registry.api.util.RegistryConstants;
 import org.apache.airavata.registry.api.workflow.*;
-import org.apache.airavata.registry.api.workflow.WorkflowExecutionData;
 import org.apache.airavata.registry.api.workflow.WorkflowExecutionStatus.State;
 import org.apache.xmlbeans.XmlException;
 import org.slf4j.Logger;
@@ -96,37 +95,46 @@ public class AiravataJPARegistry extends
        //present
        active=true;
 
-        // retrieving user defined registry classes from registry settings
+        initializeCustomRegistries();
+    }
+
+    /**
+     * Initialize the custom registries defined in the registry settings
+     * @throws RegistryException
+     */
+       private void initializeCustomRegistries() throws RegistryException {
+               // retrieving user defined registry classes from registry 
settings
         try {
-            configurationRegistry = 
(ConfigurationRegistry)AiravataRegistryFactory.getRegistryClass(RegistryConstants.CONFIGURATION_REGISTRY_ACCESSOR_CLASS);
-            configurationRegistry.setAiravataRegistry(this);
-            descriptorRegistry = 
(DescriptorRegistry)AiravataRegistryFactory.getRegistryClass(RegistryConstants.DESCRIPTOR_REGISTRY_ACCESSOR_CLASS);
-            descriptorRegistry.setAiravataRegistry(this);
-            projectsRegistry = 
(ProjectsRegistry)AiravataRegistryFactory.getRegistryClass(RegistryConstants.PROJECT_REGISTRY_ACCESSOR_CLASS);
-            projectsRegistry.setAiravataRegistry(this);
-            provenanceRegistry = 
(ProvenanceRegistry)AiravataRegistryFactory.getRegistryClass(RegistryConstants.PROVENANCE_REGISTRY_ACCESSOR_CLASS);
-            provenanceRegistry.setAiravataRegistry(this);
-            userWorkflowRegistry = 
(UserWorkflowRegistry)AiravataRegistryFactory.getRegistryClass(RegistryConstants.USER_WF_REGISTRY_ACCESSOR_CLASS);
-            userWorkflowRegistry.setAiravataRegistry(this);
-            publishedWorkflowRegistry = 
(PublishedWorkflowRegistry)AiravataRegistryFactory.getRegistryClass(RegistryConstants.PUBLISHED_WF_REGISTRY_ACCESSOR_CLASS);
-            publishedWorkflowRegistry.setAiravataRegistry(this);
-        } catch (RegistryAccessorNotFoundException e) {
-            throw new RegistryException("Airavata Registry custom 
implementation class not defined in registry settings", e);
-        } catch (RegistryAccessorUndefinedException e) {
-            configurationRegistry = null;
-            descriptorRegistry = null;
-            projectsRegistry = null;
-            provenanceRegistry = null;
-            userWorkflowRegistry = null;
-            publishedWorkflowRegistry = null;
-            logger.debug("Airavata Registry custom implementation class not 
defined in registry settings");
-        } catch (RegistryAccessorInstantiateException e) {
-            throw new RegistryException("Airavata Registry custom 
implementation class not defined in registry settings", e);
+            configurationRegistry = 
(ConfigurationRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.CONFIGURATION_REGISTRY_ACCESSOR_CLASS);
+            descriptorRegistry = 
(DescriptorRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.DESCRIPTOR_REGISTRY_ACCESSOR_CLASS);
+            projectsRegistry = 
(ProjectsRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.PROJECT_REGISTRY_ACCESSOR_CLASS);
+            provenanceRegistry = 
(ProvenanceRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.PROVENANCE_REGISTRY_ACCESSOR_CLASS);
+            userWorkflowRegistry = 
(UserWorkflowRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.USER_WF_REGISTRY_ACCESSOR_CLASS);
+            publishedWorkflowRegistry = 
(PublishedWorkflowRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.PUBLISHED_WF_REGISTRY_ACCESSOR_CLASS);
         } catch (AiravataConfigurationException e) {
             throw new RegistryException("Airavata Registry custom 
implementation class not defined in registry settings", e);
         }
-    }
+       }
 
+    private <T extends AiravataSubRegistry> Object getClassInstance(Class<T> 
c, String registryAccessorKey) throws AiravataConfigurationException{
+               try {
+                       T registryClass = 
c.cast(AiravataRegistryFactory.getRegistryClass(registryAccessorKey));
+                       registryClass.setAiravataRegistry(this);
+                       return registryClass;
+               } catch (ClassCastException e){
+                       logger.error("The class defined for accessor type 
"+registryAccessorKey+" MUST be an extention of the interface "+c.getName(),e);
+               } catch (RegistryAccessorNotFoundException e) {
+                       logger.error("Error in loading class for registry 
accessor "+registryAccessorKey,e);
+               } catch (RegistryAccessorUndefinedException e) {
+                       // happens when user has not defined an accessor for 
the registry accessor key
+                       // thus ignore error
+               } catch (RegistryAccessorInstantiateException e) {
+                       logger.error("Error in instantiating instance from 
class for registry accessor "+registryAccessorKey,e);
+               } catch (AiravataConfigurationException e) {
+                       throw e;
+               }
+               return null;
+    }
 
        @Override
        public boolean isActive() {

Modified: 
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java?rev=1430668&r1=1430667&r2=1430668&view=diff
==============================================================================
--- 
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java
 (original)
+++ 
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry2.java
 Wed Jan  9 03:09:13 2013
@@ -40,6 +40,10 @@ public abstract class AiravataRegistry2 
                setCallback(callback);
        }
        
+       /**
+        * Initialize the Airavata Registry
+        * @throws RegistryException
+        */
        protected abstract void initialize() throws RegistryException;
        
        public Gateway getGateway() {

Modified: 
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/RegistryAccessorUndefinedException.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/RegistryAccessorUndefinedException.java?rev=1430668&r1=1430667&r2=1430668&view=diff
==============================================================================
--- 
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/RegistryAccessorUndefinedException.java
 (original)
+++ 
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/exception/RegistryAccessorUndefinedException.java
 Wed Jan  9 03:09:13 2013
@@ -26,7 +26,7 @@ public class RegistryAccessorUndefinedEx
        private static final long serialVersionUID = -2679914107485739140L;
 
        public RegistryAccessorUndefinedException() {
-               this("A registry accessor was not defined in the 
airavata-server.properties");
+               this("A registry accessor was not defined in the registry 
settings");
        }
        
        public RegistryAccessorUndefinedException(String message) {


Reply via email to