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