blob: 1c9d7d17be2c73223e019faa14a6bb8d90d369c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
/**
* Copyright 2011 IAAS University of Stuttgart <br>
* <br>
*
* @author uwe.breitenbuecher@iaas.uni-stuttgart.de
*
*/
package de.unistuttgart.iaas.bpel.extensions.bpel4restlight.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.FaultException;
import org.apache.ode.bpel.runtime.extension.ExtensionContext;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import de.unistuttgart.iaas.bpel.extensions.bpel4restlight.Bpel4RestLightOperation;
import de.unistuttgart.iaas.bpel.extensions.bpel4restlight.MethodAttribute;
import de.unistuttgart.iaas.xml.DomXmlConverter;
public class Bpel4RestLightUtil {
protected static final Log log = LogFactory.getLog(Bpel4RestLightUtil.class);
/**
* This function extracts the requestPayload specified in the passed
* element. This requestPayload is either the content contained in a special
* BPEL-Variable which is referenced by name by a special attribute of the
* passed element or the content contained in the first child node of the
* passed element
*
* @param context ExtensionContext
* @param element Element from which the requestPayload has to be extracted
* @return RequestPayload as String
* @throws FaultException
*/
public static String extractRequestPayload(ExtensionContext context, Element element) throws FaultException {
String requestPayload = "";
String requestPayloadVariableName = getMethodAttributeValue(element, MethodAttribute.REQUESTPAYLOADVARIABLE);
if (requestPayloadVariableName != null && requestPayloadVariableName != "") {
Node requestVariableNode = context.readVariable(requestPayloadVariableName);
if (requestVariableNode.getLocalName().equals("temporary-simple-type-wrapper")) {
Bpel4RestLightOperation.wrapper = "temporary-simple-type-wrapper";
requestPayload = DomXmlConverter.nodeToString(requestVariableNode, "temporary-simple-type-wrapper");
} else {
requestPayload = DomXmlConverter.nodeToString(requestVariableNode, null);
}
log.debug("The pure request variable as String: \n" + DomXmlConverter.nodeToString(requestVariableNode, null) + "\n");
}
return requestPayload;
}
public static String extractAcceptHeader(ExtensionContext context, Element element) throws FaultException {
return getMethodAttributeValue(element, MethodAttribute.ACCEPTHEADER);
}
public static String extractContentTypeHeader(ExtensionContext context, Element element) throws FaultException {
return getMethodAttributeValue(element, MethodAttribute.CONTENTTYPE);
}
/**
* This function extracts special predefined attributes (see
* {@link MethodAttribute}) from a passed DOM-Element
*
* @param element Element containing the requested Attribute-Value
* @param methodAttribute Attribute whose content has to be returned
* @return Value / Content of the attribute
*/
public static String getMethodAttributeValue(Element element, MethodAttribute methodAttribute) {
String result = "";
switch (methodAttribute) {
case REQUESTURI:
result = element.getAttribute("uri");
if (result == null || "".equals(result)) {
result = element.getAttribute("requestUri");
}
break;
case REQUESTPAYLOADVARIABLE:
result = element.getAttribute("request");
if (result == null || "".equals(result)) {
result = element.getAttribute("requestPayload");
}
break;
case RESPONSEPAYLOADVARIABLE:
result = element.getAttribute("response");
if (result == null || "".equals(result)) {
result = element.getAttribute("responsePayload");
}
break;
case STATUSCODEVARIABLE:
result = element.getAttribute("statusCode");
break;
case ACCEPTHEADER:
result = element.getAttribute("accept");
break;
case CONTENTTYPE:
result = element.getAttribute("contentType");
break;
}
return result;
}
}
|