Initial version to support Tomcat 10 (Servlet 6.0 spec), JavaEE (jakarta.* namespace) and Java 17 or higher

Java17
Brian Rosenberger 2024-07-06 08:29:01 +02:00
parent 6d85158246
commit f8302c6914
94 changed files with 684 additions and 1282 deletions

View File

@ -5,16 +5,22 @@ apply plugin: "signing"
repositories {
mavenCentral()
}
/*
java {
toolchain {
languageVersion = JavaLanguageVersion.of(8)
}
}
*/
project.version "2.0.2-SNAPSHOT"
project.version "3.0.0-SNAPSHOT"
group "net.brutex.xservices"
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
publishing {
publications {
maven(MavenPublication) {
@ -69,10 +75,20 @@ tasks.register('createDist', Zip) {Zip t ->
}
dependencies {
compileOnly "javax.servlet:javax.servlet-api:4.0.1"
compileOnly "javax.ws.rs:javax.ws.rs-api:2.1.1"
compileOnly "jakarta.servlet:jakarta.servlet-api:6.0.0"
implementation "org.apache.commons:commons-configuration2:2.9.0"
implementation "jakarta.ws.rs:jakarta.ws.rs-api:4.0.0"
//runtimeOnly "com.sun.ws.rs:"
implementation "jakarta.xml.ws:jakarta.xml.ws-api:2.3.3"
//runtimeOnly "com.sun.xml.ws:jaxws-rt:2.3.3"
implementation "jakarta.xml.bind:jakarta.xml.bind-api:4.0.2"
runtimeOnly "com.sun.xml.bind:jaxb-impl:4.0.2"
implementation 'jakarta.jws:jakarta.jws-api:3.0.0'
implementation 'org.apache.commons:commons-configuration2:2.10.1'
implementation "org.apache.commons:commons-lang3:3.12.0"
implementation "commons-net:commons-net:3.9.0"
implementation "commons-beanutils:commons-beanutils:1.9.4"
@ -89,40 +105,35 @@ dependencies {
implementation "org.apache.commons:commons-jcs-core:2.2.1"
implementation "org.quartz-scheduler:quartz:2.3.2"
implementation "org.quartz-scheduler:quartz:2.5.0-rc1"
implementation "org.slf4j:slf4j-api:2.0.7"
runtimeOnly "ch.qos.logback:logback-core:1.3.8"
runtimeOnly "ch.qos.logback:logback-classic:1.3.8"
//runtimeOnly "org.slf4j:slf4j-simple:2.0.7"
implementation "org.apache.ws.commons.axiom:axiom:1.2.22"
implementation "org.apache.ws.commons.axiom:axiom-impl:1.2.22"
implementation "org.apache.ws.commons.axiom:axiom:1.4.0"
implementation "org.apache.ws.commons.axiom:axiom-impl:1.4.0"
implementation "org.apache.shiro:shiro-core:1.12.0"
implementation "org.apache.shiro:shiro-root:1.12.0"
implementation "org.apache.shiro:shiro-web:1.12.0"
implementation 'org.apache.shiro:shiro-jakarta-ee:2.0.1'
implementation "org.apache.shiro:shiro-web:2.0.1:jakarta"
implementation "org.apache.cxf:cxf:3.4.10"
implementation "org.apache.cxf:cxf-rt-databinding-aegis:3.2.14"
runtimeOnly "org.apache.cxf:cxf-rt-transports-http:3.2.14"
runtimeOnly "org.apache.cxf:cxf-rt-frontend-jaxrs:3.2.14"
runtimeOnly "org.apache.cxf:cxf-rt-frontend-jaxws:3.2.14"
runtimeOnly "org.apache.cxf:cxf-rt-security:3.2.14"
implementation "org.apache.cxf:cxf-rt-transports-http:4.0.4"
implementation "org.apache.cxf:cxf-rt-databinding-aegis:4.0.4"
runtimeOnly "org.apache.cxf:cxf-rt-transports-http:4.0.4"
runtimeOnly "org.apache.cxf:cxf-rt-frontend-jaxrs:4.0.4"
runtimeOnly "org.apache.cxf:cxf-rt-frontend-jaxws:4.0.4"
runtimeOnly "org.apache.cxf:cxf-rt-security:4.0.4"
implementation "rhino:js:1.7R2"
implementation "org.springframework:spring-core:5.3.29"
implementation "org.springframework:spring-context:5.3.29"
implementation "org.springframework:spring-web:5.3.29"
implementation 'org.springframework:spring-core:6.1.10'
implementation "org.springframework:spring-context:6.1.10"
implementation "org.springframework:spring-web:6.1.10"
implementation "com.h2database:h2:2.2.222"
implementation "com.sun.xml.bind:jaxb-impl:2.3.0.1"
implementation "com.sun.xml.bind:jaxb-core:2.3.0.1"
implementation fileTree(dir: "lib/", includes: ["*.jar"], excludes: ["serena.*.jar"])
compileOnly fileTree(dir: "lib/", includes: ["serena.*.jar"])

Binary file not shown.

View File

@ -16,9 +16,9 @@
package net.brutex.xservices.cmtypes;
import java.net.URL;
import javax.xml.bind.annotation.XmlType;
import java.net.URL;
import jakarta.xml.bind.annotation.XmlType;
@XmlType(name="Item")
public class ItemType {

View File

@ -20,8 +20,8 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class ItemTypeList implements Serializable {

View File

@ -20,8 +20,9 @@ package net.brutex.xservices.security;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.config.Ini;
import org.apache.shiro.lang.util.Nameable;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.util.Nameable;
import java.net.URI;
import java.net.URISyntaxException;

View File

@ -16,8 +16,8 @@
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -16,7 +16,7 @@
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlEnum;
/**
*

View File

@ -21,9 +21,9 @@ import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlEnumValue;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -20,8 +20,8 @@ import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -20,8 +20,8 @@ import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -15,8 +15,8 @@
*/
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlEnumValue;
/**
* Different pre-defined date formats.

View File

@ -35,12 +35,12 @@ import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.UserPrincipal;
import java.util.GregorianCalendar;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorOrder;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorOrder;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
/**
* @author Brian Rosenberger, bru(at)brutex.de
*

View File

@ -16,8 +16,8 @@
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
/**
*

View File

@ -23,7 +23,7 @@ import net.brutex.xservices.util.BrutexNamespaces;
* Host information.
* @author Brian Rosenberger, bru@brutex.de
*/
@javax.xml.bind.annotation.XmlType(name=HostinfoType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES)
@jakarta.xml.bind.annotation.XmlType(name=HostinfoType.XML_NAME, namespace=BrutexNamespaces.WS_XSERVICES)
public class HostinfoType {
public final static String XML_NAME="hostinfo";

View File

@ -15,8 +15,8 @@
*/
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlEnumValue;
/**
* MIME types for email messages.

View File

@ -19,8 +19,8 @@ package net.brutex.xservices.types;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -18,8 +18,8 @@ package net.brutex.xservices.types;
import java.net.URI;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -18,8 +18,8 @@ package net.brutex.xservices.types;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
* Generic key/ value pairs.

View File

@ -17,8 +17,8 @@
package net.brutex.xservices.types;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.types.ant.AntProperty;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -16,7 +16,7 @@
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElement;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -17,10 +17,10 @@ package net.brutex.xservices.types;
import java.util.GregorianCalendar;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -19,7 +19,7 @@ package net.brutex.xservices.types;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlType;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -16,7 +16,7 @@
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlType;
@XmlType
public class StringReplaceType

View File

@ -19,7 +19,7 @@ package net.brutex.xservices.types;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlType;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -16,8 +16,8 @@
package net.brutex.xservices.types;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -17,8 +17,8 @@ package net.brutex.xservices.types;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -3,10 +3,10 @@ package net.brutex.xservices.types.alfevent;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;

View File

@ -3,12 +3,12 @@ package net.brutex.xservices.types.alfevent;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;

View File

@ -3,10 +3,10 @@ package net.brutex.xservices.types.alfevent;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;

View File

@ -5,12 +5,12 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;

View File

@ -5,11 +5,11 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;

View File

@ -5,12 +5,12 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;

View File

@ -5,11 +5,11 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;

View File

@ -5,11 +5,11 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;

View File

@ -3,12 +3,12 @@ package net.brutex.xservices.types.alfevent;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlSchemaType;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

View File

@ -5,11 +5,11 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;

View File

@ -3,12 +3,12 @@ package net.brutex.xservices.types.alfevent;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlSchemaType;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

View File

@ -1,9 +1,9 @@
package net.brutex.xservices.types.alfevent;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.annotation.XmlElementDecl;
import jakarta.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;

View File

@ -1,11 +1,11 @@
package net.brutex.xservices.types.alfevent;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlSchemaType;
import jakarta.xml.bind.annotation.XmlType;
/**

View File

@ -19,8 +19,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
/**
* Generic key/ value pairs.

View File

@ -17,9 +17,9 @@
package net.brutex.xservices.types.ant;
import java.io.File;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;
import org.apache.tools.ant.Project;

View File

@ -19,8 +19,8 @@ package net.brutex.xservices.types.ant;
import java.io.File;
import java.io.IOException;
import javax.activation.DataHandler;
import javax.xml.bind.annotation.XmlMimeType;
import jakarta.activation.DataHandler;
import jakarta.xml.bind.annotation.XmlMimeType;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -18,8 +18,8 @@ package net.brutex.xservices.types.ant;
import java.util.UUID;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
/**
* Defines a collection of storable objects.

View File

@ -16,8 +16,8 @@
package net.brutex.xservices.types.ant;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import org.apache.tools.ant.types.selectors.ContainsSelector;
import org.apache.tools.ant.types.selectors.FileSelector;

View File

@ -19,8 +19,8 @@ package net.brutex.xservices.types.ant;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.types.DateFormatType;
/**

View File

@ -17,9 +17,9 @@
package net.brutex.xservices.types.ant;
import java.io.File;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlType;
import net.brutex.xservices.util.BrutexNamespaces;
import org.apache.tools.ant.Project;

View File

@ -16,9 +16,9 @@
package net.brutex.xservices.types.ant;
import java.io.File;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlType;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Resource;

View File

@ -16,8 +16,8 @@
package net.brutex.xservices.types.ant;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlValue;
/**
*

View File

@ -16,7 +16,7 @@
package net.brutex.xservices.types.ant;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElement;
/**
*

View File

@ -17,7 +17,7 @@
package net.brutex.xservices.types.ant;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElement;
import org.apache.tools.ant.types.selectors.FileSelector;
/**

View File

@ -12,7 +12,7 @@ import org.apache.commons.configuration2.event.ConfigurationEvent;
import org.apache.commons.configuration2.event.EventListener;
import org.apache.commons.configuration2.ex.ConfigurationException;
import javax.servlet.ServletContext;
import jakarta.servlet.ServletContext;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
@ -48,6 +48,7 @@ public class EventmanagerConfiguration {
private int cleaner_interval;
private List<ALFEventFilter> alf_filter = new ArrayList<>();
private int init_delay;
private long logMaxAge;
public synchronized EventmanagerConfiguration refreshConfig() {
@ -66,6 +67,7 @@ public class EventmanagerConfiguration {
this.jdbc_filedb = config.getString("fdb", "jdbc:h2:mem:lockdb;DB_CLOSE_DELAY=-1;");
this.isEmitterActive = config.getBoolean("emitter_active", true);
this.cleaner_interval = config.getInt("cleaner_interval", 5);
this.logMaxAge = config.getLong("logMaxAge", 72);
List<String> lst = config.getList(String.class,"alf_filter", new ArrayList<String>());
for ( String c :lst ) {

View File

@ -3,6 +3,8 @@ package net.brutex.xservices.util;
import java.sql.*;
import java.time.Instant;
import java.util.concurrent.atomic.AtomicBoolean;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.h2.jdbcx.JdbcConnectionPool;
import org.quartz.*;
@ -18,6 +20,7 @@ public class LockCleanerJob implements Job, InterruptableJob {
log.debug("LockCleaner is executing now.");
final Instant d = Instant.now();
final long ts = d.toEpochMilli();
@NonNull
final JdbcConnectionPool mpool = (JdbcConnectionPool) context.getMergedJobDataMap().get("mdbConnection");
final String deleteMemTable = "DELETE FROM brutex.tbl_lock where btx_validity < " + (ts-5000);

View File

@ -6,10 +6,10 @@ import org.h2.jdbcx.JdbcConnectionPool;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
import jakarta.servlet.annotation.WebListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@ -187,6 +187,7 @@ public class MiscServiceServletContextListener implements ServletContextListener
}
startLockCleaner((Scheduler) context.getAttribute("scheduler"));
startLogRetention((Scheduler) context.getAttribute("scheduler"));
}
private String getLinkSQL() {
@ -262,6 +263,32 @@ public class MiscServiceServletContextListener implements ServletContextListener
}
}
private void startLogRetention(Scheduler scheduler) {
try {
if (!scheduler.checkExists(JobKey.jobKey("Retention"))) {
JobDetail job2 = JobBuilder.newJob(RetentionJob.class).withIdentity("Retention").build();
job2.getJobDataMap().put("fdbConnection", fdbpool);
SimpleTrigger t =
(SimpleTrigger)
newTrigger()
.withIdentity("Retention")
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInMinutes(60)
.repeatForever())
.startAt(
Date.from(
Instant.now()
.plus(60, ChronoUnit.MINUTES)))
.build();
scheduler.scheduleJob(job2, t);
}
} catch (SchedulerException ex) {
log.error("Could not start Retention: {}", ex.getMessage());
}
}
private void readConfiguration(ServletContext ctx) {
/* Configure ServletContext attributes using configuration object*/
EventmanagerConfiguration c = EventmanagerConfiguration.getInstance().refreshConfig();

View File

@ -0,0 +1,52 @@
package net.brutex.xservices.util;
import java.sql.*;
import java.time.Instant;
import java.util.concurrent.atomic.AtomicBoolean;
import lombok.extern.slf4j.Slf4j;
import org.h2.jdbcx.JdbcConnectionPool;
import org.quartz.*;
@Slf4j
@DisallowConcurrentExecution
public class RetentionJob implements Job, InterruptableJob {
private final AtomicBoolean isInterrupted = new AtomicBoolean(false);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.debug("Retention job is executing now for alf event logs.");
final Instant d = Instant.now();
final long ts = d.toEpochMilli();
final JdbcConnectionPool fpool = (JdbcConnectionPool) context.getMergedJobDataMap().get("fdbConnection");
final EventmanagerConfiguration conf = (EventmanagerConfiguration) context.getMergedJobDataMap().get(EventmanagerConfiguration.KEY);
final String deleteMemTable = "DELETE FROM brutex.tbl_events_all where btx_timestamp < " + (ts-(conf.getLogMaxAge()*60*60*1000));
try (Connection mcon = fpool.getConnection()) {
Statement stmt = mcon.createStatement();
stmt.execute(deleteMemTable);
int count = stmt.getUpdateCount();
log.debug("Retention job deleted '{}' stale locks.", count);
} catch (SQLException e) {
log.error("Exception in SQL execution: {}", e.getMessage());
throw new JobExecutionException(e);
}
}
/**
* <p>
* Called by the <code>{@link Scheduler}</code> when a user
* interrupts the <code>Job</code>.
* </p>
*
* @throws UnableToInterruptJobException if there is an exception while interrupting the job.
*/
@Override
public synchronized void interrupt() throws UnableToInterruptJobException {
isInterrupted.set(true);
log.warn("Retention job received an interrupt.");
Thread.currentThread().interrupt();
}
}

View File

@ -19,9 +19,9 @@ package net.brutex.xservices.util.cache;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -21,8 +21,8 @@ import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.ObjectFactory;

View File

@ -26,10 +26,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.ItemListType;
@ -46,6 +42,9 @@ import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.access.exception.CacheException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
/**
* @author Brian Rosenberger, bru(at)brutex.de

View File

@ -15,9 +15,9 @@ g * Copyright 2010 Brian Rosenberger (Brutex Network)
*/
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import net.brutex.xservices.types.CompressionType;
import net.brutex.xservices.types.ReturnCode;

View File

@ -21,11 +21,10 @@ import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.datatype.XMLGregorianCalendar;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import net.brutex.xservices.types.DateFormatType;
import net.brutex.xservices.types.DateInfoExtendedType;

View File

@ -16,10 +16,10 @@
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import net.brutex.xservices.types.HostConnection;
import net.brutex.xservices.types.ReturnCode;

View File

@ -18,10 +18,10 @@ package net.brutex.xservices.ws;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import org.apache.cxf.annotations.WSDLDocumentation;
import org.apache.cxf.annotations.WSDLDocumentationCollection;

View File

@ -18,10 +18,10 @@ package net.brutex.xservices.ws;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import net.brutex.xservices.types.ScheduledJob;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -15,10 +15,10 @@
*/
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import net.brutex.xservices.types.HostConnection;
import net.brutex.xservices.types.MailMimeType;

View File

@ -15,10 +15,10 @@
*/
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.jws.soap.SOAPBinding;
import net.brutex.xservices.types.HostConnection;
import net.brutex.xservices.types.HostinfoType;

View File

@ -1,218 +0,0 @@
/*
* Copyright 2017 Brian Rosenberger (Brutex Network)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.brutex.xservices.ws;
import java.util.GregorianCalendar;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlElement;
import org.apache.cxf.annotations.WSDLDocumentation;
import net.brutex.mgmt.api.xml.AnyEntity;
import net.brutex.mgmt.api.xml.Customer;
import net.brutex.mgmt.api.xml.Project;
import net.brutex.mgmt.api.xml.TimesheetEntry;
import net.brutex.mgmt.api.xml.TimesheetFilter;
import net.brutex.mgmt.api.xml.User;
import net.brutex.xservices.types.ant.AttachmentType;
import net.brutex.xservices.util.BrutexNamespaces;
/**
* OpenAir proxy services
* @author Brian Rosenberger
* @since 20160531
*
*/
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
public interface OpenAirProxyService {
public static final String SERVICE_NAME = "OpenAirProxyService";
final String OPERATION_GETTIMEENTRIES = "getTimeentries";
final String OPERATION_GETEXCELTIMESHEET = "getExcelTimesheet";
final String OPERATION_GETEXCELTIMESHEET2 = "getExcelTimesheet2";
final String OPERATION_GETPROJECTBYEXTERNALID = "getProjectsByExternalId";
final String OPERATION_GETPROJECTBYOPPID = "getProjectsByOppId";
final String OPERATION_GETCUSTOMERBYID = "getCustomerById";
final String OPERATION_GETUSERBYID = "getUserById";
final String OPERATION_GETUSERBYUSERNAME = "getUserByUsername";
final String OPERATION_GETANYOBJECT = "getAnyObject";
final String OPERATION_GETUPDATEDCOMPANIES = "getUpdatedCustomer";
final String OPERATION_GETUPDATEDPROJECTS = "getUpdatedProject";
final String PARAM_PROJECTID = "oa_projectid";
final String PARAM_CUSTOMERID = "oa_customerid";
final String PARAM_USERID = "oa_userid";
final String PARAM_USERNAME = "oa_username";
final String PARAM_TEMPLATE ="template";
final String PARAM_STARTDATE = "startdate";
final String PARAM_ENDDATE = "enddate";
final String PARAM_ENTRYLIST = "timeentries";
final String PARAM_EXTERNALID = "externalid";
final String PARAM_OPPID = "oppid";
final String PARAM_INCLUDENONBILLABLE = "includeNonBillable";
final String PARAM_OBJECTTYPE = "objecttype";
final String PARAM_QUERIES = "queries";
final String PARAM_DATE = "datetime";
final String PARAM_OFFSET = "offset_minutes";
final String PARAM_TIMESHEETSTATUS = "timesheetstatus";
/**
* Get a list of time entries.
*
* @return List of time entries
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETTIMEENTRIES)
@WSDLDocumentation(value="Get list of time entries")
public abstract List<TimesheetEntry> getTimeEntryList(
@WebParam(name=PARAM_PROJECTID) int oa_projectid,
@WebParam(name=PARAM_CUSTOMERID) int oa_customerid,
@WebParam(name=PARAM_USERID) int oa_userid,
@WebParam(name=PARAM_STARTDATE) GregorianCalendar startdate,
@WebParam(name=PARAM_ENDDATE) GregorianCalendar enddate,
@WebParam(name=PARAM_INCLUDENONBILLABLE) boolean includeNonBillable,
@WebParam(name=PARAM_TIMESHEETSTATUS) java.util.List<TimesheetFilter.TimesheetFilterType> filter)
throws XServicesFault;
/**
* Get an excel time sheet file.
*
* @return List of time entries
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETEXCELTIMESHEET)
@WSDLDocumentation(value="Get an excel time sheet file.")
public abstract AttachmentType getExcelTimesheet(
@WebParam(name=PARAM_PROJECTID) int oa_projectid,
@WebParam(name=PARAM_CUSTOMERID) int oa_customerid,
@WebParam(name=PARAM_USERID) int oa_userid,
@WebParam(name=PARAM_STARTDATE) GregorianCalendar startdate,
@WebParam(name=PARAM_ENDDATE) GregorianCalendar enddate,
@WebParam(name=PARAM_INCLUDENONBILLABLE) boolean includeNonBillable,
@WebParam(name=PARAM_TIMESHEETSTATUS) java.util.List<TimesheetFilter.TimesheetFilterType> filter,
@WebParam(name=PARAM_TEMPLATE) AttachmentType templatefile) throws XServicesFault;
/**
* Get an excel time sheet file.
*
* @return List of time entries
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETEXCELTIMESHEET2)
@WSDLDocumentation(value="Get an excel time sheet file.")
public abstract AttachmentType getExcelTimesheet2(
@WebParam(name=PARAM_ENTRYLIST) List<TimesheetEntry> entries,
@WebParam(name=PARAM_INCLUDENONBILLABLE) boolean includeNonBillable,
@WebParam(name=PARAM_TEMPLATE) AttachmentType templatefile) throws XServicesFault;
/**
* Get a project from External Id
*
* @return List of projects with this ExternalId
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETPROJECTBYEXTERNALID)
@WSDLDocumentation(value="Get a project from External Id")
public abstract List<Project> getProjectsByExternalId(
@WebParam(name=PARAM_EXTERNALID) String externalid) throws XServicesFault;
/**
* Get a project from Opportunity
*
* @return List of projects with this Opportunity
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETPROJECTBYOPPID)
@WSDLDocumentation(value="Get a project from Opportunity Id")
public abstract List<Project> getProjectsByOppId(
@WebParam(name=PARAM_OPPID) String oppid) throws XServicesFault;
/**
* Get a customer by its ID
*
* @return Customer object
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETCUSTOMERBYID)
@WSDLDocumentation(value="Get a customer by its Id")
public abstract Customer getCustomerById(
@WebParam(name=PARAM_CUSTOMERID) int customerid) throws XServicesFault;
/**
* Get a user record by its ID
*
* @return user object
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETUSERBYID)
@WSDLDocumentation(value="Get a user by its Id")
public abstract User getUserById(
@WebParam(name=PARAM_USERID) int userid) throws XServicesFault;
/**
* Get a user record by its username
*
* @return user object
* @throws XServicesFault
*/
@WebMethod(operationName=OPERATION_GETUSERBYUSERNAME)
@WSDLDocumentation(value="Get a user by its username")
public abstract User getUserByUsername(
@WebParam(name=PARAM_USERNAME) String username) throws XServicesFault;
@WebMethod(operationName=OPERATION_GETANYOBJECT)
@WSDLDocumentation(value="Get any Object by Query")
public abstract List<AnyEntity> getAnyObject(
@WebParam(name=PARAM_OBJECTTYPE) @XmlElement(required=true) String objecttype,
@WebParam(name=PARAM_QUERIES) List<QueryParameter> queries) throws XServicesFault;
@WebMethod(operationName=OPERATION_GETUPDATEDCOMPANIES)
@WSDLDocumentation(value="Get updated customers")
public abstract List<Customer> getUpdatedCustomer(
@WebParam(name=PARAM_DATE) @XmlElement(required=true) GregorianCalendar date,
@WebParam(name=PARAM_OFFSET) @XmlElement(required=true) int offset)
throws XServicesFault;
@WebMethod(operationName=OPERATION_GETUPDATEDPROJECTS)
@WSDLDocumentation(value="Get updated projects")
public abstract List<Project> getUpdatedProjects(
@WebParam(name=PARAM_DATE) @XmlElement(required=true) GregorianCalendar date,
@WebParam(name=PARAM_OFFSET) @XmlElement(required=true) int offset)
throws XServicesFault;
public class QueryParameter {
@XmlElement(required=true)
public String field;
@XmlElement(required=true)
public String value;
}
}

View File

@ -16,9 +16,9 @@
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import net.brutex.xservices.types.TargetNodeType;
import net.brutex.xservices.types.ant.AttachmentType;
import net.brutex.xservices.types.ant.CollectionType;

View File

@ -16,10 +16,10 @@
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import net.brutex.xservices.types.StringMatchType;
import net.brutex.xservices.types.StringReplaceType;

View File

@ -17,13 +17,13 @@
package net.brutex.xservices.ws;
import java.util.GregorianCalendar;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.WebFault;
import jakarta.xml.ws.WebFault;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -16,10 +16,10 @@
package net.brutex.xservices.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import jakarta.xml.bind.annotation.XmlElement;
import net.brutex.xservices.types.AttributeType;
import net.brutex.xservices.types.NamespaceListType;

View File

@ -16,9 +16,9 @@
package net.brutex.xservices.ws.impl;
import java.io.File;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import net.brutex.xservices.types.CompressionType;
import net.brutex.xservices.types.ReturnCode;
import net.brutex.xservices.types.ant.ArchiveResource;

View File

@ -24,7 +24,7 @@ import java.util.GregorianCalendar;
import java.util.List;
import java.util.TimeZone;
import javax.jws.WebService;
import jakarta.jws.WebService;
import net.brutex.xservices.types.DateFormatType;
import net.brutex.xservices.types.DateInfoExtendedType;
import net.brutex.xservices.types.DateInfoType;

View File

@ -17,9 +17,9 @@
package net.brutex.xservices.ws.impl;
import java.io.File;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import net.brutex.xservices.types.HostConnection;
import net.brutex.xservices.types.ReturnCode;
import net.brutex.xservices.util.BrutexNamespaces;

View File

@ -22,10 +22,10 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.activation.DataHandler;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import jakarta.activation.DataHandler;
import jakarta.jws.WebMethod;
import jakarta.jws.WebParam;
import jakarta.jws.WebService;
import net.brutex.xservices.types.ReplacePattern;
import net.brutex.xservices.types.ReturnCode;

View File

@ -24,7 +24,7 @@ import java.util.Set;
import java.util.TimeZone;
import java.util.UUID;
import javax.jws.WebService;
import jakarta.jws.WebService;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

View File

@ -16,7 +16,7 @@
package net.brutex.xservices.ws.impl;
import javax.jws.WebService;
import jakarta.jws.WebService;
import net.brutex.xservices.types.HostConnection;
import net.brutex.xservices.types.MailMimeType;

View File

@ -18,7 +18,6 @@ package net.brutex.xservices.ws.impl;
import static org.quartz.TriggerBuilder.newTrigger;
import java.io.StringReader;
import java.io.StringWriter;
import java.math.BigInteger;
import java.sql.*;
@ -26,15 +25,15 @@ import java.time.Instant;
import java.util.*;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;
import javax.annotation.Resource;
import javax.jws.WebService;
import javax.servlet.ServletContext;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import jakarta.annotation.Resource;
import jakarta.jws.WebService;
import jakarta.servlet.ServletContext;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.ws.WebServiceContext;
import jakarta.xml.ws.handler.MessageContext;
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.*;
import net.brutex.xservices.types.alfevent.ALFEventResponseType;

View File

@ -1,492 +0,0 @@
/*
* Copyright 2017 Brian Rosenberger (Brutex Network)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.brutex.xservices.ws.impl;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.activation.DataHandler;
import javax.jws.WebParam;
import javax.jws.WebService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.exception.CacheException;
import net.brutex.DocBuilder.DocBuilder;
import net.brutex.mgmt.api.generator.JITCompiler;
import net.brutex.mgmt.api.xml.AnyEntity;
import net.brutex.mgmt.api.xml.Customer;
import net.brutex.mgmt.api.xml.DateFilter;
import net.brutex.mgmt.api.xml.Project;
import net.brutex.mgmt.api.xml.Query;
import net.brutex.mgmt.api.xml.Query.BOOL;
import net.brutex.mgmt.api.xml.QueryEntity;
import net.brutex.mgmt.api.xml.StringEntity;
import net.brutex.mgmt.api.xml.TimesheetEntry;
import net.brutex.mgmt.api.xml.TimesheetFilter;
import net.brutex.mgmt.api.xml.User;
import net.brutex.mgmt.openair.OpenAirRestConnection;
import net.brutex.xservices.types.ant.AttachmentType;
import net.brutex.xservices.util.BrutexNamespaces;
import net.brutex.xservices.ws.OpenAirProxyService;
import net.brutex.xservices.ws.XServicesFault;
/**
* @author Brian Rosenberger
*
*/
@Slf4j
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.OpenAirProxyService", serviceName = OpenAirProxyService.SERVICE_NAME)
public class OpenAirProxyServiceImpl implements OpenAirProxyService {
/*
* (non-Javadoc)
*
* @see
* net.brutex.xservices.ws.OpenAirProxyService#getTimeEntryList(java.lang.
* String)
*/
@Override
public List<TimesheetEntry> getTimeEntryList(int oa_projectid, int oa_customerid, int oa_userid,
GregorianCalendar startdate, GregorianCalendar enddate, boolean includeNonBillable, List<TimesheetFilter.TimesheetFilterType> filter) throws XServicesFault {
return getTimeEntries(oa_projectid, oa_customerid, oa_userid, startdate, enddate, includeNonBillable, filter);
}
private List<TimesheetEntry> getTimeEntries(final int oa_projectid, final int oa_customerid, final int oa_userid,
final GregorianCalendar fromDate, final GregorianCalendar toDate, final boolean includeNonBillable, List<TimesheetFilter.TimesheetFilterType> filter)
throws XServicesFault {
List<TimesheetEntry> resultlist = new ArrayList<TimesheetEntry>();
if( filter != null && filter.size()>0) {
for( TimesheetFilter.TimesheetFilterType f : filter) {
resultlist.addAll(
getTimeEntriesRAW(oa_projectid, oa_customerid, oa_userid, fromDate, toDate, includeNonBillable, f)
);
}
} else {
resultlist = getTimeEntriesRAW(oa_projectid, oa_customerid, oa_userid, fromDate, toDate, includeNonBillable, null);
}
return resultlist;
}
private List<TimesheetEntry> getTimeEntriesRAW(final int oa_projectid, final int oa_customerid, final int oa_userid,
final GregorianCalendar fromDate, final GregorianCalendar toDate, final boolean includeNonBillable, TimesheetFilter.TimesheetFilterType filter)
throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Query query = new Query(TimesheetEntry.class);
if (oa_projectid > 0) {
query.addQuery(new QueryEntity("projectid", new StringEntity(String.valueOf(oa_projectid))), BOOL.AND);
}
if (oa_customerid > 0) {
query.addQuery(new QueryEntity("customerid", new StringEntity(String.valueOf(oa_customerid))), BOOL.AND);
}
if (oa_userid > 0) {
query.addQuery(new QueryEntity("userid", new StringEntity(String.valueOf(oa_userid))), BOOL.AND);
}
if (fromDate != null) {
//adjust
fromDate.add(GregorianCalendar.DAY_OF_MONTH, -1);
DateFilter date = new DateFilter("date");
date.setStartdate(fromDate);
if (toDate != null) {
toDate.add(GregorianCalendar.DAY_OF_MONTH, 1);
date.setEnddate(toDate);
}
query.addFilter(date);
}
if (filter != null) {
query.addFilter(new TimesheetFilter(filter));
}
List<TimesheetEntry> timesheets = (List<TimesheetEntry>) con.getEntitiesByQuery(query);
if (!includeNonBillable)
timesheets = filterBillableOnly(timesheets);
return timesheets;
/*
* Query q = new Query(Project.class);
*
* //QueryEntity qe = new QueryEntity("Portfolio__c", new
* StringEntity("Serena")); QueryEntity qe = new QueryEntity("id", new
* StringEntity("19738")); //DWP Bank QueryEntity qe2 = new
* QueryEntity("id", new StringEntity("19737")); //PNW //QueryEntity qe2
* = new QueryEntity("customer_name", new StringEntity(
* "Gerencia Informatica Seguridad Social (GISS)"));
*
* q.addQuery(qe, Query.BOOL.OR); q.addQuery(qe2, Query.BOOL.OR);
*
* List<Project> list = (List<Project>) con.getEntitiesByQuery(q, true);
*
* /*for (Project p : list) {
* Logger.getLogger("TestMain").debug(p.getName());
* System.out.println(p.toString()); }
*/
// User user = con.getUserByLogin("brosenberger");
// System.out.println(user.toString());
}
@Override
public AttachmentType getExcelTimesheet(int oa_projectid, int oa_customerid, int oa_userid,
GregorianCalendar startdate, GregorianCalendar enddate, boolean includeNonBillable, List<TimesheetFilter.TimesheetFilterType> filter, AttachmentType template)
throws XServicesFault {
List<TimesheetEntry> list = getTimeEntries(oa_projectid, oa_customerid, oa_userid, startdate, enddate,
includeNonBillable, filter);
AttachmentType t = getExcelTimesheet2(list, includeNonBillable, template);
/*
* Try to set a time sheet name:
* SignOff <From> - <To> <Project> - <Id> <User>.xlxs
*
*/
String filename = "SignOff";
if(startdate!=null) {
filename += "_";
filename += startdate.toZonedDateTime()
.format( DateTimeFormatter.ofPattern( "uuuu-MM-dd" ) );
}
if(enddate!=null) {
filename += "-";
filename += enddate.toZonedDateTime()
.format( DateTimeFormatter.ofPattern( "uuuu-MM-dd" ) );
}
if(oa_projectid > 0) {
//Project spezifiziert
filename += "_";
if(list.size()>0) {
TimesheetEntry anyentry = list.get(0);
filename += anyentry.getProject().getName();
} else {
filename +="Emtpy";
}
} else {
//Mehrere Projekte, gibt es vielleicht nur eins?
int i = 0;
Set<String> namen = new HashSet<String>();
for (TimesheetEntry entry : list) {
namen.add( entry.getProject().getId() );
}
if(namen.size()>1) {
filename += "_Multiple_Projects";
} else {
if(list.size()>0) {
TimesheetEntry anyentry = list.get(0);
filename += anyentry.getProject().getName();
} else {
filename +="_Emtpy";
}
}
}
//Username
if(oa_userid>0) {
filename += "_";
if(list.size()>0) {
TimesheetEntry anyentry = list.get(0);
filename += anyentry.getUser().getName();
}
}
filename = filename.replace(" ","_");
filename = filename.replaceAll("[^A-Za-z0-9_\\-]", "");
filename += ".xlsx";
t.setFilename(filename);
return t;
}
@Override
public AttachmentType getExcelTimesheet2(List<TimesheetEntry> entries, boolean includeNonBillable,
AttachmentType templatefile) throws XServicesFault {
DocBuilder builder = new DocBuilder();
DataHandler dh;
if (templatefile != null) {
dh = builder.createTimesheet(entries, templatefile.getContent());
} else {
dh = builder.createTimesheet(entries, null);
}
AttachmentType t = new AttachmentType();
t.setContent(dh);
t.setFilename("timesheet.xlsx");
return t;
}
@Override
public List<Project> getProjectsByExternalId(String externalid) throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Query query = new Query(Project.class);
if (externalid.length() > 0) {
query.addQuery(new QueryEntity("externalid", new StringEntity(externalid)), BOOL.AND);
}
List<Project> projects = (List<Project>) con.getEntitiesByQuery(query);
return projects;
}
/*
* (non-Javadoc)
*
* @see
* net.brutex.xservices.ws.OpenAirProxyService#getProjectsByOppId(java.lang.
* String)
*/
@Override
public List<Project> getProjectsByOppId(String oppid) throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Query query = new Query(Project.class);
if (oppid.length() > 0) {
query.addQuery(new QueryEntity("opportunity_num__c", new StringEntity(oppid)), BOOL.OR);
query.addQuery(new QueryEntity("SAP_Oracle_Number__c", new StringEntity(oppid)), BOOL.OR);
}
List<Project> projects = (List<Project>) con.getEntitiesByQuery(query);
return projects;
}
@Override
public Customer getCustomerById(int customerid) throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Query query = new Query(Customer.class);
if (customerid > 0) {
query.addQuery(new QueryEntity("id", new StringEntity(String.valueOf(customerid))), BOOL.AND);
}
List<Customer> customer = (List<Customer>) con.getEntitiesByQuery(query);
if (customer.isEmpty()) {
return null;
} else {
return customer.get(0);
}
}
/* (non-Javadoc)
* @see net.brutex.xservices.ws.OpenAirProxyService#getUpdatedCustomer(java.util.GregorianCalendar)
*/
@Override
public List<Customer> getUpdatedCustomer(GregorianCalendar date, int offset) throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Query query = new Query(Customer.class);
//query.addQuery("Address_Country", new StringEntity(search), BOOL.AND);
query.addQuery("active", new StringEntity("1"), BOOL.AND);
DateFilter datefilter = new DateFilter("updated");
date.add(GregorianCalendar.MINUTE, -1*offset);
datefilter.setStartdate(date);
query.addFilter(datefilter);
List<Customer> customer = (List<Customer>) con.getEntitiesByQuery(query);
if (customer.isEmpty()) {
return null;
} else {
return customer;
}
}
@Override
public List<Project> getUpdatedProjects(GregorianCalendar date, int offset) throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Query query = new Query(Project.class);
//query.addQuery("Address_Country", new StringEntity(search), BOOL.AND);
query.addQuery("Stage", new StringEntity("3"), BOOL.AND);
DateFilter datefilter = new DateFilter("updated");
date.add(GregorianCalendar.MINUTE, -1*offset);
datefilter.setStartdate(date);
query.addFilter(datefilter);
List<Project> project = (List<Project>) con.getEntitiesByQuery(query);
if (project.isEmpty()) {
return null;
} else {
return project;
}
}
@Override
public User getUserById(int userid) throws XServicesFault {
Query query = new Query(User.class);
if (userid > 0) {
query.addQuery(new QueryEntity("id", new StringEntity(String.valueOf(userid))), BOOL.AND);
} else {
return null;
}
return getUserByQuery(query);
}
@Override
public User getUserByUsername(String username) throws XServicesFault {
Query query = new Query(User.class);
query.addQuery(new QueryEntity("nickname", new StringEntity(username)), BOOL.AND);
return getUserByQuery(query);
}
@Override
public List<AnyEntity> getAnyObject(String objecttype, List<QueryParameter> queries) throws XServicesFault {
JITCompiler.load();
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
Class clazz;
try {
Class.forName("net.brutex.mgmt.api.xml.EntityType");
Class.forName("net.brutex.mgmt.api.xml.AbstractEntity");
clazz = Class.forName("net.brutex.mgmt.api.xml."+objecttype);
} catch (ClassNotFoundException ex ) {
throw new XServicesFault(ex);
}
Query query = new Query(clazz);
for(QueryParameter p : queries) {
query.addQuery(new QueryEntity(p.field, new StringEntity(p.value)), BOOL.AND);
}
List<AnyEntity> anyentity = (List<AnyEntity>) con.getEntitiesByQuery(query);
if (anyentity.isEmpty()) {
return null;
} else {
return anyentity;
}
}
private User getUserByQuery(Query query) throws XServicesFault {
final OpenAirRestConnection con = getOpenAirConnection();
if (con == null) {
throw new XServicesFault("Could not establish Open Air connection.");
}
User user = (User) con.getSingleEntityByQuery(query);
return user;
}
List<TimesheetEntry> filterBillableOnly(List<TimesheetEntry> timesheets) {
List<TimesheetEntry> list = new ArrayList<TimesheetEntry>();
for (TimesheetEntry entry : timesheets) {
if (entry.getProjecttask().isBillable()) {
list.add(entry);
}
}
return list;
}
private OpenAirRestConnection getOpenAirConnection() {
/*
* get details from configuration file
*/
final PropertiesConfiguration props;
try {
final String config = "../openair.properties";
log.debug("Loading Open Air connection details from " + this.getClass().getClassLoader().getResource("/")
+ config);
final URL configloc = this.getClass().getClassLoader().getResource(config);
props = new PropertiesConfiguration();
props.read( new InputStreamReader( new BufferedInputStream( configloc.openStream() )));
final String user = props.getString("user");
final String password = props.getString("password");
final String company = props.getString("company");
final String apikey = props.getString("apikey", "_PUT_HERE_");
final String namespace = props.getString("namespace");
final OpenAirRestConnection con;
con = new OpenAirRestConnection(JCS.getInstance("OACache"), company, user, password);
return con;
} catch (CacheException | ConfigurationException | IOException e) {
log.error(e.getMessage());
e.printStackTrace();
} finally {
}
return null;
}
}

View File

@ -15,7 +15,7 @@
*/
package net.brutex.xservices.ws.impl;
import javax.jws.WebService;
import jakarta.jws.WebService;
import net.brutex.xservices.types.TargetNodeType;
import net.brutex.xservices.types.ant.AttachmentType;

View File

@ -22,7 +22,7 @@ import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.jws.WebService;
import jakarta.jws.WebService;
import net.brutex.xservices.types.StringMatchType;
import net.brutex.xservices.types.StringReplaceType;

View File

@ -26,7 +26,7 @@ import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.util.Iterator;
import java.util.List;
import javax.jws.WebService;
import jakarta.jws.WebService;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;

View File

@ -1,14 +1,10 @@
package net.brutex.xservices.ws.rs;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.Response;
import java.io.File;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
@Path("/CVSService/")
@Produces({"application/xml", "application/json"})

View File

@ -4,13 +4,11 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
import java.util.List;
import java.util.StringTokenizer;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.types.scm.AttributeType;
@ -24,7 +22,6 @@ import net.brutex.xservices.types.scm.TagListType;
import net.brutex.xservices.types.scmfindings.FindingsListType;
import net.brutex.xservices.util.BasicCVSListener;
import net.brutex.xservices.util.CVSClient;
import net.brutex.xservices.util.CVSRoot;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.JCS;
@ -33,15 +30,12 @@ import org.apache.commons.jcs.access.exception.CacheException;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.command.CommandAbortedException;
import org.netbeans.lib.cvsclient.command.CommandException;
import org.netbeans.lib.cvsclient.command.FileInfoContainer;
import org.netbeans.lib.cvsclient.command.PipedFileInformation;
import org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand;
import org.netbeans.lib.cvsclient.command.checkout.ModuleListInformation;
import org.netbeans.lib.cvsclient.command.log.LogInformation;
import org.netbeans.lib.cvsclient.command.log.LogInformation.Revision;
import org.netbeans.lib.cvsclient.command.log.RlogCommand;
import org.netbeans.lib.cvsclient.connection.AuthenticationException;
import org.netbeans.lib.cvsclient.event.EventManager;
import org.netbeans.lib.cvsclient.event.FileInfoEvent;
@Slf4j

View File

@ -18,15 +18,15 @@ package net.brutex.xservices.ws.rs;
import java.io.File;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriInfo;
import org.apache.commons.jcs.access.exception.CacheException;
@ -52,7 +52,7 @@ public abstract interface DIMCMInfo {
* @param paramHttpHeaders the param http headers
* @param uriInfo request url info
* @param directory The directory to list.
* @param includeDirectories Whether or not to include directories in the listing. Default is true.
* @param recursive Whether or not to include directories in the listing. Default is true.
* @param includeFiles Whether or not to include files in the listing. Default is true.
* @param depth Include subdirectories down to a given depth. Default is 1.
* @param search Additional "Glob search pattern" for the file/ directory name. I.e. '*.log'
@ -70,7 +70,7 @@ public abstract interface DIMCMInfo {
@QueryParam("projSpec") String project,
@QueryParam("directory") String directory,
@QueryParam("recursive") @DefaultValue("false") boolean recursive,
@QueryParam("includeFiles") @DefaultValue("1") boolean includeFiles,
@QueryParam("includeFiles") @DefaultValue("true") boolean includeFiles,
@QueryParam("depth") @DefaultValue("1") int depth,
@QueryParam("search") String search,
@QueryParam("itemsPerPage") @DefaultValue("50") int itemsPerPage,

View File

@ -29,9 +29,9 @@ import java.nio.file.Path;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration2.PropertiesConfiguration;

View File

@ -18,15 +18,15 @@ package net.brutex.xservices.ws.rs;
import java.io.File;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriInfo;
import net.brutex.xservices.ws.XServicesFault;
@ -65,13 +65,13 @@ public abstract interface FileInfo {
@Context HttpHeaders paramHttpHeaders,
@Context UriInfo uriInfo,
@QueryParam("directory") String directory,
@QueryParam("includeDirectories") @DefaultValue("0") boolean includeDirectories,
@QueryParam("includeFiles") @DefaultValue("1") boolean includeFiles,
@QueryParam("includeDirectories") @DefaultValue("false") boolean includeDirectories,
@QueryParam("includeFiles") @DefaultValue("true") boolean includeFiles,
@QueryParam("depth") @DefaultValue("1") int depth,
@QueryParam("search") String search,
@QueryParam("itemsPerPage") @DefaultValue("50") int itemsPerPage,
@QueryParam("page") @DefaultValue("1") int page,
@QueryParam("usecache") @DefaultValue("1") boolean useCache);
@QueryParam("usecache") @DefaultValue("true") boolean useCache);
@GET
@Path("getFile/")

View File

@ -38,14 +38,14 @@ import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.ws.rs.NotAuthorizedException;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
import jakarta.ws.rs.NotAuthorizedException;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.GenericEntity;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.StreamingOutput;
import jakarta.ws.rs.core.UriInfo;
import lombok.extern.slf4j.Slf4j;
import net.brutex.xservices.security.DirectoryPermission;

View File

@ -16,8 +16,8 @@
package net.brutex.xservices.ws.rs;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="FileList")
public class FileListType

View File

@ -1,49 +0,0 @@
/*
* Copyright 2013 Brian Rosenberger (Brutex Network)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.brutex.xservices.ws.rs;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
/**
* The OpenAirInfoService Rest Service.
*
* @author Brian Rosenberger, bru(at)brutex.de
*/
@Path("/OpenAirInfoService/")
@Produces({ "text/xml" })
public abstract interface OpenAirInfoService {
public final static String BASE_PATH = "/OpenAirInfoService/";
public final static String SERVICE_NAME = "OpenAirInfoService";
@GET
@Path("getCompanies/")
//@Produces("application/octet-stream")
public abstract Response getCompanies(
@Context HttpHeaders paramHttpHeaders,
@QueryParam("search") String search);
}

View File

@ -1,87 +0,0 @@
package net.brutex.xservices.ws.rs;
import java.net.URL;
import java.util.GregorianCalendar;
import java.util.List;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.exception.CacheException;
import net.brutex.mgmt.api.xml.Customer;
import net.brutex.mgmt.api.xml.DateFilter;
import net.brutex.mgmt.api.xml.Query;
import net.brutex.mgmt.api.xml.Query.BOOL;
import net.brutex.mgmt.api.xml.StringEntity;
import net.brutex.mgmt.openair.OpenAirRestConnection;
@Slf4j
public class OpenAirInfoServiceImpl implements OpenAirInfoService {
@Override
public Response getCompanies(HttpHeaders paramHttpHeaders, String search) {
OpenAirRestConnection con = getOpenAirConnection();
Query query = new Query(Customer.class);
query.addQuery("Address_Country", new StringEntity(search), BOOL.AND);
query.addQuery("active", new StringEntity("1"), BOOL.AND);
DateFilter datefilter = new DateFilter("updated");
GregorianCalendar date = new GregorianCalendar();
date.add(GregorianCalendar.MINUTE, -5);
datefilter.setStartdate(date);
query.addFilter(datefilter);
//query.addQuery("CustomerAccountCode", new StringEntity(search), BOOL.OR);
List<Customer> resultlist = (List<Customer>) con.getEntitiesByQuery(query);
GenericEntity generic = new GenericEntity<List<Customer>>(resultlist) {};
Response response = Response.ok(generic).build();
return response;
}
private OpenAirRestConnection getOpenAirConnection() {
/*
* get details from configuration file
*/
Configurations configs = new Configurations();
final PropertiesConfiguration props;
try {
final String config = "../openair.properties";
log.debug("Loading Open Air connection details from '{}'.", this.getClass().getClassLoader().getResource("/")
+ config);
final URL configloc = this.getClass().getClassLoader().getResource(config);
props = configs.properties(configloc);
final String user = props.getString("user");
final String password = props.getString("password");
final String company = props.getString("company");
final String apikey = props.getString("apikey", "9x7G49ENkLCJ81i9XZJU");
final String namespace = props.getString("namespace");
final OpenAirRestConnection con;
con = new OpenAirRestConnection(JCS.getInstance("FileCache"), company, user, password);
return con;
} catch (CacheException | ConfigurationException e) {
log.error(e.getMessage());
e.printStackTrace();
} finally {
}
return null;
}
}

View File

@ -7,7 +7,7 @@ jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory
# AVAILABLE AUXILIARY CACHES
jcs.auxiliary.DC=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=${user.dir}/jcs_swap
jcs.auxiliary.DC.attributes.DiskPath=${user.dir}/.jcs_swap
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000000
jcs.auxiliary.DC.attributes.MaxKeySize=1000000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000

View File

@ -9,7 +9,7 @@ org.slf4j.simpleLogger.defaultLogLevel=warn
# Logging detail level for a SimpleLogger instance named "xxxxx".
# Must be one of ("trace", "debug", "info", "warn", or "error").
# If not specified, the default logging detail level is used.
org.slf4j.simpleLogger.log.net.brutex.xservices=info
org.slf4j.simpleLogger.log.net.brutex.xservices=debug
# Set to true if you want the current date and time to be included in output messages.
# Default is false, and will output the number of milliseconds elapsed since startup.

View File

@ -3,13 +3,14 @@
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:endpoint id="archiveservice"
implementor="net.brutex.xservices.ws.impl.ArchiveServiceImpl" address="/ArchiveService">
</jaxws:endpoint>
@ -82,9 +83,6 @@
<bean id="FileInfoBean" class="net.brutex.xservices.ws.rs.FileInfoImpl" />
<jaxrs:server id="CVSInfo" address="/cvsinfo">
<jaxrs:serviceBeans>
<ref bean="CVSInfoBean" />

View File

@ -36,6 +36,11 @@ emitter_active = true
# deactivates the cleaner. Value in minutes.
cleaner_interval = 4
# EventLogCleaner retention interval, max age of logs in the tbl_events_all table. The job runs once an hour.
# Value is in hours and default is 72.
# logMaxAge = 72
logMaxAge = 72
# ALFEventFilter classes, executed in order. This can be a comma separated list of classes
# default: empty
alf_filter = net.brutex.xservices.util.EventIdTruncateFilter

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<con:soapui-project name="MiscService" resourceRoot="" soapui-version="5.5.0" abortOnError="false" runType="SEQUENTIAL" activeEnvironment="Default" id="9befe4d3-50f1-42cf-a014-7b610d0a7c7f" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="MiscServiceSoapBinding" type="wsdl" bindingName="{http://ws.xservices.brutex.net}MiscServiceSoapBinding" soapVersion="1_1" anonymous="optional" definition="http://localhost:8080/XServices/MiscService?WSDL" id="ca00c2ff-8f34-4b91-bd61-3b6aae9f9fd3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhost:8080/XServices/MiscService?WSDL"><con:part><con:url>http://localhost:8080/XServices/MiscService?WSDL</con:url><con:content><![CDATA[<wsdl:definitions name="MiscService" targetNamespace="http://ws.xservices.brutex.net" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.xservices.brutex.net" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http">
<con:soapui-project name="MiscService" resourceRoot="" soapui-version="5.5.0" abortOnError="false" runType="SEQUENTIAL" activeEnvironment="Default" id="9befe4d3-50f1-42cf-a014-7b610d0a7c7f" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="MiscServiceSoapBinding" type="wsdl" bindingName="{http://ws.xservices.brutex.net}MiscServiceSoapBinding" soapVersion="1_1" anonymous="optional" definition="http://localhost:8080/XServices/MiscService?WSDL" id="ca00c2ff-8f34-4b91-bd61-3b6aae9f9fd3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhost:8080/XServices/MiscService?WSDL"><con:part><con:url>http://localhost:8080/XServices/MiscService?WSDL</con:url><con:content><![CDATA[<wsdl:definitions name="MiscService" targetNamespace="http://ws.xservices.brutex.net" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.xservices.brutex.net" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://www.eclipse.org/alf/schema/EventBase/1">
<wsdl:types>
<xs:schema targetNamespace="http://www.eclipse.org/alf/schema/EventBase/1" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.eclipse.org/alf/schema/EventBase/1">
<xs:element name="EventNotice" type="tns:ALFEventType"/>
<xs:element name="ALFEventNoticeDoc" type="tns:ALFEventType"/>
<xs:complexType name="ALFEventType">
<xs:sequence>
<xs:element form="qualified" name="Base" type="tns:EventBaseType"/>
@ -15,7 +15,7 @@
<xs:complexType name="EventBaseType">
<xs:sequence>
<xs:element form="qualified" name="EventId" type="xs:string"/>
<xs:element form="qualified" name="Timestamp" type="xs:dateTime"/>
<xs:element form="qualified" name="Timestamp" nillable="true" type="xs:dateTime"/>
<xs:element form="qualified" name="EventType" type="xs:string"/>
<xs:element form="qualified" name="ObjectType" type="xs:string"/>
<xs:element form="qualified" name="ObjectId" type="xs:string"/>
@ -36,10 +36,31 @@
</xs:complexType>
<xs:complexType name="CredentialsType">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="ALFSecurity" type="tns:ALFSecurityType"/>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:complexType>
<xs:complexType name="ALFSecurityType">
<xs:sequence>
<xs:element form="qualified" name="UsernameToken">
<xs:complexType>
<xs:sequence>
<xs:element form="qualified" name="Username" type="xs:string"/>
<xs:element form="qualified" name="Password" type="xs:string"/>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:complexType>
</xs:element>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ALFEventWithReplyResponseType">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EmBaseType">
<xs:sequence>
<xs:element form="qualified" name="EmEventId" type="xs:string"/>
@ -52,6 +73,7 @@
<xs:element form="qualified" name="Callback" type="xs:boolean"/>
<xs:element form="qualified" name="Environment" type="xs:string"/>
<xs:element form="qualified" name="EmUser" type="tns:CredentialsType"/>
<xs:element form="qualified" minOccurs="0" name="AttemptCount" type="xs:int"/>
<xs:element form="qualified" minOccurs="0" name="EmExtension" type="tns:EmExtensionType"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="skip"/>
@ -64,16 +86,16 @@
</xs:complexType>
<xs:complexType name="ALFEventResponseType">
<xs:sequence>
<xs:any namespace="##other" processContents="lax"/>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DetailExtensionType">
<xs:complexType name="CustomExtensionType">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:complexType>
<xs:complexType name="CustomExtensionType">
<xs:complexType name="DetailExtensionType">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
</xs:sequence>
@ -85,16 +107,9 @@
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:complexType>
<xs:complexType name="ALFEventWithReplyResponseType">
<xs:sequence>
<xs:any namespace="##other" processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://ws.xservices.brutex.net" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.eclipse.org/alf/schema/EventBase/1">
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://ws.xservices.brutex.net" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://www.eclipse.org/alf/schema/EventBase/1">
<xs:import namespace="http://www.eclipse.org/alf/schema/EventBase/1"/>
<xs:element name="EventNotice" type="tns:EventNotice"/>
<xs:element name="EventNoticeResponse" type="tns:EventNoticeResponse"/>
<xs:element name="antProperty" type="tns:antProperty"/>
<xs:element name="generateUUID" type="tns:generateUUID"/>
<xs:element name="generateUUIDResponse" type="tns:generateUUIDResponse"/>
@ -135,16 +150,6 @@
<xs:element name="totalMemoryMB" type="xs:long"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EventNotice">
<xs:sequence>
<xs:element minOccurs="0" ref="ns1:EventNotice"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EventNoticeResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="ns1:ALFEventResponseType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lock">
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:string"/>
@ -218,6 +223,7 @@
<xs:element minOccurs="0" name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="mergeALFEventResponse" nillable="true" type="ns0:ALFEventResponseType"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="generateUUID">
@ -235,6 +241,9 @@
<wsdl:message name="lock">
<wsdl:part element="tns:lock" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="mergeALFEvent">
<wsdl:part element="ns1:ALFEventNoticeDoc" name="ALFEventNoticeDoc"></wsdl:part>
</wsdl:message>
<wsdl:message name="getHostinfo">
<wsdl:part element="tns:getHostinfo" name="parameters"></wsdl:part>
</wsdl:message>
@ -247,21 +256,18 @@
<wsdl:message name="getMemory">
<wsdl:part element="tns:getMemory" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="EventNotice">
<wsdl:part element="tns:EventNotice" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="XServicesFault">
<wsdl:part element="tns:XServicesFault" name="XServicesFault"></wsdl:part>
</wsdl:message>
<wsdl:message name="getHostinfoResponse">
<wsdl:part element="tns:getHostinfoResponse" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="mergeALFEventResponse">
<wsdl:part element="tns:mergeALFEventResponse" name="mergeALFEventResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="getInfo">
<wsdl:part element="tns:getInfo" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="EventNoticeResponse">
<wsdl:part element="tns:EventNoticeResponse" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="lockResponse">
<wsdl:part element="tns:lockResponse" name="parameters"></wsdl:part>
</wsdl:message>
@ -277,17 +283,17 @@
<wsdl:input message="tns:getMemory" name="getMemory"></wsdl:input>
<wsdl:output message="tns:getMemoryResponse" name="getMemoryResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="EventNotice">
<wsdl:input message="tns:EventNotice" name="EventNotice"></wsdl:input>
<wsdl:output message="tns:EventNoticeResponse" name="EventNoticeResponse"></wsdl:output>
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="lock">
<wsdl:documentation>Get a lock.</wsdl:documentation>
<wsdl:input message="tns:lock" name="lock"></wsdl:input>
<wsdl:output message="tns:lockResponse" name="lockResponse"></wsdl:output>
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="mergeALFEvent">
<wsdl:input message="tns:mergeALFEvent" name="mergeALFEvent"></wsdl:input>
<wsdl:output message="tns:mergeALFEventResponse" name="mergeALFEventResponse"></wsdl:output>
<wsdl:fault message="tns:XServicesFault" name="XServicesFault"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getInfo">
<wsdl:documentation>Get XService information.</wsdl:documentation>
<wsdl:input message="tns:getInfo" name="getInfo"></wsdl:input>
@ -324,18 +330,6 @@
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EventNotice">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="EventNotice">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="EventNoticeResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="XServicesFault">
<soap:fault name="XServicesFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="lock">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="lock">
@ -348,6 +342,18 @@
<soap:fault name="XServicesFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="mergeALFEvent">
<soap:operation soapAction="EventNotice" style="document"/>
<wsdl:input name="mergeALFEvent">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="mergeALFEventResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="XServicesFault">
<soap:fault name="XServicesFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getInfo">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="getInfo">
@ -400,49 +406,125 @@
<soapenv:Header/>
<soapenv:Body>
<ws:lock>
<!--Optional:-->
<id>${=org.apache.commons.lang.RandomStringUtils.randomNumeric(12)}</id>
<!--Optional:-->
<objectId>12345-${=org.apache.commons.lang.RandomStringUtils.randomNumeric(1)}</objectId>
</ws:lock>
</soapenv:Body>
</soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/MiscService/lock"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation id="b0374c2b-4ebd-40fe-a161-22b3b70d2617" isOneWay="false" action="" name="EventNotice" bindingOperationName="EventNotice" type="Request-Response" outputName="EventNoticeResponse" inputName="EventNotice" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call id="b5dd6db6-6931-4abd-9fb9-5e49cef8dd58" name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net" xmlns:ns="http://www.eclipse.org/alf/schema/EventBase/1">\r
<soapenv:Header/>\r
<soapenv:Body>\r
<ws:EventNotice>\r
<!--Optional:-->\r
<ns:EventNotice version="?">\r
<ns:Base>\r
<ns:EventId>${=org.apache.commons.lang.RandomStringUtils.randomNumeric(12)}</ns:EventId>\r
<!-- ${=java.time.Instant.now().truncatedTo(java.time.temporal.ChronoUnit.SECONDS)} -->
<ns:Timestamp>${=java.time.Instant.now()}</ns:Timestamp>\r
<ns:EventType>sync</ns:EventType>\r
<ns:ObjectType>User</ns:ObjectType>\r
<ns:ObjectId>ABC${=org.apache.commons.lang.RandomStringUtils.randomNumeric(1)}</ns:ObjectId>\r
<ns:Source>\r
<ns:Product>IDM</ns:Product>\r
<ns:ProductVersion>1.0</ns:ProductVersion>\r
<ns:ProductInstance>Default</ns:ProductInstance>\r
</ns:Source>\r
<ns:User>\r
<!--You may enter ANY elements at this point-->\r
</ns:User>\r
</ns:Base>\r
<!--Optional:-->\r
<ns:Detail>\r
<!--You may enter ANY elements at this point-->\r
</ns:Detail>\r
<!--Optional:-->\r
<ns:Extension>\r
<!--You may enter ANY elements at this point-->\r
</ns:Extension>\r
<!--You may enter ANY elements at this point-->\r
</ns:EventNotice>\r
</ws:EventNotice>\r
</soapenv:Body>\r
</soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/MiscService/EventNotice"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:testSuite name="Basic Call Tests" id="4f7bbdb7-7717-424b-b6d8-31bcb6834678"><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="true" maxResults="0" name="Pull WSDL" searchProperties="true" id="2048fa40-8ecb-484e-98ff-6c50df26f33b"><con:settings/><con:testStep type="httprequest" name="http://localhost:8080/XServices/MiscService?WSDL" id="9352cf68-f189-4208-99a6-e0ce6707f0ba"><con:settings/><con:config method="GET" xsi:type="con:HttpRequest" name="http://localhost:8080/XServices/MiscService?WSDL" id="8f5f3123-56eb-4369-bc5d-fad6eb8b704f" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080/XServices/MiscService?WSDL</con:endpoint><con:request/><con:assertion type="HTTP Download all resources" name="HTTP Download all resources" id="33c191fb-3b6f-40c1-ac69-466e87f3e592"/><con:assertion type="Response SLA Assertion" name="Response SLA" id="3fdfdeb5-6c77-44b7-ab0a-99c910314b0b"><con:configuration><SLA>200</SLA></con:configuration></con:assertion><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:config></con:testStep><con:properties/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="getHostInfo" searchProperties="true" id="056daaec-9b00-4484-9326-f1f83de86500"><con:settings/><con:testStep type="request" name="getHostInfo-localhost" id="c8233bd0-de27-40c6-85f0-6e99b4510525"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>getHostinfo</con:operation><con:request name="getHostInfo-localhost" id="bc8e3c7b-c849-4344-aacf-275d6f49314b"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
</soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/MiscService/lock"/><con:wsrmConfig version="1.2"/></con:call></con:operation><con:operation id="8076c474-8699-481e-8b60-3c48aacc4496" isOneWay="false" action="EventNotice" name="mergeALFEvent" bindingOperationName="mergeALFEvent" type="Request-Response" outputName="mergeALFEventResponse" inputName="mergeALFEvent" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call id="41950d0f-99a4-421c-9c57-7413ddd129ec" name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns="http://www.eclipse.org/alf/schema/EventBase/1" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ALFEventNoticeDoc version="1.0">
<Base>
<EventId>15b5fafba04143fb82a2fbfab51541a0</EventId>
<Timestamp>2023-05-15T17:15:00Z</Timestamp>
<EventType>sync</EventType>
<ObjectType>OU</ObjectType>
<ObjectId>T945GyIUhU615E/eORsiFA==</ObjectId>
<Source>
<Product>IDM</Product>
<ProductVersion>1.0</ProductVersion>
<ProductInstance>Default</ProductInstance>
</Source>
<User>
<ALFSecurity>
<UsernameToken>
<Username>idminterface</Username>
<Password>H?_{_8>8@wNWRx?ZaQ</Password>
</UsernameToken>
</ALFSecurity>
</User>
</Base>
<Extension>
<FDN>C=DE\O=SYSTEM\OU=IDM\OU=MasterData\OU=OrgUnit\CN=24054</FDN>
<data>
<transport>
<was-attr-class-name>OU</was-attr-class-name>
<was-attr-event-id>15b5fafba04143fb82a2fbfab51541a0</was-attr-event-id>
<was-attr-from-merge>true</was-attr-from-merge>
<was-attr-qualified-src-dn>C=DE\O=SYSTEM\OU=IDM\OU=MasterData\OU=OrgUnit\CN=24054</was-attr-qualified-src-dn>
<was-attr-src-dn>\IDMTEST\DE\SYSTEM\IDM\MasterData\OrgUnit\24054</was-attr-src-dn>
<was-attr-src-entry-id>7173715</was-attr-src-entry-id>
<association>
<text>T945GyIUhU615E/eORsiFA==</text>
</association>
<modify-attr>
<was-attr-attr-name>CN</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-naming>true</was-attr-naming>
<was-attr-timestamp>1668775101#1357</was-attr-timestamp>
<was-attr-type>string</was-attr-type>
<text>24054</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degOULevel</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1328</was-attr-timestamp>
<was-attr-type>int</was-attr-type>
<text>5</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degOUManager</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1344</was-attr-timestamp>
<was-attr-type>string</was-attr-type>
<text>N0165</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degOUShort</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1333</was-attr-timestamp>
<was-attr-type>string</was-attr-type>
<text>IDM NEU 31052023_1</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degStatus</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1334</was-attr-timestamp>
<was-attr-type>int</was-attr-type>
<text>1</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>GUID</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1358</was-attr-timestamp>
<was-attr-type>octet</was-attr-type>
<text>T945GyIUhU615E/eORsiFA==</text>
</value>
</add-value>
</modify-attr>
<operation-data>
<was-attr-GUID>T945GyIUhU615E/eORsiFA==</was-attr-GUID>
<was-attr-event-id>15b5fafba04143fb82a2fbfab51541a0</was-attr-event-id>
<was-attr-op>sync</was-attr-op>
<was-attr-src-dn>\IDMTEST\DE\SYSTEM\IDM\MasterData\OrgUnit\24054</was-attr-src-dn>
</operation-data>
</transport>
</data>
</Extension>
</ALFEventNoticeDoc>
</soapenv:Body>
</soapenv:Envelope>
]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="EventNotice"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:testSuite name="Basic Call Tests" id="4f7bbdb7-7717-424b-b6d8-31bcb6834678"><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="true" maxResults="0" name="Pull WSDL" searchProperties="true" id="2048fa40-8ecb-484e-98ff-6c50df26f33b"><con:settings/><con:testStep type="httprequest" name="http://localhost:8080/XServices/MiscService?WSDL" id="9352cf68-f189-4208-99a6-e0ce6707f0ba"><con:settings/><con:config method="GET" xsi:type="con:HttpRequest" name="http://localhost:8080/XServices/MiscService?WSDL" id="8f5f3123-56eb-4369-bc5d-fad6eb8b704f" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080/XServices/MiscService?WSDL</con:endpoint><con:request/><con:assertion type="HTTP Download all resources" name="HTTP Download all resources" id="33c191fb-3b6f-40c1-ac69-466e87f3e592"/><con:assertion type="Response SLA Assertion" name="Response SLA" id="3fdfdeb5-6c77-44b7-ab0a-99c910314b0b"><con:configuration><SLA>500</SLA></con:configuration></con:assertion><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:config></con:testStep><con:properties/></con:testCase><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="getHostInfo" searchProperties="true" id="056daaec-9b00-4484-9326-f1f83de86500"><con:settings/><con:testStep type="request" name="getHostInfo-localhost" id="c8233bd0-de27-40c6-85f0-6e99b4510525"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>getHostinfo</con:operation><con:request name="getHostInfo-localhost" id="bc8e3c7b-c849-4344-aacf-275d6f49314b"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
<soapenv:Header/>
<soapenv:Body>
<ws:getHostinfo>
@ -500,7 +582,7 @@
<seconds>0</seconds>
</ws:sleep>
</soapenv:Body>
</soapenv:Envelope>]]></con:request><con:assertion type="SOAP Response" id="39c23799-a7e1-4732-a5ac-6f2c81b41d65"/><con:assertion type="Schema Compliance" id="56153039-f327-4288-a175-0ed896b8b40a"><con:configuration/></con:assertion><con:assertion type="SOAP Fault Assertion" id="8691aac4-de36-4ef7-a5ff-596d8cc33eae"/><con:assertion type="Response SLA Assertion" name="Response SLA" id="ba3c1c1d-6f5e-4a16-bd8f-12ae814abc94"><con:configuration><SLA>120200</SLA></con:configuration></con:assertion><con:credentials><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508"/><con:wsrmConfig version="1.2"/></con:request></con:config></con:testStep><con:testStep type="request" name="sleep-verylong" id="234e0ca8-d4f1-4b51-932f-4c23965f8bce"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>sleep</con:operation><con:request name="sleep-verylong" id="4508e1b1-7f2b-4574-99a7-61eb61441b2e"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
</soapenv:Envelope>]]></con:request><con:assertion type="SOAP Response" id="39c23799-a7e1-4732-a5ac-6f2c81b41d65"/><con:assertion type="Schema Compliance" id="56153039-f327-4288-a175-0ed896b8b40a"><con:configuration/></con:assertion><con:assertion type="SOAP Fault Assertion" id="8691aac4-de36-4ef7-a5ff-596d8cc33eae"/><con:assertion type="Response SLA Assertion" name="Response SLA" id="ba3c1c1d-6f5e-4a16-bd8f-12ae814abc94"><con:configuration><SLA>120200</SLA></con:configuration></con:assertion><con:credentials><con:selectedAuthProfile>Basic</con:selectedAuthProfile><con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508"/><con:wsrmConfig version="1.2"/></con:request></con:config></con:testStep><con:testStep type="request" name="sleep-verylong" id="234e0ca8-d4f1-4b51-932f-4c23965f8bce"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>sleep</con:operation><con:request name="sleep-verylong" id="4508e1b1-7f2b-4574-99a7-61eb61441b2e"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">
<soapenv:Header/>
<soapenv:Body>
<ws:sleep>
@ -518,48 +600,128 @@
<soapenv:Body>\r
<ws:lock>\r
<!--Optional:-->\r
<id>${=org.apache.commons.lang.RandomStringUtils.randomNumeric(12)}</id>\r
<id>${=org.apache.commons.lang.RandomStringUtils.randomNumeric(4)}</id>\r
<!--Optional:-->\r
<objectId>12345-${=org.apache.commons.lang.RandomStringUtils.randomNumeric(1)}</objectId>\r
<objectId>12345-${=org.apache.commons.lang.RandomStringUtils.randomNumeric(2)}</objectId>\r
</ws:lock>\r
</soapenv:Body>\r
</soapenv:Envelope>]]></con:request><con:assertion type="SOAP Response" id="62a06f54-9dd6-4acd-81ee-63b20bca9cc5" name="SOAP Response"/><con:assertion type="SOAP Fault Assertion" id="1165de94-a09d-4e7e-96ff-931c950e4208" name="Not SOAP Fault"/><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/MiscService/lock"/><con:wsrmConfig version="1.2"/></con:request></con:config></con:testStep><con:loadTest id="127f0187-0a39-4543-9417-a0dfcfd1b832" name="lock-loadTest"><con:settings><con:setting id="HttpSettings@close-connections">false</con:setting></con:settings><con:threadCount>2</con:threadCount><con:startDelay>0</con:startDelay><con:sampleInterval>250</con:sampleInterval><con:calculateTPSOnTimePassed>true</con:calculateTPSOnTimePassed><con:resetStatisticsOnThreadCountChange>true</con:resetStatisticsOnThreadCountChange><con:historyLimit>-1</con:historyLimit><con:testLimit>30</con:testLimit><con:limitType>TIME</con:limitType><con:loadStrategy><con:type>Simple</con:type><con:config><testDelay>300</testDelay><randomFactor>0.5</randomFactor></con:config></con:loadStrategy><con:assertion type="Step Status" name="Step Status"/><con:maxAssertionErrors>100</con:maxAssertionErrors><con:cancelExcessiveThreads>true</con:cancelExcessiveThreads><con:strategyInterval>500</con:strategyInterval></con:loadTest><con:properties/></con:testCase><con:testCase id="a2f60fdb-57bd-4270-8473-5d5f06cae0a4" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="SendALFEvent" searchProperties="true"><con:settings/><con:testStep type="request" id="775c1b45-941c-40e1-956b-0039b2b9d1b6" name="EventNotice - Request 1"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>EventNotice</con:operation><con:request name="EventNotice - Request 1" outgoingWss="" incomingWss="" timeout="" sslKeystore="" useWsAddressing="false" useWsReliableMessaging="false" wssPasswordType="" id="9ab98bee-e2aa-4498-9dc0-6b393c965ece"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net" xmlns:ns="http://www.eclipse.org/alf/schema/EventBase/1">\r
<soapenv:Header/>\r
<soapenv:Body>\r
<ws:EventNotice>\r
<!--Optional:-->\r
<ns:EventNotice version="?">\r
<ns:Base>\r
<ns:EventId>${=org.apache.commons.lang.RandomStringUtils.randomNumeric(12)}</ns:EventId>\r
<!-- ${=java.time.Instant.now().truncatedTo(java.time.temporal.ChronoUnit.SECONDS)} -->
<ns:Timestamp>${=java.time.Instant.now()}</ns:Timestamp>\r
<ns:EventType>sync</ns:EventType>\r
<ns:ObjectType>User</ns:ObjectType>\r
<ns:ObjectId>ABC${=org.apache.commons.lang.RandomStringUtils.randomNumeric(5)}</ns:ObjectId>\r
<ns:Source>\r
<ns:Product>IDM</ns:Product>\r
<ns:ProductVersion>1.0</ns:ProductVersion>\r
<ns:ProductInstance>Default</ns:ProductInstance>\r
</ns:Source>\r
<ns:User>\r
<!--You may enter ANY elements at this point-->\r
</ns:User>\r
</ns:Base>\r
<!--Optional:-->\r
<ns:Detail>\r
<!--You may enter ANY elements at this point-->\r
</ns:Detail>\r
<!--Optional:-->\r
<ns:Extension>\r
<!--You may enter ANY elements at this point-->\r
</ns:Extension>\r
<!--You may enter ANY elements at this point-->\r
</ns:EventNotice>\r
</ws:EventNotice>\r
</soapenv:Body>\r
</soapenv:Envelope>]]></con:request><con:assertion type="SOAP Fault Assertion" id="bef57b04-a0a9-48dd-9b9b-6b719ffcbe37" name="Not SOAP Fault"/><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/MiscService/EventNotice"/><con:wsrmConfig version="1.2"/></con:request></con:config></con:testStep><con:loadTest id="2ba2dd71-6199-481e-b63b-f1c1aa0b8a88" name="ALFEvend-LoadTest"><con:settings><con:setting id="HttpSettings@close-connections">false</con:setting><con:setting id="HttpSettings@include_request_in_time_taken">true</con:setting><con:setting id="HttpSettings@include_response_in_time_taken">true</con:setting></con:settings><con:threadCount>1</con:threadCount><con:startDelay>0</con:startDelay><con:sampleInterval>250</con:sampleInterval><con:calculateTPSOnTimePassed>true</con:calculateTPSOnTimePassed><con:resetStatisticsOnThreadCountChange>true</con:resetStatisticsOnThreadCountChange><con:historyLimit>-1</con:historyLimit><con:testLimit>5000</con:testLimit><con:limitType>COUNT</con:limitType><con:loadStrategy><con:type>Simple</con:type><con:config><testDelay>20</testDelay><randomFactor>0.5</randomFactor></con:config></con:loadStrategy><con:assertion type="Step Status" name="Step Status"/><con:maxAssertionErrors>100</con:maxAssertionErrors><con:statisticsLogFolder/><con:statisticsLogInterval>0</con:statisticsLogInterval><con:logStatisticsOnThreadChange>false</con:logStatisticsOnThreadChange><con:cancelOnReachedLimit>false</con:cancelOnReachedLimit><con:cancelExcessiveThreads>true</con:cancelExcessiveThreads><con:strategyInterval>500</con:strategyInterval><con:updateStatisticsPerTestStep>false</con:updateStatisticsPerTestStep></con:loadTest><con:properties/></con:testCase><con:testCase id="009c4c6f-cb7f-4881-ada4-a07ef8273328" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Generate UUID" searchProperties="true"><con:settings/><con:testStep type="request" id="8f3b38a1-67c5-4fe9-a0f4-018e4dec186b" name="generateUUID - Request 1"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>generateUUID</con:operation><con:request name="generateUUID - Request 1" outgoingWss="" incomingWss="" timeout="" sslKeystore="" useWsAddressing="false" useWsReliableMessaging="false" wssPasswordType="" id="85939931-bd58-456e-861d-16ed0149b6c6"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">\r
</soapenv:Envelope>]]></con:request><con:assertion type="SOAP Response" id="62a06f54-9dd6-4acd-81ee-63b20bca9cc5" name="SOAP Response"/><con:assertion type="SOAP Fault Assertion" id="1165de94-a09d-4e7e-96ff-931c950e4208" name="Not SOAP Fault"/><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.xservices.brutex.net/MiscService/lock"/><con:wsrmConfig version="1.2"/></con:request></con:config></con:testStep><con:loadTest id="127f0187-0a39-4543-9417-a0dfcfd1b832" name="lock-loadTest"><con:settings><con:setting id="HttpSettings@close-connections">false</con:setting></con:settings><con:threadCount>12</con:threadCount><con:startDelay>0</con:startDelay><con:sampleInterval>250</con:sampleInterval><con:calculateTPSOnTimePassed>true</con:calculateTPSOnTimePassed><con:resetStatisticsOnThreadCountChange>true</con:resetStatisticsOnThreadCountChange><con:historyLimit>-1</con:historyLimit><con:testLimit>1000000</con:testLimit><con:limitType>COUNT</con:limitType><con:loadStrategy><con:type>Simple</con:type><con:config><testDelay>20</testDelay><randomFactor>0.5</randomFactor></con:config></con:loadStrategy><con:assertion type="Step Status" name="Step Status"/><con:maxAssertionErrors>100</con:maxAssertionErrors><con:cancelExcessiveThreads>true</con:cancelExcessiveThreads><con:strategyInterval>500</con:strategyInterval></con:loadTest><con:properties/></con:testCase><con:testCase id="a2f60fdb-57bd-4270-8473-5d5f06cae0a4" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="SendALFEvent" searchProperties="true"><con:settings/><con:testStep type="request" id="60d02e49-d967-486a-9902-f57ccc2d41be" name="mergeALFEvent - Request 1"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>mergeALFEvent</con:operation><con:request name="mergeALFEvent - Request 1" outgoingWss="" incomingWss="" timeout="" sslKeystore="" useWsAddressing="false" useWsReliableMessaging="false" wssPasswordType="" id="990dc76f-6088-4dbb-b96c-2f7351300bd8"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns="http://www.eclipse.org/alf/schema/EventBase/1" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ALFEventNoticeDoc version="1.0">
<Base>
<EventId>15b5fafba04143fb82a2fefab51541a0ccccccccccccccccccccccccccccc</EventId>
<Timestamp>2023-05-15T17:15:10Z</Timestamp>
<EventType>sync</EventType>
<ObjectType>OU</ObjectType>
<ObjectId>T945GyIUhU615E/eOR${=org.apache.commons.lang.RandomStringUtils.randomNumeric(5)}</ObjectId>
<Source>
<Product>IDM</Product>
<ProductVersion>1.0</ProductVersion>
<ProductInstance>Default</ProductInstance>
</Source>
<User>
<ALFSecurity>
<UsernameToken>
<Username>idminterface</Username>
<Password>H?_{_8>8@wNWRx?ZaQ</Password>
</UsernameToken>
</ALFSecurity>
</User>
</Base>
<Extension>
<FDN>C=DE\O=SYSTEM\OU=IDM\OU=MasterData\OU=OrgUnit\CN=24054</FDN>
<data>
<transport>
<was-attr-class-name>OU</was-attr-class-name>
<was-attr-event-id>15b5fafba04143fb82a2fbfab51541a0</was-attr-event-id>
<was-attr-from-merge>true</was-attr-from-merge>
<was-attr-qualified-src-dn>C=DE\O=SYSTEM\OU=IDM\OU=MasterData\OU=OrgUnit\CN=24054</was-attr-qualified-src-dn>
<was-attr-src-dn>\IDMTEST\DE\SYSTEM\IDM\MasterData\OrgUnit\24054</was-attr-src-dn>
<was-attr-src-entry-id>7173715</was-attr-src-entry-id>
<association>
<text>T945GyIUhU615E/eORsiFA==</text>
</association>
<modify-attr>
<was-attr-attr-name>CN</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-naming>true</was-attr-naming>
<was-attr-timestamp>1668775101#1357</was-attr-timestamp>
<was-attr-type>string</was-attr-type>
<text>24054</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degOULevel</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1328</was-attr-timestamp>
<was-attr-type>int</was-attr-type>
<text>5</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degOUManager</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1344</was-attr-timestamp>
<was-attr-type>string</was-attr-type>
<text>N0165</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degOUShort</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1333</was-attr-timestamp>
<was-attr-type>string</was-attr-type>
<text>IDM NEU 31052023_1</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>degStatus</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1334</was-attr-timestamp>
<was-attr-type>int</was-attr-type>
<text>1</text>
</value>
</add-value>
</modify-attr>
<modify-attr>
<was-attr-attr-name>GUID</was-attr-attr-name>
<remove-all-values/>
<add-value>
<value>
<was-attr-timestamp>1668775101#1358</was-attr-timestamp>
<was-attr-type>octet</was-attr-type>
<text>T945GyIUhU615E/eORsiFA==</text>
</value>
</add-value>
</modify-attr>
<operation-data>
<was-attr-GUID>T945GyIUhU615E/eORsiFA==</was-attr-GUID>
<was-attr-event-id>15b5fafba04143fb82a2fbfab51541a0</was-attr-event-id>
<was-attr-op>sync</was-attr-op>
<was-attr-src-dn>\IDMTEST\DE\SYSTEM\IDM\MasterData\OrgUnit\24054</was-attr-src-dn>
</operation-data>
</transport>
</data>
</Extension>
</ALFEventNoticeDoc>
</soapenv:Body>
</soapenv:Envelope>
]]></con:request><con:assertion type="SOAP Response" id="bad186b6-1791-4337-a91b-addd315f02ef" name="SOAP Response"/><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="EventNotice"/><con:wsrmConfig version="1.2"/></con:request></con:config></con:testStep><con:loadTest id="2ba2dd71-6199-481e-b63b-f1c1aa0b8a88" name="ALFEvend-LoadTest"><con:settings><con:setting id="HttpSettings@close-connections">false</con:setting><con:setting id="HttpSettings@include_request_in_time_taken">true</con:setting><con:setting id="HttpSettings@include_response_in_time_taken">true</con:setting></con:settings><con:threadCount>8</con:threadCount><con:startDelay>0</con:startDelay><con:sampleInterval>250</con:sampleInterval><con:calculateTPSOnTimePassed>true</con:calculateTPSOnTimePassed><con:resetStatisticsOnThreadCountChange>true</con:resetStatisticsOnThreadCountChange><con:historyLimit>-1</con:historyLimit><con:testLimit>300000</con:testLimit><con:limitType>COUNT</con:limitType><con:loadStrategy><con:type>Variance</con:type><con:config><interval>50000</interval><variance>0.5</variance></con:config></con:loadStrategy><con:assertion type="Step Status" name="Step Status"/><con:maxAssertionErrors>100</con:maxAssertionErrors><con:statisticsLogFolder/><con:statisticsLogInterval>0</con:statisticsLogInterval><con:logStatisticsOnThreadChange>false</con:logStatisticsOnThreadChange><con:cancelOnReachedLimit>false</con:cancelOnReachedLimit><con:cancelExcessiveThreads>true</con:cancelExcessiveThreads><con:strategyInterval>500</con:strategyInterval><con:updateStatisticsPerTestStep>false</con:updateStatisticsPerTestStep></con:loadTest><con:properties/></con:testCase><con:testCase id="009c4c6f-cb7f-4881-ada4-a07ef8273328" failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Generate UUID" searchProperties="true"><con:settings/><con:testStep type="request" id="8f3b38a1-67c5-4fe9-a0f4-018e4dec186b" name="generateUUID - Request 1"><con:settings/><con:config xsi:type="con:RequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:interface>MiscServiceSoapBinding</con:interface><con:operation>generateUUID</con:operation><con:request name="generateUUID - Request 1" outgoingWss="" incomingWss="" timeout="" sslKeystore="" useWsAddressing="false" useWsReliableMessaging="false" wssPasswordType="" id="85939931-bd58-456e-861d-16ed0149b6c6"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/XServices/MiscService</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.xservices.brutex.net">\r
<soapenv:Header/>\r
<soapenv:Body>\r
<ws:generateUUID/>\r