Skip to content
Permalink
Browse files

Reverted: Mathieu's changes in ConfigXMLReader.java from yesterday

OFBiz was crashing 

Reverts rev. 1862324, 1862323, 1862322




git-svn-id: https://svn.apache.org/repos/asf/ofbiz/ofbiz-framework/trunk@1862333 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
JacquesLeRoux committed Jun 30, 2019
1 parent 2f9fca0 commit 1519900ed542d4e4da75d9d6384328719e4365d9
Showing with 73 additions and 47 deletions.
  1. +73 −47 framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java
@@ -31,7 +31,6 @@
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;

import javax.servlet.ServletContext;

@@ -188,13 +187,13 @@ private static Element loadDocument(URL location) throws WebAppConfigurationExce
private String defaultRequest;
private String statusCode;
private List<URL> includes = new ArrayList<>();
private final Map<String, Event> firstVisitEventList = new LinkedHashMap<>();
private final Map<String, Event> preprocessorEventList = new LinkedHashMap<>();
private final Map<String, Event> postprocessorEventList = new LinkedHashMap<>();
private final Map<String, Event> afterLoginEventList = new LinkedHashMap<>();
private final Map<String, Event> beforeLogoutEventList = new LinkedHashMap<>();
private final Map<String, String> eventHandlerMap = new HashMap<>();
private final Map<String, String> viewHandlerMap = new HashMap<>();
private Map<String, Event> firstVisitEventList = new LinkedHashMap<>();
private Map<String, Event> preprocessorEventList = new LinkedHashMap<>();
private Map<String, Event> postprocessorEventList = new LinkedHashMap<>();
private Map<String, Event> afterLoginEventList = new LinkedHashMap<>();
private Map<String, Event> beforeLogoutEventList = new LinkedHashMap<>();
private Map<String, String> eventHandlerMap = new HashMap<>();
private Map<String, String> viewHandlerMap = new HashMap<>();
private MultivaluedMapContext<String, RequestMap> requestMapMap = new MultivaluedMapContext<>();
private Map<String, ViewMap> viewMapMap = new HashMap<>();

@@ -310,35 +309,6 @@ public String getStatusCode() throws WebAppConfigurationException {
return pushIncludes(ccfg -> ccfg.viewMapMap);
}

/**
* Computes the name of an XML element.
*
* @param el the element containing "type" and/or "name" attributes
* @return the derived name.
* @throws NullPointerException when {@code el} is {@code null}
*/
private static String elementToName(Element el) {
String eventName = el.getAttribute("name");
return eventName.isEmpty()
? el.getAttribute("type") + "::" + el.getAttribute("path") + "::" + el.getAttribute("invoke")
: eventName;
}

/**
* Collects some events defined in an XML tree.
*
* @param root the root of the XML tree
* @param childName the name of the element inside {@code root} containing the events
* @return a map associating element derived names to an event objects.
*/
private static void collectEvents(Element root, String childName, Map<String, Event> coll) {
Element child = UtilXml.firstChildElement(root, childName);
if (child != null) {
UtilXml.childElementList(child, "event").stream()
.forEachOrdered(ev -> coll.put(elementToName(ev), new Event(ev)));
}
}

private void loadGeneralConfig(Element rootElement) {
this.errorpage = UtilXml.childElementValue(rootElement, "errorpage");
this.statusCode = UtilXml.childElementValue(rootElement, "status-code");
@@ -352,19 +322,75 @@ private void loadGeneralConfig(Element rootElement) {
if (defaultRequestElement != null) {
this.defaultRequest = defaultRequestElement.getAttribute("request-uri");
}
collectEvents(rootElement, "firstvisit", firstVisitEventList);
collectEvents(rootElement, "preprocessor", preprocessorEventList);
collectEvents(rootElement, "postprocessor", postprocessorEventList);
collectEvents(rootElement, "after-login", afterLoginEventList);
collectEvents(rootElement, "before-logout", beforeLogoutEventList);
// first visit event
Element firstvisitElement = UtilXml.firstChildElement(rootElement, "firstvisit");
if (firstvisitElement != null) {
for (Element eventElement : UtilXml.childElementList(firstvisitElement, "event")) {
String eventName = eventElement.getAttribute("name");
if (eventName.isEmpty()) {
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
}
this.firstVisitEventList.put(eventName, new Event(eventElement));
}
}
// preprocessor events
Element preprocessorElement = UtilXml.firstChildElement(rootElement, "preprocessor");
if (preprocessorElement != null) {
for (Element eventElement : UtilXml.childElementList(preprocessorElement, "event")) {
String eventName = eventElement.getAttribute("name");
if (eventName.isEmpty()) {
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
}
this.preprocessorEventList.put(eventName, new Event(eventElement));
}
}
// postprocessor events
Element postprocessorElement = UtilXml.firstChildElement(rootElement, "postprocessor");
if (postprocessorElement != null) {
for (Element eventElement : UtilXml.childElementList(postprocessorElement, "event")) {
String eventName = eventElement.getAttribute("name");
if (eventName.isEmpty()) {
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
}
this.postprocessorEventList.put(eventName, new Event(eventElement));
}
}
// after-login events
Element afterLoginElement = UtilXml.firstChildElement(rootElement, "after-login");
if (afterLoginElement != null) {
for (Element eventElement : UtilXml.childElementList(afterLoginElement, "event")) {
String eventName = eventElement.getAttribute("name");
if (eventName.isEmpty()) {
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
}
this.afterLoginEventList.put(eventName, new Event(eventElement));
}
}
// before-logout events
Element beforeLogoutElement = UtilXml.firstChildElement(rootElement, "before-logout");
if (beforeLogoutElement != null) {
for (Element eventElement : UtilXml.childElementList(beforeLogoutElement, "event")) {
String eventName = eventElement.getAttribute("name");
if (eventName.isEmpty()) {
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
}
this.beforeLogoutEventList.put(eventName, new Event(eventElement));
}
}
}

private void loadHandlerMap(Element rootElement) {
Map<Boolean, Map<String, String>> handlers = UtilXml.childElementList(rootElement, "handler").stream()
.collect(Collectors.partitioningBy(el -> "view".equals(el.getAttribute("type")),
Collectors.toMap(el -> el.getAttribute("name"), el -> el.getAttribute("className"))));
viewHandlerMap.putAll(handlers.get(true));
eventHandlerMap.putAll(handlers.get(false));
for (Element handlerElement : UtilXml.childElementList(rootElement, "handler")) {
String name = handlerElement.getAttribute("name");
String type = handlerElement.getAttribute("type");
String className = handlerElement.getAttribute("class");

if ("view".equals(type)) {
this.viewHandlerMap.put(name, className);
} else {
this.eventHandlerMap.put(name, className);
}
}
}

protected void loadIncludes(Element rootElement) {

0 comments on commit 1519900

Please sign in to comment.
You can’t perform that action at this time.