/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.iwave.ext.windows.winrm.wmi;
import java.util.List;
import javax.xml.xpath.XPathExpression;
import org.w3c.dom.Element;
import com.google.common.collect.Lists;
import com.iwave.ext.windows.winrm.WinRMTarget;
import com.iwave.ext.xml.XmlStringBuilder;
import com.iwave.ext.xml.XmlUtils;
public class EnumerateRegistryKeysMethod extends AbstractRegistryMethod<List<String>> {
private static final String ENUM_KEY = "EnumKey";
private static final XPathExpression NAMES_EXPR = XmlUtils.compileXPath(XPATH, "ns:sNames");
private long registryTree;
private String subKeyName;
public EnumerateRegistryKeysMethod(WinRMTarget target) {
super(target, ENUM_KEY);
}
public EnumerateRegistryKeysMethod(WinRMTarget target, String subKeyName) {
this(target);
this.subKeyName = subKeyName;
}
public void setRegistryTree(long registryTree) {
this.registryTree = registryTree;
}
public void setSubKeyName(String subKeyName) {
this.subKeyName = subKeyName;
}
@Override
protected void buildInput(XmlStringBuilder xml) {
if (registryTree != 0) {
xml.element("hDefKey", registryTree);
}
xml.element("sSubKeyName", subKeyName);
}
@Override
protected List<String> processOutput(Element output) {
List<String> results = Lists.newArrayList();
for (Element entry : XmlUtils.selectElements(NAMES_EXPR, output)) {
results.add(XmlUtils.getText(entry));
}
return results;
}
}