Update of /var/cvs/src/org/mmbase/framework/basic
In directory james.mmbase.org:/tmp/cvs-serv13689

Modified Files:
        ChainedUrlConverter.java 
Log Message:
added a chained url converter specific parameter 'urlconverter' by which you 
can explicitely prefer a certain url converter


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/framework/basic


Index: ChainedUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/ChainedUrlConverter.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- ChainedUrlConverter.java    20 Oct 2008 16:45:11 -0000      1.10
+++ ChainedUrlConverter.java    22 Oct 2008 12:29:12 -0000      1.11
@@ -27,19 +27,25 @@
  * outcome of a converter can be added to the outcome of its preceder.
  *
  * @author André van Toly
- * @version $Id: ChainedUrlConverter.java,v 1.10 2008/10/20 16:45:11 michiel 
Exp $
+ * @version $Id: ChainedUrlConverter.java,v 1.11 2008/10/22 12:29:12 michiel 
Exp $
  * @since MMBase-1.9
  */
 public class ChainedUrlConverter implements UrlConverter {
 
     private static final Logger log = 
Logging.getLoggerInstance(ChainedUrlConverter.class);
 
+
+    public static Parameter<Class> URLCONVERTER_PARAM = new 
Parameter<Class>("urlconverter", Class.class);
+
     public static String URLCONVERTER = "org.mmbase.urlconverter";
     /**
      * List containing the UrlConverters found in the framework configuration.
      */
     private final List<UrlConverter> uclist = new ArrayList<UrlConverter>();
     private final List<Parameter>   parameterDefinition = new 
ArrayList<Parameter>();
+    {
+        parameterDefinition.add(URLCONVERTER_PARAM);
+    }
 
     /**
      * Adds the UrlConverters to the list.
@@ -99,7 +105,9 @@
                          Parameters frameworkParameters, boolean escapeAmps) 
throws FrameworkException {
 
         HttpServletRequest request = 
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
+        Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
         for (UrlConverter uc : uclist) {
+            if (preferred != null && ! preferred.isInstance(uc)) continue;
             String b = uc.getUrl(path, params, frameworkParameters, 
escapeAmps);
             if (b != null) {
                 UrlConverter current  = (UrlConverter) 
request.getAttribute(URLCONVERTER);
@@ -119,7 +127,9 @@
                                 Map<String, Object> params,
                                 Parameters frameworkParameters, boolean 
escapeAmps) throws FrameworkException {
 
+        Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
         for (UrlConverter uc : uclist) {
+            if (preferred != null && ! preferred.isInstance(uc)) continue;
             String b = uc.getProcessUrl(path, params, frameworkParameters, 
escapeAmps);
             if (b != null) {
                 return b;
@@ -135,7 +145,9 @@
     public String getInternalUrl(String path,
                                         Map<String, Object> params,
                                         Parameters frameworkParameters) throws 
FrameworkException {
+        Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
         for (UrlConverter uc : uclist) {
+            if (preferred != null && ! preferred.isInstance(uc)) continue;
             String b = uc.getInternalUrl(path, params, frameworkParameters);
             if (b != null) {
                 log.debug("ChainedUrlConverter has: " + b);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to