/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.iwave.ext.windows.winrm; import org.w3c.dom.Document; import org.w3c.dom.Element; import com.iwave.ext.xml.XmlUtils; public abstract class WinRMInvokeOperation<T> extends WinRMOperation<T> { private String actionUri; public WinRMInvokeOperation(WinRMTarget target) { super(target); } public WinRMInvokeOperation(WinRMTarget target, String resourceUri, String actionUri) { super(target); setResourceUri(resourceUri); setActionUri(actionUri); } public String getActionUri() { return actionUri; } public void setActionUri(String actionUri) { this.actionUri = actionUri; } @Override public T execute() throws WinRMException { WinRMRequest request = createRequest(); Document response = sendRequest(request); Element output = getOutput(response); T result = processOutput(output); return result; } protected WinRMRequest createRequest() { WinRMRequest request = createBaseRequest(); request.setActionUri(actionUri); request.setBody(createInput()); return request; } protected Element getOutput(Document response) { Element soapBody = getSoapBody(response); Element output = XmlUtils.getFirstChildElement(soapBody); return output; } protected abstract String createInput(); protected abstract T processOutput(Element output); }