Update of /var/cvs/src/org/mmbase/framework/basic
In directory james.mmbase.org:/tmp/cvs-serv8235
Modified Files:
BasicUrlConverter.java BlockUrlConverter.java
ChainedUrlConverter.java DirectoryUrlConverter.java
MMBaseUrlConverter.java Url.java
Log Message:
made ChainedUrlConverter use 'quality' settings of UrlConverters
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/framework/basic
Index: BasicUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/BasicUrlConverter.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- BasicUrlConverter.java 25 Oct 2008 08:32:02 -0000 1.20
+++ BasicUrlConverter.java 25 Oct 2008 09:34:28 -0000 1.21
@@ -25,7 +25,7 @@
*
*
* @author Michiel Meeuwissen
- * @version $Id: BasicUrlConverter.java,v 1.20 2008/10/25 08:32:02 michiel Exp
$
+ * @version $Id: BasicUrlConverter.java,v 1.21 2008/10/25 09:34:28 michiel Exp
$
* @since MMBase-1.9
*/
public final class BasicUrlConverter implements UrlConverter {
@@ -203,20 +203,22 @@
return BasicUrlConverter.getUrl(path, map, request, escapeAmps);
}
+ public int QUALITY = Integer.MIN_VALUE + 1000;
+
public Url getUrl(String path,
Map<String, Object> parameters,
Parameters frameworkParameters, boolean
escapeAmps) {
- return new Url(getUrl(path, parameters, frameworkParameters,
escapeAmps, false));
+ return new Url(this, getUrl(path, parameters, frameworkParameters,
escapeAmps, false), QUALITY);
}
public Url getProcessUrl(String path,
Map<String, Object> parameters,
Parameters frameworkParameters, boolean
escapeAmps) {
- return new Url(getUrl(path, parameters, frameworkParameters,
escapeAmps, true));
+ return new Url(this, getUrl(path, parameters, frameworkParameters,
escapeAmps, true), QUALITY);
}
public Url getInternalUrl(String page, Map<String, Object> params,
Parameters frameworkParameters) {
HttpServletRequest request =
frameworkParameters.get(Parameter.REQUEST);
- return new Url(BasicUrlConverter.getUrl(page, params, request, false));
+ return new Url(this, BasicUrlConverter.getUrl(page, params, request,
false), QUALITY);
}
public boolean equals(Object o) {
Index: BlockUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/BlockUrlConverter.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- BlockUrlConverter.java 25 Oct 2008 08:58:47 -0000 1.10
+++ BlockUrlConverter.java 25 Oct 2008 09:34:29 -0000 1.11
@@ -25,7 +25,7 @@
* URLConverters would probably like this, and can extend from this.
*
* @author Michiel Meeuwissen
- * @version $Id: BlockUrlConverter.java,v 1.10 2008/10/25 08:58:47 michiel Exp
$
+ * @version $Id: BlockUrlConverter.java,v 1.11 2008/10/25 09:34:29 michiel Exp
$
* @since MMBase-1.9
* @todo EXPERIMENTAL
*/
@@ -194,7 +194,7 @@
String u = BasicUrlConverter.getUrl(niceUrl.getUrl(), map,
request, escapeAmps);
log.debug("Returning actual url " + u);
- return new Url(u, niceUrl.getQuality());
+ return new Url(this, u, niceUrl.getQuality());
} else {
return Url.NOT;
}
Index: ChainedUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/ChainedUrlConverter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- ChainedUrlConverter.java 25 Oct 2008 08:32:02 -0000 1.12
+++ ChainedUrlConverter.java 25 Oct 2008 09:34:29 -0000 1.13
@@ -27,7 +27,7 @@
* outcome of a converter can be added to the outcome of its preceder.
*
* @author André van Toly
- * @version $Id: ChainedUrlConverter.java,v 1.12 2008/10/25 08:32:02 michiel
Exp $
+ * @version $Id: ChainedUrlConverter.java,v 1.13 2008/10/25 09:34:29 michiel
Exp $
* @since MMBase-1.9
*/
public class ChainedUrlConverter implements UrlConverter {
@@ -97,45 +97,48 @@
return false;
}
+ protected Url getProposal(Url u, Parameters frameworkParameters) {
+ HttpServletRequest request =
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
+ UrlConverter current = (UrlConverter)
request.getAttribute(URLCONVERTER);
+ Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
+ Url b = u;
+ if (preferred != null && ! preferred.isInstance(u.getUrlConverter())) {
+ b = new Url(b, b.getQuality() - 10000);
+ }
+ if (current != null && u.getUrlConverter() != current) {
+ b = new Url(b, b.getQuality() - 10000);
+ }
+ return b;
+ }
+
/**
* The URL to be printed in a page
*/
public Url getUrl(String path,
Map<String, Object> params,
Parameters frameworkParameters, boolean escapeAmps)
throws FrameworkException {
-
- HttpServletRequest request =
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
- Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
+ Url result = Url.NOT;
for (UrlConverter uc : uclist) {
- if (preferred != null && ! preferred.isInstance(uc)) continue;
- Url b = uc.getUrl(path, params, frameworkParameters, escapeAmps);
- if (b != Url.NOT) {
- UrlConverter current = (UrlConverter)
request.getAttribute(URLCONVERTER);
- if (current != null && uc != current) {
- log.debug("Explicit block, but not currently rendering.
That is done by other UrlConverter " + current);
- return Url.NOT;
- } else {
- log.debug("No current urlconverter ");
- }
- return b;
+ Url proposal = getProposal(uc.getUrl(path, params,
frameworkParameters, escapeAmps), frameworkParameters);
+ if (proposal.getQuality() > result.getQuality()) {
+ result = proposal;
}
+
}
- return Url.NOT;
+ return result;
}
public Url getProcessUrl(String path,
Map<String, Object> params,
Parameters frameworkParameters, boolean
escapeAmps) throws FrameworkException {
-
- Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
+ Url result = Url.NOT;
for (UrlConverter uc : uclist) {
- if (preferred != null && ! preferred.isInstance(uc)) continue;
- Url b = uc.getProcessUrl(path, params, frameworkParameters,
escapeAmps);
- if (b != Url.NOT) {
- return b;
+ Url proposal = getProposal(uc.getProcessUrl(path, params,
frameworkParameters, escapeAmps), frameworkParameters);
+ if (proposal.getQuality() > result.getQuality()) {
+ result = proposal;
}
}
- return Url.NOT;
+ return result;
}
@@ -145,18 +148,15 @@
public Url getInternalUrl(String path,
Map<String, Object> params,
Parameters frameworkParameters) throws
FrameworkException {
- Class preferred = frameworkParameters.get(URLCONVERTER_PARAM);
+ Url result = Url.NOT;
for (UrlConverter uc : uclist) {
- if (preferred != null && ! preferred.isInstance(uc)) continue;
- Url b = uc.getInternalUrl(path, params, frameworkParameters);
- if (b != Url.NOT) {
- log.debug("ChainedUrlConverter has: " + b);
- HttpServletRequest request =
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
- request.setAttribute(URLCONVERTER, uc);
- return b;
+ Url proposal = getProposal(uc.getInternalUrl(path, params,
frameworkParameters), frameworkParameters);
+ if (proposal.getQuality() > result.getQuality()) {
+ result = proposal;
}
+
}
- return Url.NOT;
+ return result;
}
public String toString() {
Index: DirectoryUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/DirectoryUrlConverter.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- DirectoryUrlConverter.java 25 Oct 2008 08:58:47 -0000 1.11
+++ DirectoryUrlConverter.java 25 Oct 2008 09:34:29 -0000 1.12
@@ -28,7 +28,7 @@
* It is also assumed that the niceness of the URL's is basicly about one
block.
*
* @author Michiel Meeuwissen
- * @version $Id: DirectoryUrlConverter.java,v 1.11 2008/10/25 08:58:47 michiel
Exp $
+ * @version $Id: DirectoryUrlConverter.java,v 1.12 2008/10/25 09:34:29 michiel
Exp $
* @since MMBase-1.9
* @todo EXPERIMENTAL
*/
@@ -53,7 +53,7 @@
Parameters
frameworkParameters, boolean action) throws FrameworkException {
StringBuilder b = new StringBuilder(directory);
getNiceDirectoryUrl(b, block, parameters, frameworkParameters, action);
- return new Url(b.toString());
+ return new Url(this, b.toString());
}
protected abstract void getNiceDirectoryUrl(StringBuilder b, Block block,
@@ -76,7 +76,7 @@
}
if (path.size() < 2) {
log.debug("pa " + pa + " -> " + path + " (Not long enough for " +
this + ")");
- return null;
+ return Url.NOT;
}
return getFilteredInternalDirectoryUrl(path.subList(2, path.size()),
params, frameworkParameters);
}
Index: MMBaseUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/MMBaseUrlConverter.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- MMBaseUrlConverter.java 25 Oct 2008 08:58:47 -0000 1.17
+++ MMBaseUrlConverter.java 25 Oct 2008 09:34:29 -0000 1.18
@@ -20,7 +20,7 @@
* was configured for this prefix).
*
* @author Michiel Meeuwissen
- * @version $Id: MMBaseUrlConverter.java,v 1.17 2008/10/25 08:58:47 michiel
Exp $
+ * @version $Id: MMBaseUrlConverter.java,v 1.18 2008/10/25 09:34:29 michiel
Exp $
* @since MMBase-1.9
*/
public class MMBaseUrlConverter extends DirectoryUrlConverter {
@@ -145,7 +145,7 @@
if (log.isDebugEnabled()) {
log.debug("internal URL " + url);
}
- return new Url(url.toString());
+ return new Url(this, url.toString());
}
}
Index: Url.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/Url.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- Url.java 25 Oct 2008 08:58:47 -0000 1.2
+++ Url.java 25 Oct 2008 09:34:29 -0000 1.3
@@ -17,20 +17,28 @@
*
* @author Michiel Meeuwissen
- * @version $Id: Url.java,v 1.2 2008/10/25 08:58:47 michiel Exp $
+ * @version $Id: Url.java,v 1.3 2008/10/25 09:34:29 michiel Exp $
* @since MMBase-1.9
* @todo EXPERIMENTAL
*/
public class Url {
private final String url;
+ private final UrlConverter urlConverter;
private int quality = 0;
- public Url(String url) {
+ public Url(UrlConverter uc, String url) {
this.url = url;
+ this.urlConverter = uc;
}
- public Url(String url, int q) {
+ public Url(UrlConverter uc, String url, int q) {
this.url = url;
this.quality = q;
+ this.urlConverter = uc;
+ }
+ public Url(Url u, int q) {
+ this.url = u.url;
+ this.urlConverter = u.urlConverter;
+ this.quality = q;
}
public String getUrl() {
return url;
@@ -38,8 +46,11 @@
public int getQuality() {
return quality;
}
+ public UrlConverter getUrlConverter() {
+ return urlConverter;
+ }
- public static final Url NOT = new Url(null, Integer.MIN_VALUE);
+ public static final Url NOT = new Url(null, null, Integer.MIN_VALUE);
public String toString() {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs