Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 34 additions & 33 deletions api/pom.xml
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.opennms.core</groupId>
<artifactId>org.opennms.core.wsman</artifactId>
<version>1.3.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.opennms.core.wsman</groupId>
<artifactId>org.opennms.core.wsman.api</artifactId>
<name>OpenNMS :: Core :: WS-Man :: API</name>
<packaging>bundle</packaging>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.opennms.core</groupId>
<artifactId>org.opennms.core.wsman</artifactId>
<version>1.3.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.opennms.core.wsman</groupId>
<artifactId>org.opennms.core.wsman.api</artifactId>
<name>OpenNMS :: Core :: WS-Man :: API</name>
<packaging>bundle</packaging>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${javaVersion}</source>
<target>${javaVersion}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-RequiredExecutionEnvironment>JavaSE-${javaVersion}</Bundle-RequiredExecutionEnvironment>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${javaVersion}</source>
<target>${javaVersion}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-RequiredExecutionEnvironment>JavaSE-${javaVersion}</Bundle-RequiredExecutionEnvironment>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
17 changes: 14 additions & 3 deletions api/src/main/java/org/opennms/core/wsman/WSManClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@
*/
package org.opennms.core.wsman;

import java.util.List;
import java.util.Map;

import org.opennms.core.wsman.exceptions.WSManException;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import java.util.List;
import java.util.Map;

/**
* A WS-Man client implementation that supports the following operations:
* * Enumerate and pull (DSP8037)
Expand Down Expand Up @@ -110,4 +111,14 @@ public interface WSManClient {
* @throws WSManException on error
*/
public String enumerateAndPullUsingFilter(String resourceUri, String dialect, String filter, List<Node> nodes, boolean recursive);

/**
*
*
* @param resourceUri uri
* @param body body with a root XML element
* @param selectors map of selectors
* @throws WSManException on error
*/
public void put(String resourceUri, Element body, Map<String, String> selectors);
}
20 changes: 19 additions & 1 deletion api/src/main/java/org/opennms/core/wsman/WSManEndpoint.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ public class WSManEndpoint {
private final String username;
private final String password;
private final boolean gssAuth;
private final boolean basicAuth;
private final boolean digestAuth;
private final boolean strictSSL;
private final WSManVersion serverVersion;
private final Integer maxElements;
Expand All @@ -46,6 +48,8 @@ private WSManEndpoint(Builder builder) {
username = builder.username;
password = builder.password;
gssAuth = builder.gssAuth;
basicAuth = builder.basicAuth;
digestAuth = builder.digestAuth;
strictSSL = builder.strictSSL;
serverVersion = builder.serverVersion;
maxElements = builder.maxElements;
Expand All @@ -60,6 +64,8 @@ public static class Builder {
private String username;
private String password;
private boolean gssAuth = false;
private boolean basicAuth = false;
private boolean digestAuth = false;
private WSManVersion serverVersion = WSManVersion.WSMAN_1_2;
private Integer maxElements;
private Integer maxEnvelopeSize;
Expand All @@ -75,11 +81,19 @@ public Builder(URL url) {
}

public Builder withBasicAuth(String username, String password) {
this.basicAuth = true;
this.username = Objects.requireNonNull(username, "username cannot be null");
this.password = Objects.requireNonNull(password, "password cannot be null");
return this;
}

public Builder withDigestAuth(String username, String password) {
this.digestAuth= true;
this.username = Objects.requireNonNull(username, "username cannot be null");
this.password = Objects.requireNonNull(password, "password cannot be null");
return this;
}

public Builder withGSSAuth() {
gssAuth = true;
return this;
Expand Down Expand Up @@ -137,7 +151,11 @@ public URL getUrl() {
}

public boolean isBasicAuth() {
return !isGSSAuth() && username != null;
return !isGSSAuth() && basicAuth && username != null;
}

public boolean isDigestAuth() {
return !isGSSAuth() && digestAuth && username != null;
}

public String getUsername() {
Expand Down
9 changes: 8 additions & 1 deletion cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,18 @@
<artifactId>jakarta.xml.ws-api</artifactId>
<version>${jaxbVersion}</version>
</dependency>
<dependency>
<!-- <dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${activationVersion}</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/jakarta.activation/jakarta.activation-api -->
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>2.1.2</version>
</dependency>

<dependency>
<groupId>args4j</groupId>
<artifactId>args4j</artifactId>
Expand Down
5 changes: 5 additions & 0 deletions cli/src/main/java/org/opennms/core/wsman/WSManCli.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public enum WSManOperation {
@Option(name="-gssAuth", usage="GSS authentication")
private boolean gssAuth = false;

@Option(name="-digestAuth", usage="Digest authentication")
private boolean digestAuth = false;

@Option(name="-o", usage="operation")
WSManOperation operation = WSManOperation.ENUM;

Expand Down Expand Up @@ -126,6 +129,8 @@ public void doMain(String[] args) {
builder.withBasicAuth(username, password);
} else if (gssAuth) {
builder.withGSSAuth();
} else if (digestAuth) {
builder.withDigestAuth(username, password);
}
WSManEndpoint endpoint = builder.build();
LOG.info("Using endpoint: {}", endpoint);
Expand Down
8 changes: 7 additions & 1 deletion cxf/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<version>3.1.0</version>
<extensions>true</extensions>
<executions>
<execution>
Expand Down Expand Up @@ -164,5 +164,11 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>4.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
35 changes: 33 additions & 2 deletions cxf/src/main/java/org/opennms/core/wsman/cxf/CXFWSManClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@

import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import jakarta.xml.ws.BindingProvider;

import jakarta.xml.ws.Holder;
import org.apache.cxf.Bus;
import org.apache.cxf.binding.soap.SoapBindingConstants;
import org.apache.cxf.bus.extension.ExtensionManagerBus;
Expand All @@ -42,6 +43,7 @@
import org.apache.cxf.message.Message;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transport.http.auth.DigestAuthSupplier;
import org.apache.cxf.transport.http.auth.HttpAuthHeader;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.cxf.ws.addressing.AddressingProperties;
Expand All @@ -63,6 +65,8 @@
import org.opennms.core.wsman.exceptions.WSManException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xmlsoap.schemas.ws._2004._09.enumeration.Enumerate;
import org.xmlsoap.schemas.ws._2004._09.enumeration.EnumerateResponse;
Expand Down Expand Up @@ -289,6 +293,25 @@ public String enumerateAndPullUsingFilter(String resourceUri, String dialect, St
return enumerateAndPull(resourceUri, dialect, filter, nodes, recursive);
}

@Override
public void put(String resourceUri, Element body, Map<String, String> selectors) {
String elementType = TypeUtils.getElementTypeFromResourceUri(resourceUri);
final TransferOperations transferer = getTransferer(resourceUri, elementType, selectors);
try {
TransferElement transferElement = new TransferElement();
transferElement.getAny().clear();
// Add the root XML element as a child element of TransferElement
transferElement.getAny().add(body);

Holder<TransferElement> holder = new Holder<>(transferElement);
transferer.put(holder);
} catch (RuntimeException e) {
throw wrapException(e);
} finally {
destroy(transferer);
}
}

@Override
public Node get(String resourceUri, Map<String, String> selectors) {
String elementType = TypeUtils.getElementTypeFromResourceUri(resourceUri);
Expand Down Expand Up @@ -399,6 +422,14 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
http.getAuthorization().setUserName(m_endpoint.getUsername());
http.getAuthorization().setPassword(m_endpoint.getPassword());

requestContext.put(BindingProvider.USERNAME_PROPERTY, m_endpoint.getUsername());
requestContext.put(BindingProvider.PASSWORD_PROPERTY, m_endpoint.getPassword());
} else if (m_endpoint.isDigestAuth()) {
LOG.debug("Enabling digest authentication.");
http.setAuthSupplier(new DigestAuthSupplier());
http.getAuthorization().setUserName(m_endpoint.getUsername());
http.getAuthorization().setPassword(m_endpoint.getPassword());

requestContext.put(BindingProvider.USERNAME_PROPERTY, m_endpoint.getUsername());
requestContext.put(BindingProvider.PASSWORD_PROPERTY, m_endpoint.getPassword());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package org.opennms.core.wsman.cxf;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.Action;
import javax.xml.ws.soap.Addressing;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebResult;
import jakarta.jws.WebService;
import jakarta.jws.soap.SOAPBinding;
import jakarta.xml.bind.annotation.XmlSeeAlso;
import jakarta.xml.ws.Action;
import jakarta.xml.ws.soap.Addressing;

import org.xmlsoap.schemas.ws._2004._09.enumeration.Enumerate;
import org.xmlsoap.schemas.ws._2004._09.enumeration.EnumerateResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
*/
package org.opennms.core.wsman.cxf;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.soap.Addressing;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebResult;
import jakarta.jws.WebService;
import jakarta.jws.soap.SOAPBinding;
import jakarta.xml.bind.annotation.XmlSeeAlso;
import jakarta.xml.ws.soap.Addressing;

import schemas.dmtf.org.wbem.wsman.v1.IdentifyResponseType;
import schemas.dmtf.org.wbem.wsman.v1.IdentifyType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package org.opennms.core.wsman.cxf;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.Action;
import javax.xml.ws.soap.Addressing;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebResult;
import jakarta.jws.WebService;
import jakarta.jws.soap.SOAPBinding;
import jakarta.xml.bind.annotation.XmlSeeAlso;
import jakarta.xml.ws.Action;
import jakarta.xml.ws.soap.Addressing;

import org.xmlsoap.schemas.ws._2004._09.transfer.ObjectFactory;
import org.xmlsoap.schemas.ws._2004._09.transfer.TransferElement;
Expand Down Expand Up @@ -54,7 +54,7 @@ public interface TransferOperations {
@Action(input = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Put", output = "http://schemas.xmlsoap.org/ws/2004/09/transfer/PutResponse")
public void put(
@WebParam(partName = "Body", mode = WebParam.Mode.INOUT, name = "TransferElement", targetNamespace = "http://schemas.xmlsoap.org/ws/2004/09/transfer")
javax.xml.ws.Holder<TransferElement> body
jakarta.xml.ws.Holder<TransferElement> body
);

@WebMethod(operationName = "Delete")
Expand Down
6 changes: 3 additions & 3 deletions cxf/src/main/java/org/opennms/core/wsman/cxf/TypeUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import java.net.URI;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import java.util.Map.Entry;
import java.util.Objects;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;

import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
Expand Down
Loading