knguyen 2004/11/24 11:47:58 CET
Modified files: (Branch: JAHIA-4-0-BRANCH)
src/java/org/jahia/bin JahiaAction.java
src/java/org/jahia/data/applications ApplicationContext.java
src/java/org/jahia/engines/addcontainer
AddContainer_Engine.java
src/java/org/jahia/engines/shared Application_Field.java
src/java/org/jahia/services/applications
ServletIncludeRequestWrapper.java
Log:
Application dispatcher
- fix extention mapping
Revision Changes Path
1.5.4.2 +0 -1 jahia/src/java/org/jahia/bin/JahiaAction.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/bin/JahiaAction.java.diff?r1=1.5.4.1&r2=1.5.4.2&f=h
1.4.2.2 +7 -2
jahia/src/java/org/jahia/data/applications/ApplicationContext.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/data/applications/ApplicationContext.java.diff?r1=1.4.2.1&r2=1.4.2.2&f=h
1.69.2.3 +2 -1
jahia/src/java/org/jahia/engines/addcontainer/AddContainer_Engine.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/engines/addcontainer/AddContainer_Engine.java.diff?r1=1.69.2.2&r2=1.69.2.3&f=h
1.15.4.4 +48 -25
jahia/src/java/org/jahia/engines/shared/Application_Field.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/engines/shared/Application_Field.java.diff?r1=1.15.4.3&r2=1.15.4.4&f=h
1.23.2.4 +17 -8
jahia/src/java/org/jahia/services/applications/ServletIncludeRequestWrapper.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/applications/ServletIncludeRequestWrapper.java.diff?r1=1.23.2.3&r2=1.23.2.4&f=h
Index: JahiaAction.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/bin/Attic/JahiaAction.java,v
retrieving revision 1.5.4.1
retrieving revision 1.5.4.2
diff -u -r1.5.4.1 -r1.5.4.2
--- JahiaAction.java 19 Nov 2004 13:25:57 -0000 1.5.4.1
+++ JahiaAction.java 24 Nov 2004 10:47:56 -0000 1.5.4.2
@@ -12,7 +12,6 @@
import org.apache.struts.action.ActionMapping;
import org.jahia.operations.OperationManager;
import org.jahia.params.ParamBean;
-import org.jahia.exceptions.JahiaException;
/**
* Jahia Default Engine Dispatcher Action class
Index: ApplicationContext.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/data/applications/Attic/ApplicationContext.java,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -u -r1.4.2.1 -r1.4.2.2
--- ApplicationContext.java 13 Aug 2004 17:03:00 -0000 1.4.2.1
+++ ApplicationContext.java 24 Nov 2004 10:47:57 -0000 1.4.2.2
@@ -511,19 +511,24 @@
String str = path;
if ( pos != -1 ){
- str = path.substring(pos);
+ str = path.substring(0,pos);
}
+ pos = str.lastIndexOf("/");
+
Iterator iterator = servletMappings.keySet().iterator();
String pattern = null;
String result = "";
+ int strPos = -1;
while ( iterator.hasNext() )
{
pattern = (String)iterator.next();
if ( pattern.startsWith("*.") )
{
+ strPos = str.indexOf(pattern.substring(1));
// we've got a path mapping pattern
- if ( path.indexOf(pattern.substring(2)) != -1 &&
pattern.length() > result.length() )
+ if ( strPos != -1 && pos < strPos
+ && pattern.length() > result.length() )
{
result = pattern;
}
Index: AddContainer_Engine.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/engines/addcontainer/Attic/AddContainer_Engine.java,v
retrieving revision 1.69.2.2
retrieving revision 1.69.2.3
diff -u -r1.69.2.2 -r1.69.2.3
--- AddContainer_Engine.java 6 Aug 2004 17:59:34 -0000 1.69.2.2
+++ AddContainer_Engine.java 24 Nov 2004 10:47:57 -0000 1.69.2.3
@@ -223,7 +223,6 @@
}
// #endif
if (allowedToProcess) {
-
// fire event
JahiaEvent theEvent = new JahiaEvent (this, jParams,
theContainer);
@@ -233,7 +232,9 @@
processLastScreen (jParams, engineMap);
processCurrentScreen(jParams, engineMap);
+
}
+
} else {
throw new JahiaForbiddenAccessException ();
}
Index: Application_Field.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/engines/shared/Attic/Application_Field.java,v
retrieving revision 1.15.4.3
retrieving revision 1.15.4.4
diff -u -r1.15.4.3 -r1.15.4.4
--- Application_Field.java 28 Oct 2004 19:02:17 -0000 1.15.4.3
+++ Application_Field.java 24 Nov 2004 10:47:57 -0000 1.15.4.4
@@ -117,9 +117,17 @@
if ((oldAppID == null) || (oldAppID.intValue() == -1)) {
return true;
}
- ApplicationContext appContext = ServicesRegistry.getInstance()
- .getJahiaApplicationContextService()
-
.getApplicationContext(oldAppID.intValue());
+ ApplicationContext appContext = null;
+ try {
+ appContext = ServicesRegistry.getInstance()
+
.getJahiaApplicationContextService()
+ .getApplicationContext(oldAppID.
+ intValue());
+ } catch ( Throwable t ){
+ logger.debug("Cannot access app context",t);
+ // this should'nt abort processing other fields
+ return true;
+ }
Vector roles = appContext.getRoles();
// Handle roles changes
ArrayList roleMembersList = new ArrayList();
@@ -174,10 +182,18 @@
return false;
}
success = theField.save(jParams);
-
- ApplicationContext appContext = ServicesRegistry.getInstance()
-
.getJahiaApplicationContextService()
-
.getApplicationContext(appID.intValue());
+ ApplicationContext appContext = null;
+ try {
+ appContext = ServicesRegistry.getInstance()
+ .
+ getJahiaApplicationContextService()
+ .getApplicationContext(appID.
+ intValue());
+ } catch ( Throwable t ){
+ // context should exist anymore (deleted), abort save
instead of
+ // fail all process
+ return true;
+ }
Vector roles = appContext.getRoles();
// Handle roles changes
if (roles != null) {
@@ -187,14 +203,15 @@
JahiaGroup grp = ServicesRegistry.getInstance().
getJahiaGroupManagerService().
lookupGroup(0,
- appID + "_" +
theField.getID() +
- "_" + role);
+ appID + "_" + theField.getID() +
+ "_" + role);
if (grp == null) {
// create group
grp = ServicesRegistry.getInstance().
getJahiaGroupManagerService().
createGroup(0,
- appID + "_" + theField.getID() +
"_" +
+ appID + "_" + theField.getID() +
+ "_" +
role, new Properties());
} else {
HashSet membersSet = getFormMembers(jParams, roleNb);
@@ -204,17 +221,19 @@
p = (Principal) members.nextElement();
if (p instanceof JahiaUser) {
if (!membersSet.contains((JahiaUser) p)) {
- logger.debug("removed member=" +
p.getName());
- grp.removeMember((JahiaUser)p);
+ logger.debug("removed member=" +
+ p.getName());
+ grp.removeMember((JahiaUser) p);
} else {
- membersSet.remove((JahiaUser)p);
+ membersSet.remove((JahiaUser) p);
}
} else if (p instanceof JahiaGroup) {
if (!membersSet.contains((JahiaGroup) p)) {
- logger.debug("removed member=" +
p.getName());
- grp.removeMember( (JahiaGroup) p);
+ logger.debug("removed member=" +
+ p.getName());
+ grp.removeMember((JahiaGroup) p);
} else {
- membersSet.remove((JahiaGroup)p);
+ membersSet.remove((JahiaGroup) p);
}
}
}
@@ -222,9 +241,9 @@
while (it.hasNext()) {
p = (Principal) it.next();
if (p instanceof JahiaUser) {
- grp.addMember( (JahiaUser) p);
+ grp.addMember((JahiaUser) p);
} else if (p instanceof JahiaGroup) {
- grp.addMember( (JahiaGroup) p);
+ grp.addMember((JahiaGroup) p);
}
}
}
@@ -236,8 +255,8 @@
if (flushApp.booleanValue()) {
HttpSession session = jParams.getRequest().getSession();
JahiaApplicationsDispatchingService dispatcher =
- ServicesRegistry.getInstance().
- getJahiaApplicationsDispatchingService();
+ ServicesRegistry.getInstance().
+ getJahiaApplicationsDispatchingService();
if (dispatcher != null) {
dispatcher.flushAllSessionsCaches(session);
}
@@ -318,11 +337,15 @@
engineMap.put( "appID", appID );
Vector roles = new Vector();
if (appID.intValue() >= 0) {
- ApplicationContext appContext = ServicesRegistry.getInstance().
-
getJahiaApplicationContextService().
- getApplicationContext(appID.
- intValue());
- roles = appContext.getRoles();
+ try {
+ ApplicationContext appContext =
ServicesRegistry.getInstance().
+
getJahiaApplicationContextService().
+ getApplicationContext(appID.
+ intValue());
+ roles = appContext.getRoles();
+ } catch ( Throwable t ){
+ logger.debug("Error retrieving application context appID[" +
appID + "]");
+ }
}
engineMap.put( "roles", roles );
Index: ServletIncludeRequestWrapper.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/services/applications/Attic/ServletIncludeRequestWrapper.java,v
retrieving revision 1.23.2.3
retrieving revision 1.23.2.4
diff -u -r1.23.2.3 -r1.23.2.4
--- ServletIncludeRequestWrapper.java 23 Jul 2004 13:57:16 -0000 1.23.2.3
+++ ServletIncludeRequestWrapper.java 24 Nov 2004 10:47:58 -0000 1.23.2.4
@@ -354,16 +354,25 @@
}
} else if ( servletMappingPattern.startsWith("*.") ){
// extension mapping
- int pos3 = path.indexOf(servletMappingPattern.substring(2));
- this.emulatedServletPath =
path.substring(0,pos3+servletMappingPattern.length()-2);
- if ( pos2 == -1 ){
- this.emulatedPathInfo = path;
+ int pathSepPos = path.lastIndexOf("/");
+ int pos3 = -1;
+ if ( pathSepPos != -1 ){
+ pos3 =
path.indexOf(servletMappingPattern.substring(1),pathSepPos);
} else {
- this.emulatedPathInfo = path.substring(0,pos2);
+ pos3 = path.indexOf(servletMappingPattern.substring(1));
}
- if (
this.emulatedPathInfo.startsWith(this.emulatedServletPath) ){
- this.emulatedPathInfo =
-
this.emulatedPathInfo.substring(this.emulatedServletPath.length());
+ if ( pos3 != -1 ){
+ this.emulatedServletPath = path.substring(0,
+ pos3 + servletMappingPattern.length() - 1);
+ if (pos2 == -1) {
+ this.emulatedPathInfo = path;
+ } else {
+ this.emulatedPathInfo = path.substring(0, pos2);
+ }
+ if (
this.emulatedPathInfo.startsWith(this.emulatedServletPath) ){
+ this.emulatedPathInfo =
+
this.emulatedPathInfo.substring(this.emulatedServletPath.length());
+ }
}
} else if ( !servletMappingPattern.equals("") ){
// exact mapping