Update of /var/cvs/src/org/mmbase/framework/basic
In directory james.mmbase.org:/tmp/cvs-serv25792/basic
Modified Files:
BasicFramework.java BasicUrlConverter.java
ChainedUrlConverter.java DirectoryUrlConverter.java
MMBaseUrlConverter.java UrlConverter.java
Log Message:
Finished DirectoryUrlConverter and extend MMBaseUrlConverter from it. Added a
method 'getBlock' on UrlConverter. Javadoc
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/framework/basic
Index: BasicFramework.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/BasicFramework.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- BasicFramework.java 26 Aug 2008 19:45:21 -0000 1.31
+++ BasicFramework.java 1 Sep 2008 07:06:12 -0000 1.32
@@ -34,7 +34,7 @@
* are configured is the order in which they are processed.
*
* @author Michiel Meeuwissen
- * @version $Id: BasicFramework.java,v 1.31 2008/08/26 19:45:21 michiel Exp $
+ * @version $Id: BasicFramework.java,v 1.32 2008/09/01 07:06:12 michiel Exp $
* @since MMBase-1.9
*/
public class BasicFramework extends Framework {
@@ -152,68 +152,15 @@
}
- public Block getBlock(Parameters frameworkParameters) {
- HttpServletRequest request =
frameworkParameters.get(Parameter.REQUEST);
- State state = State.getState(request);
- log.debug("Getting block for " + frameworkParameters + " -> " + state);
-
- // BasicFramework always shows only one component
- Component component =
ComponentRepository.getInstance().getComponent(frameworkParameters.get(MMBaseUrlConverter.COMPONENT));
- boolean explicitComponent = component != null;
- if (state != null && state.isRendering()) {
- component = state.getBlock().getComponent();
- } else {
- log.debug("No state object found");
- }
-
- if (component == null || !component.getName().equals("mynews")) {
- log.debug("Not currently rendering mynews component");
- return null;
- } else {
- // can explicitely state new block by either 'path' (of mm:url) or
framework parameter 'block'.
- boolean filteredMode =
- (state == null && explicitComponent) ||
- request.getServletPath().startsWith("/magazine");
-
- log.debug("Using " + component);
-
- Block block = null;
- String blockParam =
frameworkParameters.get(MMBaseUrlConverter.BLOCK);
- if (blockParam != null) {
- block = component.getBlock(blockParam);
- }
- /*
- else {
- block = component.getBlock(path);
- if (block == null && path != null && ! "".equals(path)) {
- log.debug("No block '" + path + "' found");
- return null;
- }
-
- }
- */
- if (block == null && state != null) {
- block = state.getRenderer().getBlock();
- }
-
- if (block == null) {
- log.debug("Cannot determin a block for '" + state + "' suppose
it a normal link");
- if (filteredMode) {
- return null;
- } else {
- // throw new IllegalArgumentException("not such block '" +
+ " for component " + block);
- }
- }
- return block;
- }
- //return null;
+ public Block getBlock(Parameters frameworkParameters) throws
FrameworkException {
+ return urlConverter.getBlock(frameworkParameters);
}
/**
*/
public Parameter[] getParameterDefinition() {
- return new Parameter[] { ACTION, Parameter.REQUEST, Parameter.CLOUD,
new Parameter.Wrapper(urlConverter.getParameterDefinition())};
+ return new Parameter[] {ACTION, Parameter.REQUEST, Parameter.CLOUD,
new Parameter.Wrapper(urlConverter.getParameterDefinition())};
}
public Parameters createParameters() {
Index: BasicUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/BasicUrlConverter.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- BasicUrlConverter.java 18 Apr 2008 13:47:13 -0000 1.16
+++ BasicUrlConverter.java 1 Sep 2008 07:06:12 -0000 1.17
@@ -26,7 +26,7 @@
*
*
* @author Michiel Meeuwissen
- * @version $Id: BasicUrlConverter.java,v 1.16 2008/04/18 13:47:13 michiel Exp
$
+ * @version $Id: BasicUrlConverter.java,v 1.17 2008/09/01 07:06:12 michiel Exp
$
* @since MMBase-1.9
*/
public final class BasicUrlConverter implements UrlConverter {
@@ -115,6 +115,13 @@
}
/**
+ * The BasicUrlConverter is unable to explicitely define a block and hence
returns <code>null</code>.
+ */
+ public Block getBlock(Parameters frameworkParameters) {
+ return null;
+ }
+
+ /**
* @todo Actually these parameters are only added here, because this
urlconverter is always in
* BasicFramework. Actually BasicFramework should add them itself.
*/
@@ -133,6 +140,8 @@
return req;
}
+
+
protected String getUrl(String path,
Map<String, Object> parameters,
Parameters frameworkParameters, boolean
escapeAmps, boolean action) {
Index: ChainedUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/ChainedUrlConverter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- ChainedUrlConverter.java 18 Apr 2008 13:47:13 -0000 1.7
+++ ChainedUrlConverter.java 1 Sep 2008 07:06:12 -0000 1.8
@@ -11,7 +11,7 @@
import java.util.*;
-import org.mmbase.framework.FrameworkException;
+import org.mmbase.framework.*;
import org.mmbase.util.functions.Parameters;
import org.mmbase.util.functions.Parameter;
@@ -25,7 +25,7 @@
* outcome of a converter can be added to the outcome of its preceder.
*
* @author André van Toly
- * @version $Id: ChainedUrlConverter.java,v 1.7 2008/04/18 13:47:13 michiel
Exp $
+ * @version $Id: ChainedUrlConverter.java,v 1.8 2008/09/01 07:06:12 michiel
Exp $
* @since MMBase-1.9
*/
public class ChainedUrlConverter implements UrlConverter {
@@ -57,6 +57,15 @@
return parameterDefinition.toArray(Parameter.EMPTY);
}
+
+ public Block getBlock(String path, Parameters frameworkParameters) throws
FrameworkException {
+ for (UrlConverter uc : uclist) {
+ Block b = uc.getBlock(path, frameworkParameters);
+ if (b != null) return b;
+ }
+ return null;
+ }
+
/**
* The URL to be printed in a page
*/
Index: DirectoryUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/DirectoryUrlConverter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- DirectoryUrlConverter.java 30 Aug 2008 09:20:19 -0000 1.1
+++ DirectoryUrlConverter.java 1 Sep 2008 07:06:12 -0000 1.2
@@ -26,77 +26,146 @@
* #getFilteredInternalUrl}.
*
* @author Michiel Meeuwissen
- * @version $Id: DirectoryUrlConverter.java,v 1.1 2008/08/30 09:20:19 michiel
Exp $
+ * @version $Id: DirectoryUrlConverter.java,v 1.2 2008/09/01 07:06:12 michiel
Exp $
* @since MMBase-1.9
*/
public abstract class DirectoryUrlConverter implements UrlConverter {
private static final Logger log =
Logging.getLoggerInstance(DirectoryUrlConverter.class);
- protected String directory = "/magazine";
- protected final Framework framework;
+ protected String directory = null;
+ protected final BasicFramework framework;
+ protected Set<Component> components = null;
- public DirectoryUrlConverter(Framework fw) {
+ public DirectoryUrlConverter(BasicFramework fw) {
framework = fw;
}
public void setDirectory(String d) {
directory = d;
+ if (! directory.endsWith("/")) directory += "/";
}
public Parameter[] getParameterDefinition() {
- return new Parameter[] {Parameter.REQUEST};
+ return new Parameter[] {Parameter.REQUEST, Framework.COMPONENT,
Framework.BLOCK};
+ }
+
+
+ protected void addComponent(Component comp) {
+ if (components == null) components = new HashSet<Component>();
+ components.add(comp);
}
/**
* The components for which this URL converter can produces nice url. Or
<code>null</code> if it
* can do that for any component.
*/
- protected List<Component> getComponents() {
+ protected Set<Component> getComponents() {
+ return components;
+ }
+
+
+
+ /**
+ * This proposal implemention simply uses [EMAIL PROTECTED]
Framework#COMPONENT} [EMAIL PROTECTED] Framework#BLOCK},
+ * which may often be what you want.
+ */
+ protected Block getExplicitBlock(Parameters frameworkParameters) throws
FrameworkException {
+ String componentName = frameworkParameters.get(Framework.COMPONENT);
+ if (componentName != null) {
+ Component component =
ComponentRepository.getInstance().getComponent(componentName);
+ if (component == null) throw new FrameworkException("No such
component " + componentName);
+ String blockName = frameworkParameters.get(Framework.BLOCK);
+ if (blockName == null) {
+ log.debug("found explicit component " + component);
+ return component.getDefaultBlock();
+ } else {
+ Block block = component.getBlock(blockName);
+ if (block == null) throw new FrameworkException("No such block
" + blockName);
+ log.debug("found explicit block " + block);
+ return block;
+ }
+ }
return null;
}
- protected String getUrl(String path,
- Map<String, Object> parameters,
- Parameters frameworkParameters, boolean
escapeAmps, boolean action) {
+ public Block getBlock(String path, Parameters frameworkParameters) throws
FrameworkException {
+
+ // First explore
+ Block block = getExplicitBlock(frameworkParameters);
+ if (block != null) {
+ if (path != null && ! "".equals(path)) throw new
IllegalArgumentException("Cannot use both 'path' argument and 'block'
parameter");
+ return block;
+ }
+
HttpServletRequest request =
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
- State state = State.getState(request);
+ if (directory == null) throw new RuntimeException("Directory not set");
+
+ // dealing with the case when we know that we're in 'nice' mode
already.
boolean filteredMode =
FrameworkFilter.getPath(request).startsWith(directory);
+ if (filteredMode) {
+ State state = State.getState(request);
+ if (state.isRendering() && state.getDepth() == 0) {
+ Block stateBlock = state.getBlock();
+ if (components == null ||
components.contains(stateBlock.getComponent())) {
+ if (path != null && ! "".equals(path)) {
+ return stateBlock.getComponent().getBlock(path);
+ } else {
+ return stateBlock;
+ }
+ } else {
+ log.debug("Not a recognized component");
+ }
+ } else {
+ log.debug("Not currently rendering");
+ }
+ } else {
+ log.debug("Not in filtering mode for " + directory);
+ }
- /*
- Block block = framework.getBlock(frameworkParameters);
+ return null;
+ }
- if (block != null &&
"mynews".equals(block.getComponent().getName())) {
- */
- if (state.isRendering() || ! filteredMode) {
- return null;
+
+ protected String getUrl(String path,
+ Map<String, Object> parameters,
+ Parameters frameworkParameters, boolean
escapeAmps, boolean action) throws FrameworkException {
+ Block block = getBlock(path, frameworkParameters);
+ if (block != null) {
+ return getNiceUrl(block, parameters, frameworkParameters,
escapeAmps, action);
} else {
- return getNiceUrl(path, parameters, frameworkParameters,
escapeAmps, action);
+ return null;
}
}
public String getUrl(String path,
Map<String, Object> parameters,
- Parameters frameworkParameters, boolean escapeAmps) {
+ Parameters frameworkParameters, boolean escapeAmps)
throws FrameworkException {
return getUrl(path, parameters, frameworkParameters, escapeAmps,
false);
}
public String getProcessUrl(String path,
Map<String, Object> parameters,
- Parameters frameworkParameters, boolean
escapeAmps) {
+ Parameters frameworkParameters, boolean
escapeAmps) throws FrameworkException {
return getUrl(path, parameters, frameworkParameters, escapeAmps, true);
}
public String getInternalUrl(String page, Map<String, Object> params,
Parameters frameworkParameters) throws FrameworkException {
HttpServletRequest request =
frameworkParameters.get(Parameter.REQUEST);
+ if (request == null) return null;
if (page == null) throw new IllegalArgumentException();
if (page.startsWith(directory)) {
String sp = FrameworkFilter.getPath(request);
String[] path = sp.split("/");
- return getFilteredInternalUrl(path, params, frameworkParameters);
+ assert path[0].equals("");
+ assert path[1].equals(directory.split("/")[1]);
+ List<String> p = Arrays.asList(path);
+ return getFilteredInternalUrl(p.subList(2, p.size()), params,
frameworkParameters);
} else {
- log.debug("Leaving unfiltered");
+ if (log.isDebugEnabled()) {
+ log.debug("Leaving unfiltered " + getClass() + " " + page + "
not starting with " + directory);
+ }
return null;
}
}
@@ -105,8 +174,10 @@
* When implemnting this method, you can already assume that the url must
be 'nice', iow that we
* are actually rendering in the 'realm' of this UrlConverter
*/
- protected abstract String getNiceUrl(String path, Map<String, Object>
parameters,
- Parameters frameworkParameters, boolean
escapeAmps, boolean action);
+ protected abstract String getNiceUrl(Block block,
+ Map<String, Object> parameters,
+ Parameters frameworkParameters,
+ boolean escapeAmps, boolean action)
throws FrameworkException;
/**
@@ -114,7 +185,7 @@
* <code>null</code>. IOW it is certain that the current URL is 'nice'
according to this URL
* Converter.
*/
- protected abstract String getFilteredInternalUrl(String[] path,
Map<String, Object> params, Parameters frameworkParameters) throws
FrameworkException;
+ protected abstract String getFilteredInternalUrl(List<String> path,
Map<String, Object> params, Parameters frameworkParameters) throws
FrameworkException;
public String toString() {
Index: MMBaseUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/MMBaseUrlConverter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- MMBaseUrlConverter.java 26 Aug 2008 19:45:21 -0000 1.12
+++ MMBaseUrlConverter.java 1 Sep 2008 07:06:12 -0000 1.13
@@ -20,135 +20,78 @@
* was configured for this prefix).
*
* @author Michiel Meeuwissen
- * @version $Id: MMBaseUrlConverter.java,v 1.12 2008/08/26 19:45:21 michiel
Exp $
+ * @version $Id: MMBaseUrlConverter.java,v 1.13 2008/09/01 07:06:12 michiel
Exp $
* @since MMBase-1.9
*/
-public class MMBaseUrlConverter implements UrlConverter {
+public class MMBaseUrlConverter extends DirectoryUrlConverter {
private static final Logger log =
Logging.getLoggerInstance(MMBaseUrlConverter.class);
- /**
- * MMBaseUrlConverter points to a jsp which renders 1 block. This
parameter indicates of which component.
- */
- public static final Parameter<String> COMPONENT = new
Parameter<String>("component", String.class);
- /**
- * MMBaseUrlConverter points to a jsp which renders 1 block. This
parameter indicates its name.
- */
- public static final Parameter<String> BLOCK = new
Parameter<String>("block", String.class);
/**
* MMBaseUrlConverter wants a 'category'.
*/
public static final Parameter<String> CATEGORY = new
Parameter<String>("category", String.class);
-
- private final BasicFramework framework;
-
- protected String dir = "/mmbase/";
-
protected String renderJsp = "/mmbase/admin/index.jsp";
public MMBaseUrlConverter(BasicFramework fw) {
- framework = fw;
+ super(fw);
+ setDirectory("/mmbase/");
}
- public void setDir(String d) {
- dir = d;
- }
public void setRenderJsp(String j) {
renderJsp = j;
}
- public Parameter[] getParameterDefinition() {
- return new Parameter[] {Parameter.REQUEST, CATEGORY, COMPONENT, BLOCK};
- }
-
- protected String getUrl(String path,
- Map<String, Object> parameters,
- Parameters frameworkParameters, boolean
escapeAmps, boolean action) {
- if (log.isDebugEnabled()) {
- log.debug("path '" + path + "' parameters: " + parameters + "
framework parameters " + frameworkParameters);
+ @Override public Parameter[] getParameterDefinition() {
+ return new Parameter[] {Parameter.REQUEST, CATEGORY,
Framework.COMPONENT, Framework.BLOCK};
}
- HttpServletRequest request =
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
- State state = State.getState(request);
- String category = frameworkParameters.get(CATEGORY);
- if (category == null && state.isRendering()) {
- category = state.getFrameworkParameters().get(CATEGORY);
+ @Override public Block getBlock(String path, Parameters
frameworkParameters) throws FrameworkException {
+ Block block = super.getBlock(path, frameworkParameters);
+ if (block == null) {
+ String categoryName = frameworkParameters.get(CATEGORY);
+ if (categoryName != null) {
+ boolean categoryOk = false;
+ Block.Type[] mmbaseBlocks =
ComponentRepository.getInstance().getBlockClassification("mmbase." +
categoryName);
+ if (mmbaseBlocks.length == 0) throw new FrameworkException("No
such category mmbase." + categoryName);
+ return mmbaseBlocks[0].getBlocks().get(0);
}
-
- // MMBase urls always shows only one block
- Component component =
ComponentRepository.getInstance().getComponent(frameworkParameters.get(COMPONENT));
- if (component == null) {
- // if no explicit component specified, suppose current component,
if there is one:
- if (state.isRendering()) {
- component = state.getBlock().getComponent();
- } else {
- log.debug("No rendering state object found, so no current
component.");
- if (category != null) {
- log.debug("Found category " + category);
- return dir + category;
- } else {
return null;
+ } else {
+ return block;
}
}
- }
-
- assert component != null;
-
- boolean filteredMode =
FrameworkFilter.getPath(request).startsWith(dir);
-
- if (state.isRendering() && (! filteredMode || state.getDepth() > 0)) {
- log.debug("we are rendering a sub-component, deal with that as if
no mmbaseurlconverter. " + filteredMode);
- return null;
+ protected String getNiceUrl(Block block,
+ Map<String, Object> parameters,
+ Parameters frameworkParameters, boolean
escapeAmps, boolean action) throws FrameworkException {
+ if (log.isDebugEnabled()) {
+ log.debug("block '" + block + "' parameters: " + parameters + "
framework parameters " + frameworkParameters);
}
+ HttpServletRequest request =
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
+ String category = frameworkParameters.get(CATEGORY);
+ State state = State.getState(request);
- Block block;
- { // determin the block:
- String blockParam = frameworkParameters.get(BLOCK);
- if (blockParam != null) {
- if (log.isDebugEnabled()) {
- log.debug("found block " + blockParam + " trying it on " +
component);
+ if (category == null && state.isRendering()) {
+ category = state.getFrameworkParameters().get(CATEGORY);
}
- if (path != null && ! "".equals(path)) throw new
IllegalArgumentException("Cannot use both 'path' argument and 'block'
parameter");
- block = component.getBlock(blockParam);
- if (block == null) throw new IllegalArgumentException("No
block '" + blockParam + "' found in component '" + component + "'");
- } else {
- block = component.getBlock(path);
- if (block != null) {
- if (! filteredMode) {
- path = null; // used, determin path with block name
- }
- } else {
- // no such block
- if (path != null && ! "".equals(path)) {
- log.debug("No block '" + path + "' found");
- return null;
- }
- }
- if (block == null) {
- if(state.isRendering()) {
- // current block
- block = state.getRenderer().getBlock();
- } else {
- // default block
- block = component.getDefaultBlock();
- }
- }
- }
- }
+ Component component = block.getComponent();
- assert block != null;
+ // @TODO
+ // Stuff happening with map, and processorUrl and things like that,
seems to have no place
+ // here.
+ // Refactor it away
Map<String, Object> map = new TreeMap<String, Object>();
if (log.isDebugEnabled()) {
- log.debug("Creating URL to component " + component + " generating
URL to " + block + " State " + state + " category " + category);
+ log.debug("Generating URL to " + block + " State " + state + "
category " + category);
}
boolean processUrl = frameworkParameters.get(BasicFramework.ACTION) !=
null;
if (processUrl) {
@@ -166,8 +109,8 @@
for (Object e : request.getParameterMap().entrySet()) {
Map.Entry<String, String[]> entry = (Map.Entry<String,
String[]>) e;
String k = entry.getKey();
- if (k.equals(BLOCK.getName())) continue;
- if (k.equals(COMPONENT.getName())) continue;
+ if (k.equals(Framework.BLOCK.getName())) continue;
+ if (k.equals(Framework.COMPONENT.getName())) continue;
if (k.equals(CATEGORY.getName())) continue;
log.debug("putting " + entry);
map.put(k, entry.getValue());
@@ -198,7 +141,7 @@
if (state.isRendering() && state.getBlock().equals(block)) {
page = FrameworkFilter.getPath(request);
} else {
- page = dir + (category == null ? "_" : category) + "/" +
component.getName() + "/" + block.getName() ;
+ page = directory + (category == null ? "_" : category) + "/" +
component.getName() + "/" + block.getName() ;
}
//path == null || subComponent ?
@@ -207,30 +150,16 @@
return sb;
}
- public String getUrl(String path,
- Map<String, Object> parameters,
- Parameters frameworkParameters, boolean escapeAmps) {
- return getUrl(path, parameters, frameworkParameters, escapeAmps,
false);
- }
- public String getProcessUrl(String path,
- Map<String, Object> parameters,
- Parameters frameworkParameters, boolean
escapeAmps) {
- return getUrl(path, parameters, frameworkParameters, escapeAmps, true);
- }
- public String getInternalUrl(String page, Map<String, Object> params,
Parameters frameworkParameters) {
- HttpServletRequest request =
frameworkParameters.get(Parameter.REQUEST);
- if (request == null) return null;
- if (page == null) throw new IllegalArgumentException();
- if (page.startsWith(dir)) {
- //String sp = FrameworkFilter.getPath(request); // I don't
remember where this was for.
- String[] path = page.split("/"); // use to be sp.split("/")
- if (log.isDebugEnabled()) {
- log.debug("Going to filter " + Arrays.asList(path));
+ public String getFilteredInternalUrl(List<String> path, Map<String,
Object> params, Parameters frameworkParameters) {
+ if (path.size() == 0) {
+ // nothing indicated after /mmbase/, don't know what to do,
leaving unfiltered
+ return null;
}
- if (path.length >= 3) {
- assert path[0].equals("");
- assert path[1].equals(dir.split("/")[1]);
- String category = path[2];
+
+ StringBuilder url = new StringBuilder(renderJsp);
+
+ { // dealing with the category part
+ String category = path.get(0);
if (! category.equals("_")) {
boolean categoryOk = false;
Block.Type[] mmbaseBlocks =
ComponentRepository.getInstance().getBlockClassification("mmbase");
@@ -249,47 +178,39 @@
}
}
- StringBuilder url = new StringBuilder(renderJsp);
url.append("?category=");
url.append(category);
+ }
- if (path.length == 3) return url.toString();
+ if (path.size() > 1) {
+ // dealing with the component part
- Component comp =
ComponentRepository.getInstance().getComponent(path[3]);
+ Component comp =
ComponentRepository.getInstance().getComponent(path.get(1));
if (comp == null) {
log.debug("No such component, ignoring this too");
return null;
}
url.append("&component=").append(comp.getName());
- if (path.length == 4) return url.toString();
-
- Block block = comp.getBlock(path[4]);
+ if (path.size() > 2) {
+ // dealing with the block
+ Block block = comp.getBlock(path.get(2));
if (log.isDebugEnabled()) {
log.debug("Will try to display " + block);
}
if (block == null) {
- log.debug("No block " + path[4] + " in component " +
path[3]);
+ log.debug("No block " + path.get(2) + " in component " +
comp);
return null;
}
url.append("&block=").append(block.getName());
+ }
+ }
+
if (log.isDebugEnabled()) {
log.debug("internal URL " + url);
}
return url.toString();
- } else {
- log.debug("path length " + path.length);
- return null;
- }
- } else {
- log.debug("Leaving unfiltered");
- return null;
- }
- }
-
- public String toString() {
- return dir;
}
}
Index: UrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/UrlConverter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- UrlConverter.java 25 Apr 2008 14:31:39 -0000 1.8
+++ UrlConverter.java 1 Sep 2008 07:06:12 -0000 1.9
@@ -10,7 +10,7 @@
package org.mmbase.framework.basic;
import java.util.*;
-import org.mmbase.framework.FrameworkException;
+import org.mmbase.framework.*;
import org.mmbase.util.functions.*;
/**
@@ -22,14 +22,28 @@
* chained one after another.
*
* @author Michiel Meeuwissen
- * @version $Id: UrlConverter.java,v 1.8 2008/04/25 14:31:39 andre Exp $
+ * @version $Id: UrlConverter.java,v 1.9 2008/09/01 07:06:12 michiel Exp $
* @since MMBase-1.9
*/
public interface UrlConverter {
+ /**
+ * An URLConverter can add parameters to it's parent Framework. If the
parameter is already
+ * defined in the Framework, the framework will of course ignore the one
requested to be defined
+ * by this UrlConverter.
+ */
Parameter[] getParameterDefinition();
+
+ /**
+ * The UrlConverter can indicate whether given framework parameters would
for it define a
+ * specific block.
+ * @return Explicitely defined block, or <code>null</code> if no block
defined according to this UrlConverter.
+ */
+
+ Block getBlock(String path, Parameters urlConvererParameters) throws
FrameworkException;
+
/**
* See [EMAIL PROTECTED] org.mmbase.framework.Framework#getUrl(String,
Map, Parameters, boolean)}.
* But it can also return <code>null</code> which mean, 'I don't know.'
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs