Skip to content

Commit 1519900

Browse files
committed
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
1 parent 2f9fca0 commit 1519900

File tree

1 file changed

+73
-47
lines changed

1 file changed

+73
-47
lines changed

framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ConfigXMLReader.java

Lines changed: 73 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.Map;
3232
import java.util.Set;
3333
import java.util.function.Function;
34-
import java.util.stream.Collectors;
3534

3635
import javax.servlet.ServletContext;
3736

@@ -188,13 +187,13 @@ public static class ControllerConfig {
188187
private String defaultRequest;
189188
private String statusCode;
190189
private List<URL> includes = new ArrayList<>();
191-
private final Map<String, Event> firstVisitEventList = new LinkedHashMap<>();
192-
private final Map<String, Event> preprocessorEventList = new LinkedHashMap<>();
193-
private final Map<String, Event> postprocessorEventList = new LinkedHashMap<>();
194-
private final Map<String, Event> afterLoginEventList = new LinkedHashMap<>();
195-
private final Map<String, Event> beforeLogoutEventList = new LinkedHashMap<>();
196-
private final Map<String, String> eventHandlerMap = new HashMap<>();
197-
private final Map<String, String> viewHandlerMap = new HashMap<>();
190+
private Map<String, Event> firstVisitEventList = new LinkedHashMap<>();
191+
private Map<String, Event> preprocessorEventList = new LinkedHashMap<>();
192+
private Map<String, Event> postprocessorEventList = new LinkedHashMap<>();
193+
private Map<String, Event> afterLoginEventList = new LinkedHashMap<>();
194+
private Map<String, Event> beforeLogoutEventList = new LinkedHashMap<>();
195+
private Map<String, String> eventHandlerMap = new HashMap<>();
196+
private Map<String, String> viewHandlerMap = new HashMap<>();
198197
private MultivaluedMapContext<String, RequestMap> requestMapMap = new MultivaluedMapContext<>();
199198
private Map<String, ViewMap> viewMapMap = new HashMap<>();
200199

@@ -310,35 +309,6 @@ public Map<String, ViewMap> getViewMapMap() throws WebAppConfigurationException
310309
return pushIncludes(ccfg -> ccfg.viewMapMap);
311310
}
312311

313-
/**
314-
* Computes the name of an XML element.
315-
*
316-
* @param el the element containing "type" and/or "name" attributes
317-
* @return the derived name.
318-
* @throws NullPointerException when {@code el} is {@code null}
319-
*/
320-
private static String elementToName(Element el) {
321-
String eventName = el.getAttribute("name");
322-
return eventName.isEmpty()
323-
? el.getAttribute("type") + "::" + el.getAttribute("path") + "::" + el.getAttribute("invoke")
324-
: eventName;
325-
}
326-
327-
/**
328-
* Collects some events defined in an XML tree.
329-
*
330-
* @param root the root of the XML tree
331-
* @param childName the name of the element inside {@code root} containing the events
332-
* @return a map associating element derived names to an event objects.
333-
*/
334-
private static void collectEvents(Element root, String childName, Map<String, Event> coll) {
335-
Element child = UtilXml.firstChildElement(root, childName);
336-
if (child != null) {
337-
UtilXml.childElementList(child, "event").stream()
338-
.forEachOrdered(ev -> coll.put(elementToName(ev), new Event(ev)));
339-
}
340-
}
341-
342312
private void loadGeneralConfig(Element rootElement) {
343313
this.errorpage = UtilXml.childElementValue(rootElement, "errorpage");
344314
this.statusCode = UtilXml.childElementValue(rootElement, "status-code");
@@ -352,19 +322,75 @@ private void loadGeneralConfig(Element rootElement) {
352322
if (defaultRequestElement != null) {
353323
this.defaultRequest = defaultRequestElement.getAttribute("request-uri");
354324
}
355-
collectEvents(rootElement, "firstvisit", firstVisitEventList);
356-
collectEvents(rootElement, "preprocessor", preprocessorEventList);
357-
collectEvents(rootElement, "postprocessor", postprocessorEventList);
358-
collectEvents(rootElement, "after-login", afterLoginEventList);
359-
collectEvents(rootElement, "before-logout", beforeLogoutEventList);
325+
// first visit event
326+
Element firstvisitElement = UtilXml.firstChildElement(rootElement, "firstvisit");
327+
if (firstvisitElement != null) {
328+
for (Element eventElement : UtilXml.childElementList(firstvisitElement, "event")) {
329+
String eventName = eventElement.getAttribute("name");
330+
if (eventName.isEmpty()) {
331+
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
332+
}
333+
this.firstVisitEventList.put(eventName, new Event(eventElement));
334+
}
335+
}
336+
// preprocessor events
337+
Element preprocessorElement = UtilXml.firstChildElement(rootElement, "preprocessor");
338+
if (preprocessorElement != null) {
339+
for (Element eventElement : UtilXml.childElementList(preprocessorElement, "event")) {
340+
String eventName = eventElement.getAttribute("name");
341+
if (eventName.isEmpty()) {
342+
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
343+
}
344+
this.preprocessorEventList.put(eventName, new Event(eventElement));
345+
}
346+
}
347+
// postprocessor events
348+
Element postprocessorElement = UtilXml.firstChildElement(rootElement, "postprocessor");
349+
if (postprocessorElement != null) {
350+
for (Element eventElement : UtilXml.childElementList(postprocessorElement, "event")) {
351+
String eventName = eventElement.getAttribute("name");
352+
if (eventName.isEmpty()) {
353+
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
354+
}
355+
this.postprocessorEventList.put(eventName, new Event(eventElement));
356+
}
357+
}
358+
// after-login events
359+
Element afterLoginElement = UtilXml.firstChildElement(rootElement, "after-login");
360+
if (afterLoginElement != null) {
361+
for (Element eventElement : UtilXml.childElementList(afterLoginElement, "event")) {
362+
String eventName = eventElement.getAttribute("name");
363+
if (eventName.isEmpty()) {
364+
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
365+
}
366+
this.afterLoginEventList.put(eventName, new Event(eventElement));
367+
}
368+
}
369+
// before-logout events
370+
Element beforeLogoutElement = UtilXml.firstChildElement(rootElement, "before-logout");
371+
if (beforeLogoutElement != null) {
372+
for (Element eventElement : UtilXml.childElementList(beforeLogoutElement, "event")) {
373+
String eventName = eventElement.getAttribute("name");
374+
if (eventName.isEmpty()) {
375+
eventName = eventElement.getAttribute("type") + "::" + eventElement.getAttribute("path") + "::" + eventElement.getAttribute("invoke");
376+
}
377+
this.beforeLogoutEventList.put(eventName, new Event(eventElement));
378+
}
379+
}
360380
}
361381

362382
private void loadHandlerMap(Element rootElement) {
363-
Map<Boolean, Map<String, String>> handlers = UtilXml.childElementList(rootElement, "handler").stream()
364-
.collect(Collectors.partitioningBy(el -> "view".equals(el.getAttribute("type")),
365-
Collectors.toMap(el -> el.getAttribute("name"), el -> el.getAttribute("className"))));
366-
viewHandlerMap.putAll(handlers.get(true));
367-
eventHandlerMap.putAll(handlers.get(false));
383+
for (Element handlerElement : UtilXml.childElementList(rootElement, "handler")) {
384+
String name = handlerElement.getAttribute("name");
385+
String type = handlerElement.getAttribute("type");
386+
String className = handlerElement.getAttribute("class");
387+
388+
if ("view".equals(type)) {
389+
this.viewHandlerMap.put(name, className);
390+
} else {
391+
this.eventHandlerMap.put(name, className);
392+
}
393+
}
368394
}
369395

370396
protected void loadIncludes(Element rootElement) {

0 commit comments

Comments
 (0)