Update of /var/cvs/contributions/didactor2/src/core/java/nl/didactor/filter
In directory james.mmbase.org:/tmp/cvs-serv22389
Modified Files:
ProviderFilter.java
Log Message:
added some debugging, fixed a bug with storing education in the session
See also:
http://cvs.mmbase.org/viewcvs/contributions/didactor2/src/core/java/nl/didactor/filter
Index: ProviderFilter.java
===================================================================
RCS file:
/var/cvs/contributions/didactor2/src/core/java/nl/didactor/filter/ProviderFilter.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- ProviderFilter.java 24 Nov 2008 16:45:54 -0000 1.27
+++ ProviderFilter.java 28 Nov 2008 10:28:23 -0000 1.28
@@ -34,7 +34,7 @@
* Request scope vars are 'provider', 'education', 'class'.
*
* @author Michiel Meeuwissen
- * @version $Id: ProviderFilter.java,v 1.27 2008/11/24 16:45:54 michiel Exp $
+ * @version $Id: ProviderFilter.java,v 1.28 2008/11/28 10:28:23 michiel Exp $
*/
public class ProviderFilter implements Filter, MMBaseStarter,
NodeEventListener, RelationEventListener {
private static final Logger log =
Logging.getLoggerInstance(ProviderFilter.class);
@@ -42,6 +42,7 @@
public static String USER_KEY = "nl.didactor.user_attributes";
+ public static String EDUCATION_KEY = "nl.didactor.education";
private static Map<String, Map<String, Object>> providerCache = new
HashMap<String, Map<String, Object>>();
@@ -202,7 +203,9 @@
* @param
*/
protected Node getEducation(Cloud cloud, Node provider, String[] urls) {
-
+ if (log.isDebugEnabled()) {
+ log.debug("Finding education for " + provider.getNumber() + " " +
Arrays.asList(urls));
+ }
Node education = null;
NodeList educations;
if (provider != null) {
@@ -227,12 +230,14 @@
} else {
// no match at all, ignore the urls
}
+ log.debug("Filtered for url " + education);
}
educations = selectForUser(cloud, educations);
if (educations.size() > 0) {
education = educations.getNode(0);
+ log.debug("Education matched for user " + education.getNumber());
}
if (education == null && provider != null) {
@@ -248,6 +253,7 @@
if (education == null && educations.size() > 0) {
// Still no education found, if there are education at all, simply
guess one.
education = educations.nodeIterator().nextNode();
+ log.debug("No education matched, taking " + education.getNumber());
}
return education;
@@ -310,16 +316,14 @@
String parameterEducation = useParameters ?
req.getParameter("education") : null;
if (parameterEducation != null && parameterEducation.length() == 0)
parameterEducation = null;
if (parameterEducation == null && session != null) {
- parameterEducation = (String)
session.getAttribute("nl.didactor.education");
- }
-
- if (parameterEducation != null && useParameters && session != null) {
- // remember some explicit education parameter in the session.
- session.setAttribute("nl.didactor.education", parameterEducation);
+ parameterEducation = (String) session.getAttribute(EDUCATION_KEY);
+ log.debug("education found from session " + parameterEducation);
}
String parameterProvider = useParameters ?
req.getParameter("provider") : null;
+ log.debug("Provider found from request " + parameterProvider);
+
Cloud cloud = getCloud(req);
Map<String, Serializable> userAttributes;
if (session == null) {
@@ -331,14 +335,26 @@
if (userAttributes == null) {
userAttributes = new HashMap<String, Serializable>();
session.setAttribute(USER_KEY, userAttributes);
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("User attributes from session " +
userAttributes);
+ }
}
int userNumber =
cloud.getCloudContext().getAuthentication().getNode(cloud.getUser());
if (userNumber < 0) userNumber = 0;
userAttributes.put("user", userNumber);
+
+ if (parameterEducation != null && useParameters && userNumber > 0)
{
+ // remember some explicit education parameter in the session.
+ session.setAttribute(EDUCATION_KEY, parameterEducation);
+ }
}
String key = serverName + contextPath + ':' + parameterEducation + ':'
+ parameterProvider + ":" + cloud.getUser().getIdentifier();
+
+
+ log.debug("key " + key);
Map<String, Object> attributes = providerCache.get(key);
if (attributes == null) {
@@ -363,6 +379,7 @@
log.info("No provider objects found, should at least
be one");
} else if (providers.size() == 1) {
provider = providers.getNode(0);
+ log.debug("Only one provider " + provider.getNumber());
} else {
// which are we going to use?
for (String u : urls) {
@@ -372,6 +389,7 @@
break;
}
}
+ log.debug("Provider " + provider);
// no matching URL object directly related to provider.
// Try via education object too.
@@ -384,6 +402,8 @@
cloud.getNode(parameterEducation) : // explicit education
always takes preference
defaultEducation;
+ log.debug("Default education " + defaultEducation + " education "
+ education);
+
// try determining provider if education found, but not yet a
provider
if (provider == null && education != null) {
@@ -404,8 +424,10 @@
}
if (provider == null && providers.size() > 0) {
provider = providers.get(0);
+ log.debug("Found provider " + provider.getNumber());
}
defaultEducation = getEducation(cloud, provider, urls);
+ log.debug("Found education " + defaultEducation);
education = defaultEducation;
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs