Author: chathura
Date: Wed Jan 16 01:45:29 2008
New Revision: 12335

Log:


Implementing pluggable URL handlers.



Modified:
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/urlhandlers/URLHandlerManager.java

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/urlhandlers/URLHandlerManager.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/urlhandlers/URLHandlerManager.java
 (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/urlhandlers/URLHandlerManager.java
 Wed Jan 16 01:45:29 2008
@@ -18,23 +18,56 @@
 
 import org.wso2.registry.RegistryException;
 import org.wso2.registry.Resource;
+import org.wso2.registry.RegistryConstants;
+import org.wso2.registry.config.RegistryContext;
 
 import javax.sql.DataSource;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.lang.reflect.Constructor;
 
 public class URLHandlerManager {
 
     private List urlHandlers = new ArrayList();
 
-    public URLHandlerManager(DataSource dataSource) {
+    public URLHandlerManager(DataSource dataSource) throws RegistryException {
 
         urlHandlers.add(new CommentURLHandler(dataSource));
         urlHandlers.add(new CommentCollectionURLHandler(dataSource));
         urlHandlers.add(new RatingURLHandler(dataSource));
         urlHandlers.add(new RatingsCollectionURLHandler(dataSource));
         urlHandlers.add(new TagURLHandler(dataSource));
+
+        RegistryContext registryContext = (RegistryContext) System.
+                getProperties().get(RegistryConstants.REGISTRY_CONTEXT);
+
+        if (registryContext != null) {
+
+            Iterator iHandlers = registryContext.getUrlHandlers().iterator();
+            while (iHandlers.hasNext()) {
+
+                String urlHandlerClassName = (String) iHandlers.next();
+
+                try {
+                    Class urlHandlerClass = Class.forName(urlHandlerClassName);
+                    Constructor constructor =
+                            urlHandlerClass.getConstructor(new Class[] 
{DataSource.class});
+                    URLHandler urlHandler =
+                            (URLHandler) constructor.newInstance(new Object[] 
{dataSource});
+                    urlHandlers.add(urlHandler);
+
+                } catch (ClassNotFoundException e) {
+                    String msg = "Could not find the class: " +
+                            urlHandlerClassName + " for the URL handler.";
+                    throw new RegistryException(msg, e);
+
+                } catch (Exception e) {
+                    String msg = "Failed to add run-time URL handlers.";
+                    throw new RegistryException(msg, e);
+                }
+            }
+        }
     }
 
     public Resource handleURL(String url)

_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev

Reply via email to