/** * Create an instance of {@link TransactionalWebServicePolicy } * */ public TransactionalWebServicePolicy createTransactionalWebServicePolicy() { return new TransactionalWebServicePolicy(); }
/** * used to determine if we need to save the request or response * * @param pol * @return */ protected boolean containsSLAXpathOrUserIdentXpath(TransactionalWebServicePolicy pol) { boolean found = false; if (pol.getUserIdentification() != null && !pol.getUserIdentification().getUserIdentity().isEmpty()) { for (int i = 0; i < pol.getUserIdentification().getUserIdentity().size(); i++) { if (pol.getUserIdentification().getUserIdentity().get(i).getXPaths() != null && pol.getUserIdentification().getUserIdentity().get(i).getXPaths() != null && !pol.getUserIdentification().getUserIdentity().get(i).getXPaths().getXPathExpressionType().isEmpty()) { found = true; } } } if (found) { return true; } if (pol.getServiceLevelAggrements() != null && !pol.getServiceLevelAggrements().getSLA().isEmpty()) { for (int i = 0; i < pol.getServiceLevelAggrements().getSLA().size(); i++) { found = found || doesSLAContainXpath(pol.getServiceLevelAggrements().getSLA().get(i)); } } return found; }
@Override public boolean shouldAgentRecordResponseContent(String requesturl) { TransactionalWebServicePolicy GetPolicyIfAvailable = getPolicyIfAvailable(ipWrapAndCacher(requesturl)); if (GetPolicyIfAvailable == null) { return true; } if (GetPolicyIfAvailable.isRecordResponseMessage() || GetPolicyIfAvailable.isRecordFaultsOnly()) { return true; } if (containsSLAXpathOrUserIdentXpath(GetPolicyIfAvailable)) { return true; } return false; }
@Override public boolean shouldAgentRecordRequestContent(String requesturl) { TransactionalWebServicePolicy GetPolicyIfAvailable = getPolicyIfAvailable(ipWrapAndCacher(requesturl)); if (GetPolicyIfAvailable == null) { return true; } if (GetPolicyIfAvailable.isRecordRequestMessage() || GetPolicyIfAvailable.isRecordFaultsOnly()) { return true; } if (containsSLAXpathOrUserIdentXpath(GetPolicyIfAvailable)) { return true; } return false; }
try { int cap = Integer.parseInt(request.getParameter("messagecap")); tp.setRecordedMessageCap(cap); } catch (Exception ex) { tp.setRecordedMessageCap(messagecap); if (Utility.stringIsNullOrEmpty(request.getParameter("recordrequest"))) { tp.setRecordRequestMessage(false); } else { tp.setRecordRequestMessage(true); tp.setRecordResponseMessage(false); } else { tp.setRecordResponseMessage(true); tp.setRecordFaultsOnly(false); } else { tp.setRecordFaultsOnly(true); tp.setBuellerEnabled(false); } else { tp.setBuellerEnabled(true); tp.setHealthStatusEnabled(false); tp.setRecordHeaders(false); } else { tp.setRecordHeaders(true);
req.setRequestURI(p.policy.getURL()); req.setURI(current.URL); req.setAction(current.soapAction); if (p.policy.isRecordRequestMessage() || (p.policy.isRecordFaultsOnly() && current.IsFault)) { if (p.policy.getRecordedMessageCap() >= current.RequestMessage.length()) { req.setXmlRequest(current.RequestMessage.substring(0, p.policy.getRecordedMessageCap())); log.info("skipping request payload " + p.policy.isRecordRequestMessage() + " " + p.policy.isRecordFaultsOnly() + " " + current.IsFault); if (p.policy.isRecordResponseMessage() || (p.policy.isRecordFaultsOnly() && current.IsFault)) { if (p.policy.getRecordedMessageCap() >= current.ResponseMessage.length()) { req.setXmlResponse(current.ResponseMessage); req.setXmlResponse(current.ResponseMessage.substring(0, p.policy.getRecordedMessageCap())); log.info("skipping response payload " + p.policy.isRecordRequestMessage() + " " + p.policy.isRecordFaultsOnly() + " " + current.IsFault); if (current.Headers != null && !current.Headers.isEmpty() && p.policy.isRecordHeaders()) { Iterator e = current.Headers.keySet().iterator(); while (e.hasNext()) {
com.setBoolean(3, true); com.setInt(4, PolicyType.TRANSACTIONAL.ordinal()); TransactionalWebServicePolicy twp = new TransactionalWebServicePolicy(); twp.setURL(uri); twp.setFederationPolicyCollection(fedpolicies); twp.setDescription("jUnit Test Description"); DatatypeFactory fac = DatatypeFactory.newInstance(); twp.setDataTTL(fac.newDuration(10000000)); Marshaller m = Utility.getSerializationContext().createMarshaller(); StringWriter sw = new StringWriter();
break; case TRANSACTIONAL: policy = new TransactionalWebServicePolicy(); if (URL.toLowerCase().startsWith("http://") || URL.toLowerCase().startsWith("https://")) { ((TransactionalWebServicePolicy) policy).setBuellerEnabled(true); } else { ((TransactionalWebServicePolicy) policy).setBuellerEnabled(false);
users.add(mc.HttpIdentity); if (p.getUserIdentification() == null || p.getUserIdentification().getUserIdentity() == null || p.getUserIdentification().getUserIdentity().isEmpty()) { return users; ArrayOfUserIdentity id = (ArrayOfUserIdentity) p.getUserIdentification(); for (int i = 0; i < id.getUserIdentity().size(); i++) { if (id.getUserIdentity().get(i).isUseHttpHeader() != null && id.getUserIdentity().get(i).isUseHttpHeader()) {
long expirationtime = p.policy.getPolicyRefreshRate().getTimeInMillis(Calendar.getInstance()); if (p.lastUpdate + expirationtime < System.currentTimeMillis()) { try { // it's expired, get a new copy....Call Web Service Operation
if (!twp.isRecordRequestMessage() && !twp.isRecordFaultsOnly()) { outError.set("This rule only works when the request is recorded. " + outError.get());
if (!twp.isRecordResponseMessage() && !twp.isRecordFaultsOnly()) { outError.set("This rule only works when the response is recorded. " + outError.get());
TransactionalWebServicePolicy tp = getPolicyIfAvailable(url); if (tp != null) { if (tp.isRecordRequestMessage() || tp.isRecordFaultsOnly() || containsSLAXpathOrUserIdentXpath(tp)) { mc.RequestMessage = XMLrequest;
if (tp.isRecordResponseMessage() || (tp.isRecordFaultsOnly() && isFault)) { mc.ResponseMessage = responseXML; if (tp.isRecordFaultsOnly() && !isFault) { mc.RequestMessage = ""; mc.ResponseMessage = "";