Update of /var/cvs/applications/media/src/org/mmbase/applications/media/builders
In directory james.mmbase.org:/tmp/cvs-serv23526/builders

Modified Files:
        MediaProviders.java 
Log Message:
added an 'url' function to mediaprovider, which also makes it possible to 
genericily define a mediaprovider mapping to the 'files servlet'


See also: 
http://cvs.mmbase.org/viewcvs/applications/media/src/org/mmbase/applications/media/builders


Index: MediaProviders.java
===================================================================
RCS file: 
/var/cvs/applications/media/src/org/mmbase/applications/media/builders/MediaProviders.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- MediaProviders.java 2 Oct 2007 09:45:13 -0000       1.15
+++ MediaProviders.java 16 Apr 2009 13:28:21 -0000      1.16
@@ -17,6 +17,8 @@
 import org.mmbase.util.logging.*;
 import java.util.*;
 import java.lang.reflect.Method;
+import org.mmbase.util.functions.*;
+import org.mmbase.bridge.*;
 
 /**
  * A MediaProvider builder describes a service that offers a media service. 
The mediaprovider
@@ -24,22 +26,45 @@
  * be online/offline.
  *
 * @author Michiel Meeuwissen
- * @version $Id: MediaProviders.java,v 1.15 2007/10/02 09:45:13 michiel Exp $
+ * @version $Id: MediaProviders.java,v 1.16 2009/04/16 13:28:21 michiel Exp $
  * @since MMBase-1.7
  */
 public class MediaProviders extends MMObjectBuilder {
-    private static Logger log = 
Logging.getLoggerInstance(MediaProviders.class);
+    private static final Logger log = 
Logging.getLoggerInstance(MediaProviders.class);
 
     public final static int STATE_ON  = 1;
     public final static int STATE_OFF = 2;
 
+
+    {
+        addFunction(new NodeFunction<String>("url", new Parameter[] { 
Parameter.REQUEST, Parameter.CLOUD }) {
+                {
+                    setDescription("");
+                }
+                public String getFunctionValue(Node node, Parameters 
parameters) {
+                    String protocol = node.getStringValue("protocol");
+                    String host = node.getStringValue("host");
+                    //String rootpath = 
node.getStringValue("rootpath").replace("${CONTEXT}", 
MMBaseContext.getServletContext().getContextPath());  // servlet >= 2.5
+                    String rootpath = 
node.getStringValue("rootpath").replace("${CONTEXT}", 
MMBaseContext.getHtmlRootUrlPath());  // servlet < 2.5
+                    if ("".equals(host)) {
+                        return rootpath;
+                    } else {
+                        return protocol + "://" + host + rootpath;
+                    }
+                }
+            });
+    }
+
     private URLComposerFactory urlComposerFactory;
 
+    @Override
     public boolean init() {
         if (super.init()) {
             try {
                 String clazz = getInitParameter("URLComposerFactory");
-                if (clazz == null) clazz = 
"org.mmbase.applications.media.urlcomposers.URLComposerFactory";
+                if (clazz == null) {
+                    clazz = 
org.mmbase.applications.media.urlcomposers.URLComposerFactory.class.getName();
+                }
                 Method m = Class.forName(clazz).getMethod("getInstance", 
(Class[])null);
                 urlComposerFactory = (URLComposerFactory) m.invoke(null, 
(Object[])null);
                 return true;
@@ -53,6 +78,7 @@
     }
 
 
+
     /**
      * A MediaProvider can provide one or more URL's for every source
      * @return A List of URLComposer's
@@ -62,23 +88,8 @@
         return urlComposerFactory.createURLComposers(provider, source, 
fragment, info, urls, cacheExpireObjects);
     }
 
-    protected Object executeFunction(MMObjectNode node, String function, 
List<?> args) {
-        if (log.isDebugEnabled()) {
-            log.debug("Executing function " + function + " on node " + 
node.getNumber() + " with argument " + args);
-        }
-
-        if (function.equals("info")) {
-            List<Object> empty = new ArrayList<Object>();
-            Map<?,?> info = (Map<?,?>) super.executeFunction(node, "info", 
empty);
-            if (args == null || args.size() == 0) {
-                return info;
-            } else {
-                return info.get(args.get(0));
-            }
-        }
-        return super.executeFunction(node, function, args);
-    }
 
+    @Override
     protected String getNodeGUIIndicator(MMObjectNode node, 
org.mmbase.util.functions.Parameters params) {
         return node.getStringValue("name") + " " + 
node.getStringValue("protocol") + "://" + node.getStringValue("host") + 
node.getStringValue("rootpath");
     }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to