Subversion Repositories XServices

Compare Revisions

No changes between revisions

Ignore whitespace Rev 167 → Rev 171

/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/svn/SVNAdminCommand.java
0,0 → 1,40
/*
* Copyright 2014 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.svn;
 
/**
* The Enum SVNAdminCommand. Lists supported svnladmin commands
*
* @author Brian Rosenberger, bru(at)brutex.de
* @since 0.1
*/
public enum SVNAdminCommand {
 
SETLOG("setlog");
private final String value;
private SVNAdminCommand(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
 
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/svn/SVNAdminExecutor.java
0,0 → 1,181
/*
* Copyright 2014 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.svn;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
import org.apache.log4j.Logger;
 
/* Executes the svnadmin utility
*
* @author Brian Rosenberger bru(at)brutex.de
* @since 0.1
 
*/
public class SVNAdminExecutor {
private Logger logger = Logger.getLogger(SVNAdminExecutor.class);
private final File svnadmin;
private final String repos;
private String rev = null;
private String message = null;
private String locale = "de_DE.UTF-8";
private String encoding = "UTF-8";
private boolean useBypassHooks = true;
/**
* Instantiates a new SVN admin executor.
*
* @param svnadmin the svnadmin
* @param repos the repos
*/
public SVNAdminExecutor(File svnadmin, String repos) {
if(! svnadmin.exists() ) throw new IllegalArgumentException( String.format("The svnadmin executable at '%s' does not exist.", svnadmin.toString()));
if(! svnadmin.isFile() ) throw new IllegalArgumentException( String.format("The svnadmin utility at'%s' is not a file.", svnadmin.toString()));
logger.debug(String.format("Instantiating '%s' with svnadmin at '%s'.", this.getClass().getCanonicalName(), svnadmin.toString()));
this.svnadmin = svnadmin;
logger.debug(String.format("Working against svn repository at '%s'.", repos));
this.repos = repos;
}
 
/**
* Execute svn admin.
*
* @param command the command
* @return the string
*/
public String executeSVNAdmin(SVNAdminCommand command) {
StringBuilder sb = new StringBuilder();
StringBuilder sberr = new StringBuilder();
if(rev==null) {
logger.error("The revision can not be 'null' for the svnadmin command.");
return null;
}
if(message==null) {
logger.error("The new log message can not be 'null' for the svnadmin command.");
return null;
}
File logfile = null;
try {
logfile = File.createTempFile("~msg"+rev+"_", ".tmp");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logfile), encoding));
out.write(message);
out.flush();
out.close();
} catch (IOException e) {
logger.error("Failed to write new log message to temporary file '"+logfile.getAbsolutePath()+"'.", e);
return null;
}
 
try {
List<String> cmdline = new ArrayList<String>(5);
cmdline.add(svnadmin.toString());
cmdline.add(command.getValue());
cmdline.add(repos);
if(useBypassHooks) {
cmdline.add("--bypass-hooks");
}
cmdline.add("-r");
cmdline.add(rev);
cmdline.add(logfile.getAbsolutePath());
 
ProcessBuilder pf = new ProcessBuilder(cmdline);
logger.debug(String.format("Executing svnadmin with commandline '%s'.", pf.command()));
Map<String, String> env = pf.environment();
env.put("LANG", locale);
Process svnprocess = pf.start();
BufferedReader stdin = new BufferedReader(new InputStreamReader(svnprocess.getInputStream(), encoding));
BufferedReader stderr = new BufferedReader(new InputStreamReader(svnprocess.getErrorStream(), encoding));
String s;
while( (s = stdin.readLine()) != null ) {
sb.append(s + '\n');
}
while( (s = stderr.readLine()) != null ) {
sberr.append(s + '\n');
}
stdin.close(); stderr.close();
} catch (IOException e) {
logger.error( String.format( "Error calling the svnadmin utility: '%s'", e.getMessage()));
e.printStackTrace();
} finally {
logfile.deleteOnExit();
}
String error = sberr.toString();
if( error.length()>0 ) {
error = "Failed to call svnadmin. The STDERR was '"+error+"'";
logger.error(error);
throw new IllegalArgumentException(error);
}
String output = sb.toString().trim();
logger.debug(String.format("Svnadmin output was '%s'", output));
return output;
}
public void setRev(String rev) {
if(rev==null || rev.length()<=0) throw new IllegalArgumentException("Revision cannot be null or empty.");
this.rev = rev;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
/**
* Set the locale that will be pushed into
* 'LANG' environment variable.
*
* @param locale i.e. de_DE.UTF-8
*/
public void setLocale(String locale) {
this.locale = locale;
}
/**
* Set the new log message.
*
* @param message new message
*/
public void setMessage(String message) {
this.message = message;
}
/**
* Set this to true to bypass the pre-revprop-change and post-revprop-change
* hooks.
*
* @param useBypassHooks defaults to true
*/
public void setUseBypassHooks(boolean useBypassHooks) {
this.useBypassHooks = useBypassHooks;
}
 
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/svn/SVNLookExecutor.java
0,0 → 1,194
/*
* 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.svn;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
 
import net.brutex.svn.SVNCommitInfo.ChangeType;
 
import org.apache.log4j.Logger;
 
/* Executes the svnlook utility
*
* @author Brian Rosenberger bru(at)brutex.de
* @since 0.1
 
*/
public class SVNLookExecutor {
private Logger logger = Logger.getLogger(SVNLookExecutor.class);
private final File svnlook;
private final String repos;
private String TXN = null;
private String rev = null;
private String locale = "de_DE.UTF-8";
private String encoding = "UTF-8";
/**
* Instantiates a new sVN look executor.
*
* @param svnlook the svnlook
* @param repos the repos
*/
public SVNLookExecutor(File svnlook, String repos) {
if(! svnlook.exists() ) throw new IllegalArgumentException( String.format("The svnlook executable at '%s' does not exist.", svnlook.toString()));
if(! svnlook.isFile() ) throw new IllegalArgumentException( String.format("The svnlook utility at'%s' is not a file.", svnlook.toString()));
logger.debug(String.format("Instantiating '%s' with svnlook at '%s'.", this.getClass().getCanonicalName(), svnlook.toString()));
this.svnlook = svnlook;
logger.debug(String.format("Working against svn repository at '%s'.", repos));
this.repos = repos;
}
 
/**
* Execute svn look.
*
* @param command the command
* @return the string
*/
private String executeSVNLook(SVNLookCommand command) {
StringBuilder sb = new StringBuilder();
StringBuilder sberr = new StringBuilder();
//This throws an IllegalArgumentException when neither TXN nor REV is valid
String[] params;
try {
params = getTargetParam();
} catch (IllegalArgumentException e) {
logger.error(e.getMessage());
throw e;
}
try {
List<String> cmdline = new ArrayList<String>(5);
cmdline.add(svnlook.toString());
cmdline.add(command.getValue());
cmdline.add(params[0]);
cmdline.add(params[1]);
cmdline.add(repos);
 
ProcessBuilder pf = new ProcessBuilder(cmdline);
logger.debug(String.format("Executing svnlook with commandline '%s'.", pf.command()));
Map<String, String> env = pf.environment();
env.put("LANG", locale);
Process svnprocess = pf.start();
BufferedReader stdin = new BufferedReader(new InputStreamReader(svnprocess.getInputStream(), encoding));
BufferedReader stderr = new BufferedReader(new InputStreamReader(svnprocess.getErrorStream(), encoding));
String s;
while( (s = stdin.readLine()) != null ) {
sb.append(s + '\n');
}
while( (s = stderr.readLine()) != null ) {
sberr.append(s + '\n');
}
stdin.close(); stderr.close();
} catch (IOException e) {
logger.error( String.format( "Error calling the svnlook utility: '%s'", e.getMessage()));
e.printStackTrace();
}
String error = sberr.toString();
if( error.length()>0 ) {
error = "Failed to call svnlook. The STDERR was '"+error+"'";
logger.error(error);
throw new IllegalArgumentException(error);
}
String output = sb.toString().trim();
logger.debug(String.format("Svnlook output was '%s'", output));
return output;
}
/*
* Returns either -t TXN oder -rev REVISION
*
* @returns
*/
private String[] getTargetParam() {
String[] result = new String[2];
if( (TXN==null || TXN.length()<=0) && (rev==null || rev.length()<=0) ) throw new IllegalArgumentException("Either TXN or revision must be provided.");
if( TXN!=null && TXN.length()>0 && rev!=null && rev.length()>0 ) throw new IllegalArgumentException("Both, TXN and revision are given. Don't know what to use.");
if( TXN!=null && TXN.length()>0) {
result[0] = "-t";
result[1] = TXN;
return result;
}
if( rev!=null && rev.length()>0) {
result[0] = "-r";
result[1] = rev;
return result;
}
throw new IllegalArgumentException("Either TXN or revision must be provided.");
}
public void setTXN(String TXN) {
if(TXN==null || TXN.length()<=0) throw new IllegalArgumentException("TXN cannot be null or empty.");
this.TXN = TXN;
}
public void setRev(String rev) {
if(rev==null || rev.length()<=0) throw new IllegalArgumentException("Revision cannot be null or empty.");
this.rev = rev;
}
public SVNCommitInfo getCommitInfo() {
String author = executeSVNLook(SVNLookCommand.AUTHOR);
String logmessage = executeSVNLook(SVNLookCommand.LOG);
String files = executeSVNLook(SVNLookCommand.CHANGED);
SVNCommitInfo result = new SVNCommitInfo(author,
new Date(),
logmessage);
files += "\n";
StringTokenizer tokenizer = new StringTokenizer(files, "\n");
String s;
while( tokenizer.hasMoreTokens()) {
s=tokenizer.nextToken();
logger.debug(String.format("Tokenizing file list. Token '%s'.", s));
if(s.startsWith("A")) { result.addFileInfo(ChangeType.ADDED, s.substring(1).trim()); continue; }
if(s.startsWith("D")) { result.addFileInfo(ChangeType.DELETED, s.substring(1).trim()); continue; }
if(s.startsWith("UU")) { result.addFileInfo(ChangeType.BOTHUPDATE, s.substring(2).trim()); continue; }
if(s.startsWith("_U")) { result.addFileInfo(ChangeType.METAUPDATE, s.substring(2).trim()); continue; }
if(s.startsWith("U")) { result.addFileInfo(ChangeType.UPDATED, s.substring(1).trim()); continue; }
}
result.setTxn(TXN);
result.setRev(rev);
return result;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
/**
* Set the locale that will be pushed into
* 'LANG' environment variable.
*
* @param locale i.e. de_DE.UTF-8
*/
public void setLocale(String locale) {
this.locale = locale;
}
 
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/svn/SVNCommitInfo.java
0,0 → 1,361
/*
* 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.svn;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import org.apache.log4j.Logger;
 
/**
* The Class SVNCommitInfo represents changes commited to
* a svn repository. The information is based on svnlook.
*
* 'A ' Object dem Projektarchiv hinzugefügt
* 'D ' Objekt aus dem Projektarchiv gelöscht
* 'U ' Dateiinhalt geändert
* '_U' Eigenschaften eines Objektes geändert
* 'UU' Dateiinhalt und Eigenschaften geändert
*
* @author Brian Rosenberger, bru(at)brutex.de
* @since 0.1
*
*/
public class SVNCommitInfo {
/** The logger. */
private final Logger logger = Logger.getLogger(SVNCommitInfo.class);
/** The author. */
private final String author;
/** The commit message */
private String logmessage;
/** The date. */
private final Date date;
/** The Alist. */
private final List<String> Alist = new ArrayList<String>(0);
/** The Dlist. */
private final List<String> Dlist = new ArrayList<String>(0);
/** The Ulist. */
private final List<String> Ulist = new ArrayList<String>(5);
/** The _ ulist. */
private final List<String> _Ulist = new ArrayList<String>(0);
/** The U ulist. */
private final List<String> UUlist = new ArrayList<String>(0);
/** The issues. */
private final List<String> issues = new ArrayList<String>(1);
/** The txn. */
private String txn="";
/** The rev. */
private String rev="";
/**
* Instantiates a new SVN commit info.
*
* @param author the commiter
* @param date the commit date
* @param logmessage the commit message
*/
public SVNCommitInfo(String author, Date date, String logmessage) {
this.author = author;
this.date = date;
this.logmessage = logmessage;
}
/**
* Adds the file info.
*
* @param t the t
* @param file the file
*/
public void addFileInfo(ChangeType t, String file) {
switch (t) {
case ADDED:
Alist.add(file);
break;
case DELETED:
Dlist.add(file);
break;
case UPDATED:
Ulist.add(file);
break;
case METAUPDATE:
_Ulist.add(file);
break;
case BOTHUPDATE:
UUlist.add(file);
break;
 
default:
break;
}
}
/**
* Gets the author.
*
* @return the author
*/
public String getAuthor() {
return author;
}
/**
* Gets the commit message.
*
* @return the commit message
*/
public String getLogmessage() {
return logmessage;
}
/**
* Gets the commit date.
*
* @return the commit date
*/
public Date getDate() {
return date;
}
/**
* Gets the svn transaction id.
*
* @return the txn
*/
public String getTxn() {
return txn;
}
/**
* Sets the txn.
*
* @param txn the new txn
*/
public void setTxn(String txn) {
this.txn = txn;
}
/**
* Gets the id. This is either the txn or revision.
*
* @return the id
*/
public String getId() {
if(txn!=null) return txn;
return rev;
}
/**
* Sets the rev.
*
* @param rev the new rev
*/
public void setRev(String rev) {
this.rev = rev;
}
/**
* Gets the rev.
*
* @return the rev
*/
public String getRev() {
return rev;
}
/*
* http://openbook.galileocomputing.de/javainsel9/javainsel_04_007.htm#mjd5b5d84cb3f1b5bcb7638ea9221a491f
*/
/**
* Parses the issues.
*
* @param patterns the patterns
* @param isRemoveIssues
*/
public void parseIssues(String[] patterns, boolean isRemoveIssues) {
issues.clear(); //reset
int count = 0;
for(String p : patterns) {
Pattern regex = Pattern.compile(p);
Matcher matcher = regex.matcher(logmessage);
logger.debug(String.format("Matching regex pattern '%s' against logmessage '%s'.", matcher.pattern().pattern(), logmessage));
while( matcher.find()) {
issues.add( matcher.group() );
logger.debug("Found issue '" + matcher.group() + "' in the logmessage.");
count++;
}
if(isRemoveIssues) {
logmessage = matcher.replaceAll("");
logger.debug("Removing all matched issues from commit message");
}
}
logger.debug("Found '" + count + "' issues in the logmessage.");
}
/**
* Gets the change file list as string.
*
* @return the change file list as string
*/
public String getChangeFileListAsString() {
StringBuilder sb = new StringBuilder();
for (Iterator<String> iterator = Alist.iterator(); iterator.hasNext();)
{
sb.append("A \t");
sb.append(iterator.next());
sb.append("\n");
}
for (Iterator<String> iterator = Dlist.iterator(); iterator.hasNext();)
{
sb.append("D \t");
sb.append(iterator.next());
sb.append("\n");
}
for (Iterator<String> iterator = Ulist.iterator(); iterator.hasNext();)
{
sb.append("U \t");
sb.append(iterator.next());
sb.append("\n");
}
for (Iterator<String> iterator = _Ulist.iterator(); iterator.hasNext();)
{
sb.append("_U\t");
sb.append(iterator.next());
sb.append("\n");
}
for (Iterator<String> iterator = UUlist.iterator(); iterator.hasNext();)
{
sb.append("UU\t");
sb.append(iterator.next());
sb.append("\n");
}
sb.append("Summary: " + (Ulist.size()+UUlist.size()+_Ulist.size()) + " files updated, ");
sb.append(Alist.size() + " files added, " + Dlist.size() + " files deleted.");
return sb.toString();
}
/**
* Gets the added files.
*
* @return the added files
*/
public List<String> getAddedFiles() {
return Alist;
}
/**
* Gets the deleted files.
*
* @return the deleted files
*/
public List<String> getDeletedFiles() {
return Dlist;
}
/**
* Gets the changed files.
*
* @return the changed files
*/
public List<String> getChangedFiles() {
List<String> changed = new ArrayList<String>();
changed.addAll(Ulist);
changed.addAll(UUlist);
changed.addAll(_Ulist);
return changed;
}
/**
* Gets the issues.
*
* @return the issues
*/
public List<String> getIssues() {
return issues;
}
/**
* The Enum ChangeType.
*
* @author Brian Rosenberger, bru(at)brutex.de
*/
public enum ChangeType {
/** The added. */
ADDED("A "),
/** The deleted. */
DELETED("D "),
/** The updated. */
UPDATED("U "),
/** The metaupdate. */
METAUPDATE("_U"),
/** The bothupdate. */
BOTHUPDATE("UU");
/** The indicator. */
private final String indicator;
/**
* Instantiates a new change type.
*
* @param svn the svn
*/
private ChangeType(String svn) {
this.indicator = svn;
}
/**
* Gets the enum.
*
* @param s the s
* @return the enum
*/
public static ChangeType getEnum(String s) {
for(ChangeType e : ChangeType.values()) {
if(s.equals(e.getIndicator())) return e;
}
throw new IllegalArgumentException("ChangeType enum for value '"+s+"' does not exist.");
}
/**
* Gets the indicator.
*
* @return the indicator
*/
public String getIndicator() {
return this.indicator;
}
}
 
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/svn/SVNLookCommand.java
0,0 → 1,42
/*
* 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.svn;
 
/**
* The Enum SVNLookCommand. Lists supported svnlook commands
*
* @author Brian Rosenberger, bru(at)brutex.de
* @since 0.1
*/
public enum SVNLookCommand {
 
CHANGED("changed"),
LOG("log"),
AUTHOR("author");
private final String value;
private SVNLookCommand(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
 
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/emitter/ALFEmitter.java
0,0 → 1,748
/*
* 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.emitter;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StringWriter;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
 
 
 
 
 
 
 
 
 
 
 
 
import javax.xml.ws.BindingProvider;
 
import net.brutex.emitter.util.EmitterUtil;
import net.brutex.sbm.sbmappservices72.AEWebservicesFaultFault;
import net.brutex.sbm.sbmappservices72.Sbmappservices72;
import net.brutex.sbm.sbmappservices72.Sbmappservices72PortType;
import net.brutex.sbm.sbmappservices72.api.Auth;
import net.brutex.sbm.sbmappservices72.api.MultipleResponseItemOptions;
import net.brutex.sbm.sbmappservices72.api.ObjectFactory;
import net.brutex.sbm.sbmappservices72.api.SectionsOption;
import net.brutex.sbm.sbmappservices72.api.TTItemList;
import net.brutex.sbm.sbmappservices72.api.TableIdentifier;
import net.brutex.svn.SVNAdminCommand;
import net.brutex.svn.SVNAdminExecutor;
import net.brutex.svn.SVNCommitInfo;
import net.brutex.svn.SVNLookExecutor;
 
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMComment;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.xpath.AXIOMXPath;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.ParseException;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.message.Message;
import org.apache.http.client.ClientProtocolException;
import org.apache.log4j.Logger;
import org.jaxen.JaxenException;
 
import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
 
 
/**
* The Class ALFEmitter.
*
* @author Brian Rosenberger, bru(at)brutex.de
* @since 0.1
*/
public class ALFEmitter {
public static final String VERSION = "0.1";
private static Logger logger = Logger.getRootLogger();
//
// Keys to read from the configuration file.
//
private static final String OPTION_SVNLOOK = "svnlook";
private static final String OPTION_SVNADMIN = "svnadmin";
private static final String OPTION_LOCALE = "env.LANG";
private static final String OPTION_ENCODING = "env.encoding";
private static final String OPTION_ISSUEPATTERN = "issuepattern";
private static final String OPTION_EVENTTEMPLATE = "eventtemplate";
private static final String OPTION_EVENTNAMESPACE = "eventnamespace";
private static final String OPTION_EVENTMANAGER_URL = "eventmanager";
private static final String OPTION_EVENTMANAGER_USER = "eventmanager.user";
private static final String OPTION_EVENTMANAGER_PASSWORD = "eventmanager.password";
private static final String OPTION_SBM_ENDPOINT = "sbmappservices72";
private static final String OPTION_SBM_USER = "sbmuser";
private static final String OPTION_SBM_PASSWORD = "sbmpassword";
private static final String OPTION_SBM_TABLE = "querytable";
private static final String OPTION_SBM_QUERY = "query";
 
private static final String OPTION_MARKER_LOGMESSAGE = "marker.logmessage";
private static final String OPTION_MARKER_AUTHOR = "marker.author";
private static final String OPTION_MARKER_REVISION = "marker.revision";
private static final String OPTION_MARKER_ADDEDFILES = "marker.addedfiles";
private static final String OPTION_MARKER_DELETEDFILES = "marker.deletedfiles";
private static final String OPTION_MARKER_CHANGEDFILES = "marker.changedfiles";
private static final String OPTION_MARKER_ISSUES = "marker.issues";
private static final String OPTION_MARKER_INTERNALISSUES = "marker.internalissues";
private static final String OPTION_REMOVE_ISSUES_FROM_COMMIT = "removeissuesfromcommit";
private static final String OPTION_IS_SOAPENABLED = "isSoapEnabled";
private static final String OPTION_IS_DROPENABLED = "isDropResponse";
private static final String OPTION_IS_FORCEFAILENABLED = "forcefail";
private static final String OPTION_IS_VERIFICATIONENABLED = "isWithVerification";
private static final String OPTION_IS_UPDATECOMMITMESSAGE = "isWithMessageUpdate";
private static final String OPTION_IS_WSTRACE = "trace";
private static final String OPTION_IS_XMLPROCESSINGENABLED = "isXmlProcessingEnabled";
 
//
// Command line parameters
//
private static final String PARAM_REPOS = "repos";
private static final String PARAM_TXN = "txn";
private static final String PARAM_REV = "rev";
private static final String PARAM_CONFIG = "conf";
//
// Member variables
//
private final String repos;
private final String txn;
private final String rev;
private SVNCommitInfo info;
private OMElement template = null;
private Configuration config;
private String nss = null;
private final long startTime;
//Member for SBM endpoint configuration
private final String endpoint;
private final String sbm_user;
private final String sbm_pass;
private final String querytable;
private final String query;
 
private final List<String> internalissues = new ArrayList<String>();
//SBM IssueTypePrefix+IssueId, Title
private final Map<String, String> issues_titles = new HashMap<String, String>();
/**
* The main method.
*
* @param args the arguments
*/
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
CommandLineParser parser = new BasicParser();
CommandLine cmd = null;
try {
cmd = parser.parse( getOptions(), args);
} catch (ParseException e1) {
logger.error(e1.getMessage());
printHelp();
System.exit(1);
}
try {
ALFEmitter emitter = new ALFEmitter(cmd, startTime);
} catch (ConfigurationException e) {
System.exit(1);
} catch (MalformedURLException e) {
logger.error("Could not find/ load wsdl url.", e);
System.exit(1);
}
long endTime = System.currentTimeMillis();
logger.debug("Total execution took '"+(endTime-startTime)+"' milliseconds.");
System.exit(0);
}
/**
* Read a configuration parameter from the config file
* Creates log messages according to parameters.
*
* @param key property name
* @param defaultValue default value or null
* @param isRequired wether or not this is a required option
* @param logmessage optional log message (or null)
* @return property value
* @throws ConfigurationException
*/
private Object readConfProperty(String key, Object defaultValue, boolean isRequired, PropertyType type, String logmessage) throws ConfigurationException {
Object value = null;
switch (type) {
case BOOLEAN:
value = config.getBoolean(key, (Boolean) defaultValue);
break;
case STRINGARRAY:
value = config.getStringArray(key);
defaultValue = null;
break;
 
default:
value = config.getString(key, (String) defaultValue);
break;
}
if(isRequired && value == null) {
//required property
if(defaultValue == null) {
//No value, no default
String s = String.format("Could not load a value for the key '%s' from the configuration file. This is a required property without a default.", key);
logger.error(s);
throw new ConfigurationException(s);
}
if(defaultValue!=null) {
//No value, but default
logger.debug(String.format("Using property value '%s' for key '%s'. This is the default value. The property is required.", value, key));
}
}
if( (! isRequired) && value == null) {
//not required
if(value == null && defaultValue == null) {
//No value, no default
String s = String.format("Could not load a value for the key '%s' from the configuration file. This property has no default, but it is optional anyway.", key);
logger.warn(s);
}
if(value == null && defaultValue!=null) {
//No value, but default
logger.debug(String.format("Using property value '%s' for key '%s'. This is the default value. The property is optional.", value, key));
}
}
if(logmessage==null) logmessage="";
if(value!=null) logger.debug(String.format("Using property value '%s' for key '%s'. %s", value, key, logmessage));
return value;
}
private String readConfPropertyAsString(String key, String defaultValue, boolean isRequired, String logmessage) throws ConfigurationException {
return (String) readConfProperty(key, defaultValue, isRequired, PropertyType.STRING, logmessage);
}
private String[] readConfPropertyAsStringArray(String key, boolean isRequired, String logmessage) throws ConfigurationException {
return (String[]) readConfProperty(key, null, isRequired, PropertyType.STRINGARRAY, logmessage);
}
private boolean readConfPropertyAsBoolean(String key, boolean defaultValue, boolean isRequired, String logmessage) throws ConfigurationException {
Boolean b = (Boolean) readConfProperty(key, defaultValue, isRequired, PropertyType.BOOLEAN, logmessage);
return b.booleanValue();
}
private ALFEmitter(CommandLine cmd, long startTime) throws ConfigurationException, MalformedURLException {
this.startTime = startTime;
repos = cmd.getOptionValue(PARAM_REPOS);
txn = cmd.getOptionValue(PARAM_TXN);
rev = cmd.getOptionValue(PARAM_REV);
String config_file = cmd.getOptionValue(PARAM_CONFIG, "emitter.properties");
EmitterUtil.verifyFile(config_file, false, false);
 
logger.debug(String.format("Using REPOS='%s' and TXN='%s'.", repos, txn));
config = null;
try {
config = new PropertiesConfiguration(config_file);
} catch (ConfigurationException e) {
logger.error("Could not find/ load '"+config_file+"' file.", e);
this.exit(1);
}
/*
* Load Properties from Configuration file
*/
//it might be interesting to look into SVNKit
//for a pure Java implementation in future
final String svnlook = readConfPropertyAsString(OPTION_SVNLOOK, null, true, null);
EmitterUtil.verifyFile(svnlook, false, true);
final String locale = readConfPropertyAsString(OPTION_LOCALE, "de_DE.UTF-8", true, null);
final String encoding = readConfPropertyAsString(OPTION_ENCODING, "UTF-8", true, "Note that this should match your selected '"+OPTION_LOCALE+"'.");
// Issue Id RegEx to parse commit message
final String[] issuepatterns = readConfPropertyAsStringArray(OPTION_ISSUEPATTERN, false, null);
StringBuilder sb = new StringBuilder(); for(String s : issuepatterns) sb.append(s);
logger.debug(String.format("Using issue id patterns: '%s'.", sb.toString()));
// Flags to indicate what should be done
final boolean isSoapEnabled = readConfPropertyAsBoolean(OPTION_IS_SOAPENABLED, true, true, null);
final boolean isXmlProcessingEnabled = readConfPropertyAsBoolean(OPTION_IS_XMLPROCESSINGENABLED, true, true, null);
final boolean isWithVerification= readConfPropertyAsBoolean(OPTION_IS_VERIFICATIONENABLED, false, true, null);
final boolean isRemoveIssues = readConfPropertyAsBoolean(OPTION_REMOVE_ISSUES_FROM_COMMIT, false, true, "");
final boolean isWithCommitUpdate= readConfPropertyAsBoolean(OPTION_IS_UPDATECOMMITMESSAGE, false, true, "");
/*
* SVNLook phase
* Use svnlook to obtain information from SVN
*/
SVNLookExecutor exec = new SVNLookExecutor(new File(svnlook), repos);
if(cmd.hasOption(PARAM_TXN)) exec.setTXN(txn);
if(cmd.hasOption(PARAM_REV)) exec.setRev(rev);
exec.setEncoding(encoding);
exec.setLocale(locale);
info = exec.getCommitInfo();
info.parseIssues(issuepatterns, isRemoveIssues);
logger.debug("SVNCommitInfo author: "+ info.getAuthor());
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String datestring = f.format(info.getDate());
datestring= datestring.substring(0, 26) + ":" + datestring.substring(26); //hack into ISO 8601 format
logger.debug("SVNCommitInfo date: "+ datestring);
logger.debug("SVNCommitInfo log message: "+ info.getLogmessage());
logger.debug("SVNCommitInfo file list: "+ info.getChangeFileListAsString());
/*
* Verification phase
*/
boolean isTrace = false;
if(isWithVerification) {
sbm_user = readConfPropertyAsString(OPTION_SBM_USER, null, true, null);
sbm_pass = readConfPropertyAsString(OPTION_SBM_PASSWORD, null, false, null);
endpoint = readConfPropertyAsString(OPTION_SBM_ENDPOINT, "http://localhost/gsoap/gsoap_ssl.dll?sbmappservices72", true, null);
querytable = readConfPropertyAsString(OPTION_SBM_TABLE, null, true, null);
query = readConfPropertyAsString(OPTION_SBM_QUERY, null, false, null);
isTrace = readConfPropertyAsBoolean(OPTION_IS_WSTRACE, false, true, null);
logger.debug(String.format("Starting verification for '%s' issues in the list.", info.getIssues().size()));
boolean isOK = verify(info.getIssues(), isTrace);
if(! isOK ) {
logger.error("Verification of issue failed. No matching issue was found.");
this.exit(1);
}
} else {
sbm_user = null; sbm_pass=null; endpoint=null; querytable=null; query=null;
}
 
/*
* Modify original commit message
* using svnadmin command
*/
if(isWithCommitUpdate) {
String svnadmin = readConfPropertyAsString(OPTION_SVNADMIN, null, true, null);
EmitterUtil.verifyFile(svnadmin, false, true);
/* If verification was turned on, we do already have the titles
* so only try to load the items when verification was off
*/
if(! isWithVerification) {
verify(info.getIssues(), isTrace);
}
/* Append associated items information and change log message */
StringBuffer newmessage = new StringBuffer();
newmessage.append(info.getLogmessage());
newmessage.append("\n\n Associated SBM items:\n");
for(String s : issues_titles.keySet()) {
newmessage.append(s+": ");
newmessage.append(issues_titles.get(s));
newmessage.append("\n");
}
postCommitUpdate(new File(svnadmin), repos, locale, encoding, rev, newmessage.toString());
}
/*
* XML processing phase
*/
if(isXmlProcessingEnabled) {
}
/*
* ALF Event Send phase
*/
String eventmanager = null;
if(isSoapEnabled) {
eventmanager = readConfPropertyAsString(OPTION_EVENTMANAGER_URL, null, true, null);
}
 
/**
* Event XML Erzeugen
*/
try {
String resultxml=null;
if(isXmlProcessingEnabled) {
processXml();
addALFSecurity();
addEventHeader();
// Serialize xml message to String
StringWriter out = new StringWriter();
template.getParent().serialize(out);
out.flush();
resultxml = out.getBuffer().toString();
logger.debug("ALFEvent result:\n"+resultxml);
} else {
logger.debug("Xml processing is deactivated.");
}
if(isSoapEnabled && isXmlProcessingEnabled) {
final boolean isDropResponse = readConfPropertyAsBoolean(OPTION_IS_DROPENABLED, true, true, null);
SimpleHttpEvent sender = new SimpleHttpEvent(eventmanager, resultxml);
sender.sendSoap(isDropResponse);
logger.debug(String.format("Sending/ receiving the soap message took '%s' milliseconds.", sender.getDuration()));
} else {
logger.warn("Sending soap message and/ or xml processing is deactivated.");
}
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
this.exit(1);
} catch (ClientProtocolException e) {
logger.error(e.getMessage(), e);
this.exit(1);
} catch (IOException e) {
logger.error(e.getMessage(), e);
this.exit(1);
} catch (XMLStreamException e) {
logger.error(e.getMessage(), e);
this.exit(1);
} catch (JaxenException e) {
logger.error(e.getMessage(), e);
this.exit(1);
} finally {
String forcefail = config.getString(OPTION_IS_FORCEFAILENABLED, "");
if(forcefail.length()>0) {
logger.warn("Force fail is active. All commits will be blocked.");
this.exit(1);
}
}
}
private void addEventHeader() throws JaxenException {
AXIOMXPath path = new AXIOMXPath("//bru1:Base/bru1:EventId");
path.addNamespace("bru1", nss);
OMElement n = (OMElement) path.selectSingleNode(template);
if(n==null) {
logger.error("<Base> element in message is incomplete. <EventId> is missing.");
} else {
n.addChild( n.getOMFactory().createOMText("1"));
}
path = new AXIOMXPath("//bru1:Base/bru1:ObjectId");
path.addNamespace("bru1", nss);
n = (OMElement) path.selectSingleNode(template);
if(n==null) {
logger.error("<Base> element in message is incomplete. <ObjectId> is missing.");
} else {
n.addChild( n.getOMFactory().createOMText(info.getTxn() ));
}
}
private void addALFSecurity() throws ConfigurationException, JaxenException {
final String eventmanager_user = readConfPropertyAsString(OPTION_EVENTMANAGER_USER, null, false, null);
final String eventmanager_pass = readConfPropertyAsString(OPTION_EVENTMANAGER_PASSWORD, null, false, null);
AXIOMXPath path = new AXIOMXPath("//bru1:User");
OMNamespace ns = template.findNamespace(nss, null);
path.addNamespace("bru1", nss);
OMElement n = (OMElement) path.selectSingleNode(template);
if(n== null) {
logger.warn( String.format("<User> element was not found in namespace '%s'. Cannot add ALFSecurity elements. This is required since SBM 10.1.x.", nss));
} else {
/*
* <ns:User>
<!--Optional:-->
<ns:ALFSecurity>
<ns:UsernameToken>
<ns:Username>admin</ns:Username>
<ns:Password></ns:Password>
</ns:UsernameToken>
</ns:ALFSecurity>
</ns:User>
*/
n.removeChildren();
OMFactory fac = n.getOMFactory();
fac.createOMComment(n, "Generated by SVN-ALFEmitter");
OMElement sec = fac.createOMElement("ALFSecurity", ns);
OMElement token = fac.createOMElement("UsernameToken", ns);
OMElement user = fac.createOMElement("Username", ns);
user.addChild( fac.createOMText(eventmanager_user));
OMElement pass = fac.createOMElement("Password", ns);
pass.addChild(fac.createOMText(eventmanager_pass, OMNode.CDATA_SECTION_NODE));
token.addChild( user );
token.addChild( pass);
sec.addChild(token);
n.addChild(sec);
}
}
private void processXml() throws ConfigurationException, JaxenException {
// read additional configuration
final String eventtemplate = readConfPropertyAsString(OPTION_EVENTTEMPLATE, null, true, null);
EmitterUtil.verifyFile(eventtemplate, false, false);
try {
template = OMXMLBuilderFactory.createOMBuilder(new FileInputStream(new File(eventtemplate)))
.getDocument().getOMDocumentElement();
} catch (FileNotFoundException e1) {
logger.error(String.format("Could not load XML event template from file '%s'.", eventtemplate), e1);
this.exit(1);
}
nss = readConfPropertyAsString(OPTION_EVENTNAMESPACE, "http://www.eclipse.org/alf/schema/EventBase/1", true, null);
final String marker_logmessage = readConfPropertyAsString(OPTION_MARKER_LOGMESSAGE, "@@logmessage@@", true, null);
final String marker_author = readConfPropertyAsString(OPTION_MARKER_AUTHOR, "@@author@@", true, null);
final String marker_revision = readConfPropertyAsString(OPTION_MARKER_REVISION, "@@revision@@", true, null);
final String marker_addedfiles = readConfPropertyAsString(OPTION_MARKER_ADDEDFILES, "@@addedfiles@@", true, null);
final String marker_deletedfiles = readConfPropertyAsString(OPTION_MARKER_DELETEDFILES, "@@deletedfiles@@", true, null);
final String marker_changedfiles = readConfPropertyAsString(OPTION_MARKER_CHANGEDFILES, "@@changedfiles@@", true, null);
final String marker_fileselementname = readConfPropertyAsString("marker.fileselementname", "file", true, null);
final String marker_issues = readConfPropertyAsString(OPTION_MARKER_ISSUES, "@@issues@@", true, null);
final String marker_issueselementname = readConfPropertyAsString("marker.issueselementname", "issue", true, null);
final String marker_internalissues = readConfPropertyAsString(OPTION_MARKER_INTERNALISSUES, "@@internalissues@@", true, null);
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String datestring = f.format(info.getDate());
datestring= datestring.substring(0, 26) + ":" + datestring.substring(26); //hack into ISO 8601 format
// add content from SVNCommitInfo object where
// XML commit markers are
addElement( marker_logmessage, info.getLogmessage(), true);
addElement(marker_author, info.getAuthor(), false);
addElement(marker_revision, info.getRev(), false);
addElement("@@timestamp@@", datestring, false);
addElements(marker_changedfiles, info.getChangedFiles(), marker_fileselementname);
addElements(marker_deletedfiles, info.getDeletedFiles(), marker_fileselementname);
addElements(marker_addedfiles, info.getAddedFiles(), marker_fileselementname);
addElements(marker_issues, info.getIssues(), marker_issueselementname);
addElements(marker_internalissues, internalissues, marker_issueselementname);
}
private boolean verify(List<String> issues, boolean isTrace) throws MalformedURLException {
for(String issueid : issues) {
TTItemList items = getTTItems(issueid, isTrace);
if(items == null) {
return false;
}
}
return true;
}
private TTItemList getTTItems(String issueid, boolean isTrace) throws MalformedURLException {
long startTime = System.currentTimeMillis();
/* -- */
Sbmappservices72 ss = new Sbmappservices72(ClassLoader.getSystemResource("sbmappservices72.wsdl") );
logger.debug("Total execution of sbmappservices72 wsdl read took '"+(System.currentTimeMillis()-startTime)+"' milliseconds.");
Sbmappservices72PortType port = ss.getSbmappservices72();
Client client = ClientProxy.getClient(port);
if(isTrace) {
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
}
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext().put(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint);
/* -- */
logger.debug("Total execution of sbmappservices72 initialisation took '"+(System.currentTimeMillis()-startTime)+"' milliseconds.");
ObjectFactory fac = new ObjectFactory();
Auth auth = fac.createAuth();
auth.setUserId(fac.createAuthUserId(sbm_user));
auth.setPassword(fac.createAuthPassword(sbm_pass));
TableIdentifier table = fac.createTableIdentifier();
table.setDbName(fac.createTableIdentifierDbName(querytable));
MultipleResponseItemOptions options = fac.createMultipleResponseItemOptions();
options.setSpecifiedSections(fac.createResponseItemOptionsSpecifiedSections("SECTION:FIXED"));
options.setSections(SectionsOption.SECTIONS_SPECIFIED);
issueid = issueid.replaceAll("[^0-9]", "");
String queryWhereClause = "TS_ISSUEID = '"+issueid+"'";
if(query!=null && query.length()>0) queryWhereClause = queryWhereClause + " And " + query;
TTItemList items = null;
logger.debug(String.format("Using query against table '%s'. Query where clause: '%s'", querytable, queryWhereClause ));
try {
startTime = System.currentTimeMillis();
items = port.getItemsByQuery(auth, table, queryWhereClause, "", null, BigInteger.valueOf(1), options);
logger.debug("Total execution of sbmappservices72 GetItems took '"+(System.currentTimeMillis()-startTime)+"' milliseconds.");
//Marshaller m = JAXBContext.newInstance(TTItemList.class).createMarshaller();
//m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
//m.marshal( new JAXBElement<TTItemList>(new QName("uri","local"), TTItemList.class, items), System.err);
logger.debug(String.format("Got Response from getItemsByQuery"));
if(items!=null) {
logger.debug(String.format("Verification query matched '%s' item(s) for issue '%s.'",items.getTotalCount(), issueid));
}
if(items.getTotalCount().intValue()<=0) {
return null;
} else {
/* store internal ids (tableid:itemid) */
internalissues.add(items.getItem().get(0).getId().getValue().getTableIdItemId().getValue());
/* Store a map entry with internal id and title */
issues_titles.put(items.getItem().get(0).getId().getValue().getDisplayName().getValue(),
items.getItem().get(0).getTitle().getValue());
}
} catch (AEWebservicesFaultFault e) {
logger.debug("Web service fault: " + e.getFaultInfo());
} catch (Exception e) {
logger.debug("Unknown Exception", e);
}
return items;
}
private void postCommitUpdate(File svnadmin, String repos, String locale, String encoding, String revision, String newmessage) {
SVNAdminExecutor exec = new SVNAdminExecutor(svnadmin, repos);
exec.setRev(revision);
exec.setMessage(newmessage);
exec.setEncoding(encoding);
exec.setLocale(locale);
exec.executeSVNAdmin(SVNAdminCommand.SETLOG);
}
 
private void addElement(String pattern, String newCdata, boolean wrapCDATA) throws JaxenException {
OMComment comment = findComment(pattern);
if(comment!=null) {
OMFactory fac = OMAbstractFactory.getOMFactory();
int type = OMNode.TEXT_NODE;
if(wrapCDATA) {
type = OMNode.CDATA_SECTION_NODE;
}
OMText text = fac.createOMText(newCdata, type);
comment.insertSiblingAfter(text);
}
}
private void addElements(String pattern, List<String> files, String elementName) throws JaxenException {
if(files.size()<=0) return;
OMComment comment = findComment(pattern);
if(comment!=null) {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace ns = template.findNamespace(nss, null);
if(ns == null) logger.error(String.format("The namespace '%s' is not defined in the template.", nss));
for(String s : files) {
OMElement e = fac.createOMElement(elementName, ns);
OMText text = fac.createOMText(s, OMNode.TEXT_NODE);
e.addChild(text);
comment.insertSiblingAfter(e);
}
}
}
private OMComment findComment(String pattern) throws JaxenException {
AXIOMXPath path = new AXIOMXPath("//comment()[. = '"+pattern+"'][1]");
//OMNamespace ns = template.findNamespace(nss, null);
path.addNamespace("bru1", nss);
OMComment n = (OMComment) path.selectSingleNode(template);
if(n!=null) return n;
logger.warn("Comment '"+pattern+"' was not found in the XML template.");
return null;
}
private void exit(int errorCode) {
long endTime = System.currentTimeMillis();
logger.debug("Total execution took '"+(endTime-startTime)+"' milliseconds.");
System.exit(errorCode);
}
@SuppressWarnings("static-access")
private static Options getOptions() {
Option repository = OptionBuilder.withArgName( "repository" )
.hasArg()
.withLongOpt("repository")
.withDescription( "Path or URL to the SVN repository." )
.create( PARAM_REPOS );
repository.setRequired(true);
Option txn = OptionBuilder.withArgName( "transactionid" )
.hasArg()
.withLongOpt("transaction")
.withDescription( "The SVN transaction id to examine (TXN). You cannot combine txn with -rev. "
+ "When a txn is given, the repository path must be a local path.")
.create( PARAM_TXN );
Option rev = OptionBuilder.withArgName( "revision" )
.hasArg()
.withDescription( "A revision to examine. You cannot combine revision with -txn." )
.create( PARAM_REV );
Option config = OptionBuilder.withArgName( "config_file" )
.hasArg()
.withLongOpt("config")
.withDescription( "The configuration file to use. Defaults to 'emitter.properties'.")
.create( PARAM_CONFIG );
Options options = new Options();
options.addOption(repository);
options.addOption(txn);
options.addOption(rev);
options.addOption(config);
return options;
}
private static void printHelp() {
// automatically generate the help statement
HelpFormatter formatter = new HelpFormatter();
String header = "\nSVN-ALFEventEmitter " + VERSION +", a SVN hook implemented in Java to emit Eclipse ALFEvents on commit.\n\n";
String footer = "Please send bug reports to bru@brutex.de.\n(c)2014 Brian Rosenberger";
formatter.printHelp("java -jar SVN-ALFEventEmitter", header, getOptions(), footer, true);
}
private enum PropertyType {
STRING(), STRINGARRAY(), BOOLEAN();
}
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/emitter/EventManagerContext.java
0,0 → 1,91
/*
* Copyright 2014 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.emitter;
 
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
 
import org.apache.log4j.Logger;
 
/**
* The EventManagerContext class represents the eventmanager endpoint and authentication credentials.
*
* @author Brian Rosenberger, bru(at)brutex.de
* @since 0.1
*/
public class EventManagerContext {
private Logger logger = Logger.getLogger(EventManagerContext.class);
private final URL url;
private final String user;
private final byte[] pass;
private static final String CHARSET_UTF8 = "UTF-8";
/**
* Create a new Eventmanager context.
*
* @param url URL for the SBM ALF Eventmanager
* @param username ALFSecurity user name
* @param password ALFSecurity password
* @throws MalformedURLException
*/
public EventManagerContext(String url, String username, String password) throws MalformedURLException {
//Verify URL
try {
this.url = new URL(url);
} catch (MalformedURLException e) {
logger.error(String.format("Could not parse '%s' as a valid URL. %s", url, e.getMessage()));
throw e;
}
//Verify username
this.user = username;
if(this.user==null) {
final String s = "Username for ALF Eventmanager cannot be null.";
logger.error(s);
throw new IllegalArgumentException(s);
}
//Verify password
try {
this.pass = password.getBytes(CHARSET_UTF8);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
}
if(this.pass==null) {
final String s = "Password for ALF Eventmanager cannot be null.";
logger.error(s);
throw new IllegalArgumentException(s);
}
}
 
public URL getUrl() {
return url;
}
public String getUser() {
return user;
}
public byte[] getPass() {
return pass;
}
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/emitter/SimpleHttpEvent.java
0,0 → 1,101
/*
* 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.emitter;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.EntityBuilder;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
 
/**
* Construct a HTTP POST and send it.
*
* @author Brian Rosenberger, bru(at)brutex.de
* @since 0.1
*/
public class SimpleHttpEvent {
private final Logger logger = Logger.getLogger(SimpleHttpEvent.class);
private final String url;
private final String soapBody;
private long duration = 0;
/**
* Instantiates a new simple http event.
*
* @param url the url
* @param soapBody the soap body
*/
public SimpleHttpEvent(String url, String soapBody) {
this.url = url;
this.soapBody = soapBody;
}
/**
* Send soap.
*
* @param url the url
* @param soapBody the soap body
* @throws ClientProtocolException the client protocol exception
* @throws IOException Signals that an I/O exception has occurred.
*/
public void sendSoap(boolean isDropResponse) throws ClientProtocolException, IOException {
long start = System.currentTimeMillis();
HttpPost post = new HttpPost(url);
post.addHeader("Accept" , "text/xml");
post.addHeader("SOAPAction","");
EntityBuilder entitybuilder = EntityBuilder.create();
entitybuilder.setContentEncoding("UTF-8");
entitybuilder.setText(soapBody);
HttpEntity entity = entitybuilder.build();
post.setEntity(entity);
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpResponse r = httpclient.execute(post);
logger.debug("Sending event to ALF event manager");
if(! isDropResponse) {
HttpEntity e = r.getEntity();
StringBuilder sb = new StringBuilder();
BufferedReader in = new BufferedReader(new InputStreamReader(e.getContent()));
String s;
while( (s=in.readLine()) != null) {
sb.append(s);
}
logger.debug("Response: \n " + sb.toString());
} else {
logger.debug("Response was dropped.");
}
duration = System.currentTimeMillis() - start;
}
/**
* Get the response time of the soap call in milliseconds.
*
* @return duration or '0' if not yet executed
*/
public long getDuration() {
return duration;
}
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/net/brutex/emitter/util/EmitterUtil.java
0,0 → 1,60
/*
* Copyright 2014 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.emitter.util;
 
import java.io.File;
 
import org.apache.log4j.Logger;
 
/**
* The Class EmitterUtil.
*
* @author Brian Rosenberger, bru(at)brutex.de
*/
public final class EmitterUtil {
 
private static Logger logger = Logger.getLogger(EmitterUtil.class);
 
/**
* Check if the file exists and is readable.
*
* @param file The file to check
* @param isWritable also check if file is writable
* @param isExecutable also check if file is executable
* @return
*/
public static boolean verifyFile(String file, boolean isWritable, boolean isExecutable) {
logger.debug(String.format("Verifying file '%s'.", file));
File f = new File(file);
String fn = f.getAbsolutePath();
if(f.exists() && f.isFile()) {
if(isWritable && !f.canWrite()) {
logger.error(String.format("Cannot write to file '%s'.", fn));
return false;
}
if(isExecutable && !f.canExecute()) {
logger.error(String.format("Cannot execute file '%s'.", fn));
return false;
}
return true;
}
logger.error(String.format("Cannot read file '%s'.", fn));
return false;
}
 
}
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/sbmappservices72.wsdl
0,0 → 1,1741
<?xml version="1.0" encoding="utf-8"?>
<WSDL:definitions xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="urn:SerenaDiagnostics" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://localhost:80/gsoap/sbmappservices72.wsdl" xmlns:DIME="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:MIME="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ae="urn:sbmappservices72" xmlns="http://schemas.xmlsoap.org/wsdl/" name="sbmappservices72" targetNamespace="http://localhost:80/gsoap/sbmappservices72.wsdl" xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/">
<WSDL:types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="urn:SerenaDiagnostics">
<!-- <xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" /> -->
<!-- <xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" /> -->
<xsd:import namespace="urn:sbmappservices72" />
<xsd:complexType name="SerenaDiagnostics">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" ref="diag:XId" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="XId" type="xsd:string" />
<xsd:element name="SerenaDiagnostics" type="diag:SerenaDiagnostics" />
</xsd:schema>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="urn:sbmappservices72">
<!--
<xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
<xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
-->
<xsd:import namespace="urn:SerenaDiagnostics" />
<xsd:element name="AEWebservicesFault" type="xsd:string" />
<xsd:simpleType name="PrivilegeKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="USER-KIND" />
<xsd:enumeration value="ADMIN-KIND" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="GrantState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="INHERITED" />
<xsd:enumeration value="REVOKED" />
<xsd:enumeration value="GRANTED" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="MultipleOption">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CONTINUE-ON-FAILURE" />
<xsd:enumeration value="STOP-ON-FAILURE" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SectionsOption">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SECTIONS-ALL" />
<xsd:enumeration value="SECTIONS-NONE" />
<xsd:enumeration value="SECTIONS-SPECIFIED" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="StatusEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="IS-WARNING" />
<xsd:enumeration value="IS-INFORMATION" />
<xsd:enumeration value="IS-ERROR" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Attachment-Access-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ATTACHACCESS-DEFAULT" />
<xsd:enumeration value="ATTACHACCESS-RESTRICTED" />
<xsd:enumeration value="ATTACHACCESS-UNRESTRICTED" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DatePreference">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="DATE-FORMAT-FROM-LOCALE" />
<xsd:enumeration value="DATE-FORMAT-MM-DD-YYYY" />
<xsd:enumeration value="DATE-FORMAT-DD-MM-YYYY" />
<xsd:enumeration value="DATE-FORMAT-DD-MM-YYYY.S" />
<xsd:enumeration value="DATE-FORMAT-YYYY-MM-DD" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TimePreference">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="TIME-FORMAT-12HOUR" />
<xsd:enumeration value="TIME-FORMAT-24HOUR" />
<xsd:enumeration value="TIME-FORMAT-USE-GMT-OFFSET" />
<xsd:enumeration value="TIME-FORMAT-HONOR-DAYLIGHT" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AccessType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ACCESS-NONE" />
<xsd:enumeration value="ACCESS-USER" />
<xsd:enumeration value="ACCESS-OCCASIONAL" />
<xsd:enumeration value="ACCESS-EXTERNAL" />
<xsd:enumeration value="ACCESS-ADMIN" />
<xsd:enumeration value="ACCESS-APISCRIPT" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Set-Value-By">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="PRECEDENCE-VALUE" />
<xsd:enumeration value="INTERNAL-VALUE" />
<xsd:enumeration value="UUID-VALUE" />
<xsd:enumeration value="DISPLAY-VALUE" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Set-Value-Method">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="REPLACE-VALUES" />
<xsd:enumeration value="APPEND-VALUES" />
<xsd:enumeration value="REMOVE-VALUES" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ItemLink-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="DEFAULT-ITEM-LINK" />
<xsd:enumeration value="TWOWAY-NO-TRIGGERS" />
<xsd:enumeration value="ONEWAY-NO-TRIGGERS" />
<xsd:enumeration value="ONEWAY-CURRENT-TRIGGERS-LINKED" />
<xsd:enumeration value="TWOWAY-CURRENT-TRIGGERS-LINKED" />
<xsd:enumeration value="TWOWAY-LINKED-TRIGGERS-CURRENT" />
<xsd:enumeration value="TWOWAY-BOTH-TRIGGERS" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Solution-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="TEAMTRACK-SOLUTION" />
<xsd:enumeration value="USER-SOLUTION" />
<xsd:enumeration value="THIRDPARTY-SOLUTION" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Table-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="NOT-SPECIFIED" />
<xsd:enumeration value="SYSTEM-TABLE" />
<xsd:enumeration value="PRIMARY-TABLE" />
<xsd:enumeration value="AUXILIARY-TABLE" />
<xsd:enumeration value="SYSTEM-AUXILIARY-TABLE" />
<xsd:enumeration value="ARCHIVE-TABLE" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Field-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="FLDTYPE-UNKNOWN" />
<xsd:enumeration value="FLDTYPE-NUMERIC" />
<xsd:enumeration value="FLDTYPE-TEXT" />
<xsd:enumeration value="FLDTYPE-DATETIME" />
<xsd:enumeration value="FLDTYPE-SELECTION" />
<xsd:enumeration value="FLDTYPE-BINARY" />
<xsd:enumeration value="FLDTYPE-STATE" />
<xsd:enumeration value="FLDTYPE-USER" />
<xsd:enumeration value="FLDTYPE-PROJECT" />
<xsd:enumeration value="FLDTYPE-SUMMATION" />
<xsd:enumeration value="FLDTYPE-MULTIPLE-SELECTION" />
<xsd:enumeration value="FLDTYPE-CONTACT" />
<xsd:enumeration value="FLDTYPE-INCIDENT" />
<xsd:enumeration value="FLDTYPE-FOLDER" />
<xsd:enumeration value="FLDTYPE-RELATIONAL" />
<xsd:enumeration value="FLDTYPE-SUBRELATIONAL" />
<xsd:enumeration value="FLDTYPE-SYSTEM" />
<xsd:enumeration value="FLDTYPE-MULTIPLE-RELATIONAL" />
<xsd:enumeration value="FLDTYPE-MULTIPLE-GROUP" />
<xsd:enumeration value="FLDTYPE-MULTIPLE-USERGROUP" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ReportType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="LISTING" />
<xsd:enumeration value="ALLTYPES" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ReportCategory">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ALL" />
<xsd:enumeration value="APPLICATION" />
<xsd:enumeration value="BUILTIN" />
<xsd:enumeration value="MY" />
<xsd:enumeration value="QUICKLINKS" />
<xsd:enumeration value="USERREPORTS" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ReportAccessLevel">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="PRIVATE" />
<xsd:enumeration value="GUEST" />
<xsd:enumeration value="USER" />
<xsd:enumeration value="MANAGER" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="GetTransitionOptions">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="TRANSITIONS-ALL" />
<xsd:enumeration value="TRANSITIONS-QUICK" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Transition-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="TRANSITION-REGULAR" />
<xsd:enumeration value="TRANSITION-COPY" />
<xsd:enumeration value="TRANSITION-POST" />
<xsd:enumeration value="TRANSITION-SUBMITPROBLEM" />
<xsd:enumeration value="TRANSITION-MOBILE" />
<xsd:enumeration value="TRANSITION-SUBTASK" />
<xsd:enumeration value="TRANSITION-UPDATE" />
<xsd:enumeration value="TRANSITION-DELETE" />
<xsd:enumeration value="TRANSITION-EXTERNALPOST" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="ExtraValue">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="value" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ExtendedData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="data" type="ae:ExtraValue" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Auth">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="userId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="password" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="hostname" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="loginAsUserId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="displayName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="uuid" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="tableId" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="tableIdItemId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="issueId" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="StateIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="isClosed" type="xsd:boolean" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TransitionIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ProjectIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="fullyQualifiedName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TableIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="dbName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FieldIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="dbName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="loginId" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="GroupIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="SolutionIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="uniqueName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="tabName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ApplicationIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="WorkflowIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ReportIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ContactIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RoleIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="projectId" nillable="true" type="ae:ProjectIdentifier" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PrivilegeIdentifier">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="type" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Options">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="extraOption" type="ae:ExtraValue" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MultipleOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Options">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="multiOption" type="ae:MultipleOption" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ResponseItemOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Options">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="sections" type="ae:SectionsOption" />
<xsd:element minOccurs="0" maxOccurs="1" name="specifiedSections" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="limitedField" type="ae:FieldIdentifier" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="MultipleResponseItemOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:ResponseItemOptions">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="multiOption" type="ae:MultipleOption" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserSingleResponseOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Options">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="sections" type="ae:SectionsOption" />
<xsd:element minOccurs="0" maxOccurs="1" name="specifiedSections" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserResponseOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:UserSingleResponseOptions">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="multiOption" type="ae:MultipleOption" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Status">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="status" type="ae:StatusEnum" />
<xsd:element minOccurs="0" maxOccurs="1" name="code" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="message" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FieldValue">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="displayValue" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="internalValue" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="uuid" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FileAttachment">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="fileName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="showAsImage" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="modificationDateTime" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="url" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" default="ATTACHACCESS-DEFAULT" name="accessType" type="ae:Attachment-Access-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FileBufferBase64">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="data" nillable="true" type="xsd:base64Binary" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FileAttachmentContents">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:FileAttachment">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="contentsBase64" nillable="true" type="ae:FileBufferBase64" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FileContents">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="contentsBase64" nillable="true" type="ae:FileBufferBase64" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserSolutionData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="homeReport" nillable="true" type="ae:ReportIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="preferredProject" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserInfo">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="accessType" type="ae:AccessType" />
<xsd:element minOccurs="0" maxOccurs="1" name="email" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="emailCC" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="timezone" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="offsetFromGMT" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="dstSavings" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="datePreference" type="ae:DatePreference" />
<xsd:element minOccurs="0" maxOccurs="1" name="timePreference" type="ae:TimePreference" />
<xsd:element minOccurs="0" maxOccurs="1" name="namespaceName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="phoneNumber" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="locale" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="isDeleted" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="contact" nillable="true" type="ae:ContactIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxNotes" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxChangeHistory" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxItemsPerPage" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="fieldsMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="notesMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="changeHistoryMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="browserMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="group" type="ae:GroupIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="preferredSolution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="solutionData" type="ae:UserSolutionData" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserHolder">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GroupInfo">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="accessType" type="ae:AccessType" />
<xsd:element minOccurs="0" maxOccurs="1" name="memo" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="isDeleted" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GroupHolder">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="group" nillable="true" type="ae:GroupInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RoleInfo">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="id" nillable="true" type="ae:RoleIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="access" type="ae:GrantState" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PrivilegeInfo">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="privilegeId" nillable="true" type="ae:PrivilegeIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="access" type="ae:GrantState" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectId" nillable="true" type="ae:Identifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="projectId" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RoleHolder">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="role" nillable="true" type="ae:RoleInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PrivilegeHolder">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="privilege" nillable="true" type="ae:PrivilegeInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NameValue">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" nillable="true" type="ae:FieldIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="setValueBy" nillable="true" type="ae:Set-Value-By" />
<xsd:element minOccurs="0" maxOccurs="1" name="setValueMethod" nillable="true" type="ae:Set-Value-Method" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="value" type="ae:FieldValue" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Note">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="title" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="note" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="author" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="modificationDateTime" type="xsd:dateTime" />
<xsd:element minOccurs="1" maxOccurs="1" default="ATTACHACCESS-DEFAULT" name="accessType" type="ae:Attachment-Access-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemLink">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="itemID" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" default="DEFAULT-ITEM-LINK" name="linkType" type="ae:ItemLink-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="modificationDateTime" type="xsd:dateTime" />
<xsd:element minOccurs="1" maxOccurs="1" default="ATTACHACCESS-DEFAULT" name="accessType" type="ae:Attachment-Access-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="URLAttachment">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="url" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="showAsImage" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="modificationDateTime" type="xsd:dateTime" />
<xsd:element minOccurs="1" maxOccurs="1" default="ATTACHACCESS-DEFAULT" name="accessType" type="ae:Attachment-Access-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SubTasks">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="parentItemId" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="subtask" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TTItem">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="itemType" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="title" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="createdBy" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="createDate" nillable="true" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="modifiedBy" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="modifiedDate" nillable="true" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="activeInactive" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="state" nillable="true" type="ae:StateIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="owner" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="url" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="extendedField" type="ae:NameValue" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="note" type="ae:Note" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="itemLink" type="ae:ItemLink" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="urlAttachment" type="ae:URLAttachment" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="fileAttachment" type="ae:FileAttachment" />
<xsd:element minOccurs="0" maxOccurs="1" name="subtasks" nillable="true" type="ae:SubTasks" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TTItemList">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="item" type="ae:TTItem" />
<xsd:element minOccurs="1" maxOccurs="1" name="totalCount" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TTItemHolder">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ApplicationData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="application" nillable="true" type="ae:ApplicationIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="appDefUUID" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="revision" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SolutionData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="type" type="ae:Solution-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="prefix" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="processAppUUID" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Field">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="field" nillable="true" type="ae:FieldIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="fieldType" type="ae:Field-Type" />
<xsd:element minOccurs="1" maxOccurs="1" name="attribute" type="xsd:integer" />
<xsd:element minOccurs="1" maxOccurs="1" name="properties" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FieldWithValue">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Field">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="value" type="ae:FieldValue" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TableData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="type" type="ae:Table-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="field" type="ae:Field" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="QueryRange">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="startIndex" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="fetchSize" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="totalCount" type="xsd:integer" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportsFilter">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="author" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" default="LISTING" name="reportType" type="ae:ReportType" />
<xsd:element minOccurs="0" maxOccurs="1" default="ALL" name="reportCategory" type="ae:ReportCategory" />
<xsd:element minOccurs="0" maxOccurs="1" name="reportAccessLevel" type="ae:ReportAccessLevel" />
<xsd:element minOccurs="0" maxOccurs="1" name="report" nillable="true" type="ae:ReportIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="searchByName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" default="false" name="includeSubProjects" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="createdDateFrom" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="createdDateTo" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportInfo">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="report" nillable="true" type="ae:ReportIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="reportURL" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" default="LISTING" name="reportType" type="ae:ReportType" />
<xsd:element minOccurs="1" maxOccurs="1" name="reportCategory" type="ae:ReportCategory" />
<xsd:element minOccurs="1" maxOccurs="1" name="reportAccessLevel" type="ae:ReportAccessLevel" />
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="createdBy" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="createDate" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="modifiedBy" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="modifiedDate" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="execDate" type="xsd:dateTime" />
<xsd:element minOccurs="1" maxOccurs="1" name="isQueryAtRuntime" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:long" />
<xsd:element minOccurs="0" maxOccurs="1" name="reportReference" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="OrderBy">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="firstFieldName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="secondFieldName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportDefinition">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="orderBy" nillable="true" type="ae:OrderBy" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="column" type="ae:Field" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportResult">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="itemURL" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="fieldValue" type="ae:FieldWithValue" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GetReportsResult">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="queryRange" nillable="true" type="ae:QueryRange" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="report" type="ae:ReportInfo" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RunReportResult">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="queryRange" nillable="true" type="ae:QueryRange" />
<xsd:element minOccurs="1" maxOccurs="1" name="reportInfo" nillable="true" type="ae:ReportInfo" />
<xsd:element minOccurs="1" maxOccurs="1" name="reportDefinition" nillable="true" type="ae:ReportDefinition" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="result" type="ae:ReportResult" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RunReportXmlResult">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="result" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ProjectData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Transition">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="transition" nillable="true" type="ae:TransitionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="fromState" nillable="true" type="ae:StateIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="toState" nillable="true" type="ae:StateIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="type" type="ae:Transition-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="transitionAttribute" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NoteLoggerInfo">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="emailAddress" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StateChangeHistory">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="newState" nillable="true" type="ae:StateIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="transition" nillable="true" type="ae:TransitionIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="time" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="owner" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NoteAttachmentContents">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="time" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="title" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="body" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" default="ATTACHACCESS-DEFAULT" name="accessType" type="ae:Attachment-Access-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GetStateChangeHistoryResult">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="queryRange" nillable="true" type="ae:QueryRange" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="stateChangeHistory" type="ae:StateChangeHistory" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FailedItem">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="itemId" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="status" nillable="true" type="ae:Status" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FailedItemResponse">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" nillable="true" type="ae:FailedItem" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PauseItemsResponse">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:FailedItem" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Logout">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="LogoutResponse">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetVersion">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetVersionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetApplications">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetApplicationsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:ApplicationData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetSolutions">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetSolutionsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:SolutionData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetTables">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="tableType" type="ae:Table-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetTablesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:TableData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetReports">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="queryRange" nillable="true" type="ae:QueryRange" />
<xsd:element minOccurs="0" maxOccurs="1" name="reportsFilter" nillable="true" type="ae:ReportsFilter" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetReportsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" nillable="true" type="ae:GetReportsResult" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RunReport">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="queryRange" nillable="true" type="ae:QueryRange" />
<xsd:element minOccurs="0" maxOccurs="1" name="report" nillable="true" type="ae:ReportIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="reportCategory" type="ae:ReportCategory" />
<xsd:element minOccurs="0" maxOccurs="1" name="reportAccessLevel" type="ae:ReportAccessLevel" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RunReportResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:RunReportResult" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RunReportXml">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="report" nillable="true" type="ae:ReportData" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="RunReportXmlResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:RunReportXmlResult" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetSubmitProjects">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetSubmitProjectsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:ProjectData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreatePrimaryItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="parentItem" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="item" nillable="true" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="1" name="submitTransition" nillable="true" type="ae:TransitionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:ResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreatePrimaryItemResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreatePrimaryItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="parentItem" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="item" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="1" name="submitTransition" nillable="true" type="ae:TransitionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreatePrimaryItemsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="LinkSubtask">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="parentItem" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="childItem" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="LinkSubtaskResponse">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateAuxItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="item" nillable="true" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:ResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateAuxItemResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateAuxItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="item" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateAuxItemsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateFileAttachment">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="attachmentContents" nillable="true" type="ae:FileAttachmentContents" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateFileAttachmentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:FileAttachment" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateNoteAttachment">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="author" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="noteContents" nillable="true" type="ae:NoteAttachmentContents" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateNoteAttachmentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="itemId" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:ResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetItemResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="itemId" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetItemsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetItemsByQuery">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="queryWhereClause" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="orderByClause" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="firstRecord" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxReturnSize" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetItemsByQueryResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:TTItemList" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetFileAttachment">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="attachmentID" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetFileAttachmentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:FileAttachmentContents" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TransitionItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="item" nillable="true" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="1" name="transition" nillable="true" type="ae:TransitionIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" default="true" name="breakLock" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:ResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TransitionItemResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TransitionItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="item" type="ae:TTItem" />
<xsd:element minOccurs="0" maxOccurs="1" name="transition" nillable="true" type="ae:TransitionIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" default="true" name="breakLock" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleResponseItemOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TransitionItemsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:TTItemHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetAvailableTransitions">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="transitionOptions" type="ae:GetTransitionOptions" />
<xsd:element minOccurs="0" maxOccurs="1" name="attributeName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetAvailableTransitionsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:Transition" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetAvailableSubmitTransitions">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="attributeName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetAvailableSubmitTransitionsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:Transition" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateFileAttachment">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="attachmentContents" nillable="true" type="ae:FileAttachmentContents" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateFileAttachmentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:FileAttachment" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteItems">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="itemId" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteItemsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:Status" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteItemsByQuery">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="table" nillable="true" type="ae:TableIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="queryWhereClause" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteItemsByQueryResponse">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteAttachment">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="attachmentID" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteAttachmentResponse">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetNoteLoggerInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetNoteLoggerInfoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:NoteLoggerInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetStateChangeHistory">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="item" nillable="true" type="ae:ItemIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="queryRange" nillable="true" type="ae:QueryRange" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetStateChangeHistoryResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:GetStateChangeHistoryResult" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUsers">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="getCurrentUser" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="searchByName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="user" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:UserResponseOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUsersResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:UserHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="IsUserValid">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="IsUserValidResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</WSDL:types>
<WSDL:message name="Logout">
<WSDL:part name="parameters" element="ae:Logout" />
</WSDL:message>
<WSDL:message name="LogoutResponse">
<WSDL:part name="parameters" element="ae:LogoutResponse" />
</WSDL:message>
<WSDL:message name="GetVersion">
<WSDL:part name="parameters" element="ae:GetVersion" />
</WSDL:message>
<WSDL:message name="GetVersionResponse">
<WSDL:part name="parameters" element="ae:GetVersionResponse" />
</WSDL:message>
<WSDL:message name="GetApplications">
<WSDL:part name="parameters" element="ae:GetApplications" />
</WSDL:message>
<WSDL:message name="GetApplicationsResponse">
<WSDL:part name="parameters" element="ae:GetApplicationsResponse" />
</WSDL:message>
<WSDL:message name="GetSolutions">
<WSDL:part name="parameters" element="ae:GetSolutions" />
</WSDL:message>
<WSDL:message name="GetSolutionsResponse">
<WSDL:part name="parameters" element="ae:GetSolutionsResponse" />
</WSDL:message>
<WSDL:message name="GetTables">
<WSDL:part name="parameters" element="ae:GetTables" />
</WSDL:message>
<WSDL:message name="GetTablesResponse">
<WSDL:part name="parameters" element="ae:GetTablesResponse" />
</WSDL:message>
<WSDL:message name="GetReports">
<WSDL:part name="parameters" element="ae:GetReports" />
</WSDL:message>
<WSDL:message name="GetReportsResponse">
<WSDL:part name="parameters" element="ae:GetReportsResponse" />
</WSDL:message>
<WSDL:message name="RunReport">
<WSDL:part name="parameters" element="ae:RunReport" />
</WSDL:message>
<WSDL:message name="RunReportResponse">
<WSDL:part name="parameters" element="ae:RunReportResponse" />
</WSDL:message>
<WSDL:message name="RunReportXml">
<WSDL:part name="parameters" element="ae:RunReportXml" />
</WSDL:message>
<WSDL:message name="RunReportXmlResponse">
<WSDL:part name="parameters" element="ae:RunReportXmlResponse" />
</WSDL:message>
<WSDL:message name="GetSubmitProjects">
<WSDL:part name="parameters" element="ae:GetSubmitProjects" />
</WSDL:message>
<WSDL:message name="GetSubmitProjectsResponse">
<WSDL:part name="parameters" element="ae:GetSubmitProjectsResponse" />
</WSDL:message>
<WSDL:message name="CreatePrimaryItem">
<WSDL:part name="parameters" element="ae:CreatePrimaryItem" />
</WSDL:message>
<WSDL:message name="CreatePrimaryItemResponse">
<WSDL:part name="parameters" element="ae:CreatePrimaryItemResponse" />
</WSDL:message>
<WSDL:message name="CreatePrimaryItems">
<WSDL:part name="parameters" element="ae:CreatePrimaryItems" />
</WSDL:message>
<WSDL:message name="CreatePrimaryItemsResponse">
<WSDL:part name="parameters" element="ae:CreatePrimaryItemsResponse" />
</WSDL:message>
<WSDL:message name="LinkSubtask">
<WSDL:part name="parameters" element="ae:LinkSubtask" />
</WSDL:message>
<WSDL:message name="LinkSubtaskResponse">
<WSDL:part name="parameters" element="ae:LinkSubtaskResponse" />
</WSDL:message>
<WSDL:message name="CreateAuxItem">
<WSDL:part name="parameters" element="ae:CreateAuxItem" />
</WSDL:message>
<WSDL:message name="CreateAuxItemResponse">
<WSDL:part name="parameters" element="ae:CreateAuxItemResponse" />
</WSDL:message>
<WSDL:message name="CreateAuxItems">
<WSDL:part name="parameters" element="ae:CreateAuxItems" />
</WSDL:message>
<WSDL:message name="CreateAuxItemsResponse">
<WSDL:part name="parameters" element="ae:CreateAuxItemsResponse" />
</WSDL:message>
<WSDL:message name="CreateFileAttachment">
<WSDL:part name="parameters" element="ae:CreateFileAttachment" />
</WSDL:message>
<WSDL:message name="CreateFileAttachmentResponse">
<WSDL:part name="parameters" element="ae:CreateFileAttachmentResponse" />
</WSDL:message>
<WSDL:message name="CreateNoteAttachment">
<WSDL:part name="parameters" element="ae:CreateNoteAttachment" />
</WSDL:message>
<WSDL:message name="CreateNoteAttachmentResponse">
<WSDL:part name="parameters" element="ae:CreateNoteAttachmentResponse" />
</WSDL:message>
<WSDL:message name="GetItem">
<WSDL:part name="parameters" element="ae:GetItem" />
</WSDL:message>
<WSDL:message name="GetItemResponse">
<WSDL:part name="parameters" element="ae:GetItemResponse" />
</WSDL:message>
<WSDL:message name="GetItems">
<WSDL:part name="parameters" element="ae:GetItems" />
</WSDL:message>
<WSDL:message name="GetItemsResponse">
<WSDL:part name="parameters" element="ae:GetItemsResponse" />
</WSDL:message>
<WSDL:message name="GetItemsByQuery">
<WSDL:part name="parameters" element="ae:GetItemsByQuery" />
</WSDL:message>
<WSDL:message name="GetItemsByQueryResponse">
<WSDL:part name="parameters" element="ae:GetItemsByQueryResponse" />
</WSDL:message>
<WSDL:message name="GetFileAttachment">
<WSDL:part name="parameters" element="ae:GetFileAttachment" />
</WSDL:message>
<WSDL:message name="GetFileAttachmentResponse">
<WSDL:part name="parameters" element="ae:GetFileAttachmentResponse" />
</WSDL:message>
<WSDL:message name="TransitionItem">
<WSDL:part name="parameters" element="ae:TransitionItem" />
</WSDL:message>
<WSDL:message name="TransitionItemResponse">
<WSDL:part name="parameters" element="ae:TransitionItemResponse" />
</WSDL:message>
<WSDL:message name="TransitionItems">
<WSDL:part name="parameters" element="ae:TransitionItems" />
</WSDL:message>
<WSDL:message name="TransitionItemsResponse">
<WSDL:part name="parameters" element="ae:TransitionItemsResponse" />
</WSDL:message>
<WSDL:message name="GetAvailableTransitions">
<WSDL:part name="parameters" element="ae:GetAvailableTransitions" />
</WSDL:message>
<WSDL:message name="GetAvailableTransitionsResponse">
<WSDL:part name="parameters" element="ae:GetAvailableTransitionsResponse" />
</WSDL:message>
<WSDL:message name="GetAvailableSubmitTransitions">
<WSDL:part name="parameters" element="ae:GetAvailableSubmitTransitions" />
</WSDL:message>
<WSDL:message name="GetAvailableSubmitTransitionsResponse">
<WSDL:part name="parameters" element="ae:GetAvailableSubmitTransitionsResponse" />
</WSDL:message>
<WSDL:message name="UpdateFileAttachment">
<WSDL:part name="parameters" element="ae:UpdateFileAttachment" />
</WSDL:message>
<WSDL:message name="UpdateFileAttachmentResponse">
<WSDL:part name="parameters" element="ae:UpdateFileAttachmentResponse" />
</WSDL:message>
<WSDL:message name="DeleteItems">
<WSDL:part name="parameters" element="ae:DeleteItems" />
</WSDL:message>
<WSDL:message name="DeleteItemsResponse">
<WSDL:part name="parameters" element="ae:DeleteItemsResponse" />
</WSDL:message>
<WSDL:message name="DeleteItemsByQuery">
<WSDL:part name="parameters" element="ae:DeleteItemsByQuery" />
</WSDL:message>
<WSDL:message name="DeleteItemsByQueryResponse">
<WSDL:part name="parameters" element="ae:DeleteItemsByQueryResponse" />
</WSDL:message>
<WSDL:message name="DeleteAttachment">
<WSDL:part name="parameters" element="ae:DeleteAttachment" />
</WSDL:message>
<WSDL:message name="DeleteAttachmentResponse">
<WSDL:part name="parameters" element="ae:DeleteAttachmentResponse" />
</WSDL:message>
<WSDL:message name="GetNoteLoggerInfo">
<WSDL:part name="parameters" element="ae:GetNoteLoggerInfo" />
</WSDL:message>
<WSDL:message name="GetNoteLoggerInfoResponse">
<WSDL:part name="parameters" element="ae:GetNoteLoggerInfoResponse" />
</WSDL:message>
<WSDL:message name="GetStateChangeHistory">
<WSDL:part name="parameters" element="ae:GetStateChangeHistory" />
</WSDL:message>
<WSDL:message name="GetStateChangeHistoryResponse">
<WSDL:part name="parameters" element="ae:GetStateChangeHistoryResponse" />
</WSDL:message>
<WSDL:message name="GetUsers">
<WSDL:part name="parameters" element="ae:GetUsers" />
</WSDL:message>
<WSDL:message name="GetUsersResponse">
<WSDL:part name="parameters" element="ae:GetUsersResponse" />
</WSDL:message>
<WSDL:message name="IsUserValid">
<WSDL:part name="parameters" element="ae:IsUserValid" />
</WSDL:message>
<WSDL:message name="IsUserValidResponse">
<WSDL:part name="parameters" element="ae:IsUserValidResponse" />
</WSDL:message>
<WSDL:message name="AEWebservicesFaultFault">
<WSDL:part name="fault" element="ae:AEWebservicesFault" />
</WSDL:message>
+
+ <WSDL:operation name="CreateAuxItem">
+ <documentation>Creates a new aux item, given a table id and item data.</documentation>
+ <WSDL:input message="tns:CreateAuxItem" />
+ <WSDL:output message="tns:CreateAuxItemResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+ </WSDL:operation>
+ <WSDL:operation name="CreateAuxItems">
+ <documentation>Service definition of function ae__CreateAuxItems</documentation>
+ <WSDL:input message="tns:CreateAuxItems" />
+ <WSDL:output message="tns:CreateAuxItemsResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+ </WSDL:operation>
+ <WSDL:operation name="CreateFileAttachment">
+ <documentation>Creates a new attachment, given item id of the item to which it is to be attached, and the file attachment contents.</documentation>
+ <WSDL:input message="tns:CreateFileAttachment" />
+ <WSDL:output message="tns:CreateFileAttachmentResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+
+ <WSDL:operation name="GetItem">
+ <documentation>Gets item, given an item id.</documentation>
+ <WSDL:input message="tns:GetItem" />
+ <WSDL:output message="tns:GetItemResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+ </WSDL:operation>
+ <WSDL:operation name="GetItems">
+ <documentation>Gets items, given a list of item ids.</documentation>
+ <WSDL:input message="tns:GetItems" />
+ <WSDL:output message="tns:GetItemsResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+ </WSDL:operation>
+ <WSDL:operation name="GetItemsByQuery">
+ <documentation>Gets a list of existing items, given a table id, a query where clause, an order by clause (optional) and a maximum return list size.</documentation>
+ <WSDL:input message="tns:GetItemsByQuery" />
+ <WSDL:output message="tns:GetItemsByQueryResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+
+ <WSDL:operation name="TransitionItem">
+ <documentation>Transitions existing item, given the the item id, plus any data to update, and transition id to use a non-default transition.</documentation>
+ <WSDL:input message="tns:TransitionItem" />
+ <WSDL:output message="tns:TransitionItemResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+ </WSDL:operation>
+ <WSDL:operation name="TransitionItems">
+ <documentation>Transitions existing items, given the item ids, plus any data to update, and transition id to use a non-default transition.</documentation>
+ <WSDL:input message="tns:TransitionItems" />
+ <WSDL:output message="tns:TransitionItemsResponse" />
+ <WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
+
+ </WSDL:portType>
+ <WSDL:binding name="sbmappservices72" type="tns:sbmappservices72PortType">
+ <SOAP:binding transport="http://schemas.xmlsoap.org/soap/http" />
+ <WSDL:operation name="CreateAuxItem">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="CreateAuxItems">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="CreateFileAttachment">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="GetItem">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="GetItems">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="GetItemsByQuery">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="TransitionItem">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ <WSDL:operation name="TransitionItems">
+ <SOAP:operation soapAction="" />
+ <WSDL:input>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:input>
+ <WSDL:output>
+ <SOAP:body use="literal" parts="parameters" />
+ </WSDL:output>
+ <WSDL:fault name="AEWebservicesFault">
+ <SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
+ </WSDL:fault>
+ </WSDL:operation>
+ </WSDL:binding>
+ <WSDL:service name="sbmappservices72">
+ <documentation>SBM Application Web Services Version 7.2</documentation>
+ <WSDL:port name="sbmappservices72" binding="tns:sbmappservices72">
+ <SOAP:address location="http://localhost:80/gsoap/gsoap_ssl.dll?sbmappservices72" />
+ </WSDL:port>
+ </WSDL:service>
+</WSDL:definitions>
\ No newline at end of file
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/log4j.properties
0,0 → 1,16
 
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.encoding=UTF-8
 
# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c{2} - %m%n
 
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.net.brutex=DEBUG
 
log4j.logger.org.apache.axiom=INFO
log4j.logger.org.apache.commons.configuration=INFO
log4j.logger.org.apache.http=INFO
 
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/sbmadminservices72.wsdl
0,0 → 1,1584
<?xml version="1.0" encoding="utf-8"?>
<WSDL:definitions xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="urn:SerenaDiagnostics" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://localhost:80/gsoap/sbmadminservices72.wsdl" xmlns:DIME="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:MIME="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ae="urn:sbmadminservices72" xmlns="http://schemas.xmlsoap.org/wsdl/" name="sbmadminservices72" targetNamespace="http://localhost:80/gsoap/sbmadminservices72.wsdl" xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/">
<WSDL:types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="urn:SerenaDiagnostics">
<xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
<xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
<xsd:import namespace="urn:sbmadminservices72" />
<xsd:complexType name="SerenaDiagnostics">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" ref="diag:XId" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="XId" type="xsd:string" />
<xsd:element name="SerenaDiagnostics" type="diag:SerenaDiagnostics" />
</xsd:schema>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="urn:sbmadminservices72">
<xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" />
<xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
<xsd:import namespace="urn:SerenaDiagnostics" />
<xsd:element name="AEWebservicesFault" type="xsd:string" />
<xsd:simpleType name="PrivilegeKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="USER-KIND" />
<xsd:enumeration value="ADMIN-KIND" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="GrantState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="INHERITED" />
<xsd:enumeration value="REVOKED" />
<xsd:enumeration value="GRANTED" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="MultipleOption">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CONTINUE-ON-FAILURE" />
<xsd:enumeration value="STOP-ON-FAILURE" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="SectionsOption">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SECTIONS-ALL" />
<xsd:enumeration value="SECTIONS-NONE" />
<xsd:enumeration value="SECTIONS-SPECIFIED" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="StatusEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="IS-WARNING" />
<xsd:enumeration value="IS-INFORMATION" />
<xsd:enumeration value="IS-ERROR" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Attachment-Access-Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ATTACHACCESS-DEFAULT" />
<xsd:enumeration value="ATTACHACCESS-RESTRICTED" />
<xsd:enumeration value="ATTACHACCESS-UNRESTRICTED" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DatePreference">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="DATE-FORMAT-FROM-LOCALE" />
<xsd:enumeration value="DATE-FORMAT-MM-DD-YYYY" />
<xsd:enumeration value="DATE-FORMAT-DD-MM-YYYY" />
<xsd:enumeration value="DATE-FORMAT-DD-MM-YYYY.S" />
<xsd:enumeration value="DATE-FORMAT-YYYY-MM-DD" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TimePreference">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="TIME-FORMAT-12HOUR" />
<xsd:enumeration value="TIME-FORMAT-24HOUR" />
<xsd:enumeration value="TIME-FORMAT-USE-GMT-OFFSET" />
<xsd:enumeration value="TIME-FORMAT-HONOR-DAYLIGHT" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AccessType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ACCESS-NONE" />
<xsd:enumeration value="ACCESS-USER" />
<xsd:enumeration value="ACCESS-OCCASIONAL" />
<xsd:enumeration value="ACCESS-EXTERNAL" />
<xsd:enumeration value="ACCESS-ADMIN" />
<xsd:enumeration value="ACCESS-APISCRIPT" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="GroupListAction">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ADD-GROUPS" />
<xsd:enumeration value="REPLACE-GROUPS" />
<xsd:enumeration value="REMOVE-GROUPS" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="ExtraValue">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="value" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ExtendedData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="data" type="ae:ExtraValue" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Auth">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="userId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="password" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="hostname" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="loginAsUserId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="displayName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="uuid" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="tableId" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="tableIdItemId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="issueId" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="StateIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="isClosed" type="xsd:boolean" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TransitionIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ProjectIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="fullyQualifiedName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TableIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="dbName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FieldIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="dbName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="loginId" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="GroupIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="SolutionIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="uniqueName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="tabName" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ApplicationIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="WorkflowIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ReportIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ContactIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RoleIdentifier">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Identifier">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="projectId" nillable="true" type="ae:ProjectIdentifier" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="PrivilegeIdentifier">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="type" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Options">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="extraOption" type="ae:ExtraValue" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MultipleOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Options">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="multiOption" type="ae:MultipleOption" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ResponseItemOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Options">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="sections" type="ae:SectionsOption" />
<xsd:element minOccurs="0" maxOccurs="1" name="specifiedSections" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="limitedField" type="ae:FieldIdentifier" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="MultipleResponseItemOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:ResponseItemOptions">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="multiOption" type="ae:MultipleOption" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserSingleResponseOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:Options">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="sections" type="ae:SectionsOption" />
<xsd:element minOccurs="0" maxOccurs="1" name="specifiedSections" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserResponseOptions">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:UserSingleResponseOptions">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="multiOption" type="ae:MultipleOption" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Status">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="status" type="ae:StatusEnum" />
<xsd:element minOccurs="0" maxOccurs="1" name="code" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="message" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FieldValue">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="displayValue" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="internalName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="internalValue" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="uuid" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FileAttachment">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="fileName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="showAsImage" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="modificationDateTime" type="xsd:dateTime" />
<xsd:element minOccurs="0" maxOccurs="1" name="url" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" default="ATTACHACCESS-DEFAULT" name="accessType" type="ae:Attachment-Access-Type" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FileBufferBase64">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="data" nillable="true" type="xsd:base64Binary" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FileAttachmentContents">
<xsd:complexContent mixed="false">
<xsd:extension base="ae:FileAttachment">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="contentsBase64" nillable="true" type="ae:FileBufferBase64" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="FileContents">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="contentsBase64" nillable="true" type="ae:FileBufferBase64" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserSolutionData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="solution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="homeReport" nillable="true" type="ae:ReportIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="preferredProject" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserInfo">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="accessType" type="ae:AccessType" />
<xsd:element minOccurs="0" maxOccurs="1" name="email" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="emailCC" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="timezone" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="offsetFromGMT" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="dstSavings" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="datePreference" type="ae:DatePreference" />
<xsd:element minOccurs="0" maxOccurs="1" name="timePreference" type="ae:TimePreference" />
<xsd:element minOccurs="0" maxOccurs="1" name="namespaceName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="phoneNumber" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="locale" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="isDeleted" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="contact" nillable="true" type="ae:ContactIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxNotes" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxChangeHistory" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="maxItemsPerPage" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="fieldsMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="notesMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="changeHistoryMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="browserMask" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="group" type="ae:GroupIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="preferredSolution" nillable="true" type="ae:SolutionIdentifier" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="solutionData" type="ae:UserSolutionData" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserHolder">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GroupInfo">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="accessType" type="ae:AccessType" />
<xsd:element minOccurs="0" maxOccurs="1" name="memo" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="isDeleted" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GroupHolder">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="group" nillable="true" type="ae:GroupInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RoleInfo">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="id" nillable="true" type="ae:RoleIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="access" type="ae:GrantState" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PrivilegeInfo">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="privilegeId" nillable="true" type="ae:PrivilegeIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="access" type="ae:GrantState" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectId" nillable="true" type="ae:Identifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="projectId" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RoleHolder">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="role" nillable="true" type="ae:RoleInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PrivilegeHolder">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="privilege" nillable="true" type="ae:PrivilegeInfo" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="status" type="ae:Status" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ProjectGeneralData">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="parentProject" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="workflow" nillable="true" type="ae:WorkflowIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="useParentProjectWorkflow" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="1" name="projectSequence" type="xsd:integer" />
<xsd:element minOccurs="1" maxOccurs="1" name="allowSubmit" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="1" name="useParentSequenceNumbers" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="1" name="lastItemSequenceNumber" type="xsd:integer" />
<xsd:element minOccurs="1" maxOccurs="1" name="zeroFillTo" type="xsd:integer" />
<xsd:element minOccurs="1" maxOccurs="1" name="allowAnonymousSubmit" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="altName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Privilege">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectUUID" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="type" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NewUser">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="userHolder" nillable="true" type="ae:UserHolder" />
<xsd:element minOccurs="1" maxOccurs="1" name="isNew" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="temporaryPassword" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="extendedData" nillable="true" type="ae:ExtendedData" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Logout">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="LogoutResponse">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetVersion">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetVersionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateProject">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="projectName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="parentProject" nillable="true" type="ae:ProjectIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="workflow" nillable="true" type="ae:WorkflowIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="useParentProjectWorkflow" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" default="true" name="allowSubmit" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" default="true" name="useParentSequenceNumbers" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" default="0" name="lastItemSequenceNumber" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" default="5" name="zeroFillTo" type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" default="false" name="allowAnonymousSubmit" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="altName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="description" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateProjectResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="return" nillable="true" type="ae:ProjectGeneralData" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteProcessApp">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="processAppName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteProcessAppResponse">
<xsd:complexType>
<xsd:sequence />
</xsd:complexType>
</xsd:element>
<xsd:element name="HasUserPrivilege">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="privilegeName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasUserPrivilegeResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUserPrivileges">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="privilegeType" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUserPrivilegesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:Privilege" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="IsUserValid">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="IsUserValidResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUsers">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="getCurrentUser" type="xsd:boolean" />
<xsd:element minOccurs="0" maxOccurs="1" name="searchByName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="user" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:UserResponseOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUsersResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:UserHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateUsers">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="templateUser" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" default="false" name="cloneGroups" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="1" name="updateIfExists" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="user" type="ae:UserInfo" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:UserResponseOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateUsersResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:NewUser" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateUsers">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" default="false" name="allowEmptyValues" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="1" name="groupAction" type="ae:GroupListAction" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="user" type="ae:UserInfo" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:UserResponseOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateUsersResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:UserHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetGroups">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="searchByName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="group" type="ae:GroupIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetGroupsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:GroupHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateGroups">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="templateGroup" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="updateIfExists" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="group" type="ae:GroupInfo" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateGroupsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:GroupHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateGroups">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" default="false" name="allowEmptyValues" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="group" type="ae:GroupInfo" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UpdateGroupsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:GroupHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetUserPrivileges">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="privilege" type="ae:PrivilegeInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetUserPrivilegesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:PrivilegeHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetGroupPrivileges">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="group" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="privilege" type="ae:PrivilegeInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetGroupPrivilegesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:PrivilegeHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasGroupPrivilege">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="privilegeName" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="group" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasGroupPrivilegeResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetGroupPrivileges">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="0" maxOccurs="1" name="privilegeType" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="objectId" nillable="true" type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="group" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:Options" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetGroupPrivilegesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:Privilege" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasGroupRole">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="group" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="role" nillable="true" type="ae:RoleIdentifier" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasGroupRoleResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetGroupRoles">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="group" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetGroupRolesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:RoleHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasUserRole">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="1" maxOccurs="1" name="role" nillable="true" type="ae:RoleIdentifier" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HasUserRoleResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="return" type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUserRoles">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="project" nillable="true" type="ae:ProjectIdentifier" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetUserRolesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="return" type="ae:RoleHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetGroupRoles">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="group" nillable="true" type="ae:GroupIdentifier" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="role" type="ae:RoleInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetGroupRolesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:RoleHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetUserRoles">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="user" nillable="true" type="ae:UserIdentifier" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="role" type="ae:RoleInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SetUserRolesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:RoleHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetPrivilegeTypes">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="kind" type="ae:PrivilegeKind" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetPrivilegeTypesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetTypePrivileges">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="privilegeType" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetTypePrivilegesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetRoleUsers">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="role" nillable="true" type="ae:RoleIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:UserResponseOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetRoleUsersResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:UserHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetRoleGroups">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="auth" nillable="true" type="ae:Auth" />
<xsd:element minOccurs="1" maxOccurs="1" name="role" nillable="true" type="ae:RoleIdentifier" />
<xsd:element minOccurs="0" maxOccurs="1" name="options" nillable="true" type="ae:MultipleOptions" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetRoleGroupsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="return" type="ae:GroupHolder" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</WSDL:types>
<WSDL:message name="Logout">
<WSDL:part name="parameters" element="ae:Logout" />
</WSDL:message>
<WSDL:message name="LogoutResponse">
<WSDL:part name="parameters" element="ae:LogoutResponse" />
</WSDL:message>
<WSDL:message name="GetVersion">
<WSDL:part name="parameters" element="ae:GetVersion" />
</WSDL:message>
<WSDL:message name="GetVersionResponse">
<WSDL:part name="parameters" element="ae:GetVersionResponse" />
</WSDL:message>
<WSDL:message name="CreateProject">
<WSDL:part name="parameters" element="ae:CreateProject" />
</WSDL:message>
<WSDL:message name="CreateProjectResponse">
<WSDL:part name="parameters" element="ae:CreateProjectResponse" />
</WSDL:message>
<WSDL:message name="DeleteProcessApp">
<WSDL:part name="parameters" element="ae:DeleteProcessApp" />
</WSDL:message>
<WSDL:message name="DeleteProcessAppResponse">
<WSDL:part name="parameters" element="ae:DeleteProcessAppResponse" />
</WSDL:message>
<WSDL:message name="HasUserPrivilege">
<WSDL:part name="parameters" element="ae:HasUserPrivilege" />
</WSDL:message>
<WSDL:message name="HasUserPrivilegeResponse">
<WSDL:part name="parameters" element="ae:HasUserPrivilegeResponse" />
</WSDL:message>
<WSDL:message name="GetUserPrivileges">
<WSDL:part name="parameters" element="ae:GetUserPrivileges" />
</WSDL:message>
<WSDL:message name="GetUserPrivilegesResponse">
<WSDL:part name="parameters" element="ae:GetUserPrivilegesResponse" />
</WSDL:message>
<WSDL:message name="IsUserValid">
<WSDL:part name="parameters" element="ae:IsUserValid" />
</WSDL:message>
<WSDL:message name="IsUserValidResponse">
<WSDL:part name="parameters" element="ae:IsUserValidResponse" />
</WSDL:message>
<WSDL:message name="GetUsers">
<WSDL:part name="parameters" element="ae:GetUsers" />
</WSDL:message>
<WSDL:message name="GetUsersResponse">
<WSDL:part name="parameters" element="ae:GetUsersResponse" />
</WSDL:message>
<WSDL:message name="CreateUsers">
<WSDL:part name="parameters" element="ae:CreateUsers" />
</WSDL:message>
<WSDL:message name="CreateUsersResponse">
<WSDL:part name="parameters" element="ae:CreateUsersResponse" />
</WSDL:message>
<WSDL:message name="UpdateUsers">
<WSDL:part name="parameters" element="ae:UpdateUsers" />
</WSDL:message>
<WSDL:message name="UpdateUsersResponse">
<WSDL:part name="parameters" element="ae:UpdateUsersResponse" />
</WSDL:message>
<WSDL:message name="GetGroups">
<WSDL:part name="parameters" element="ae:GetGroups" />
</WSDL:message>
<WSDL:message name="GetGroupsResponse">
<WSDL:part name="parameters" element="ae:GetGroupsResponse" />
</WSDL:message>
<WSDL:message name="CreateGroups">
<WSDL:part name="parameters" element="ae:CreateGroups" />
</WSDL:message>
<WSDL:message name="CreateGroupsResponse">
<WSDL:part name="parameters" element="ae:CreateGroupsResponse" />
</WSDL:message>
<WSDL:message name="UpdateGroups">
<WSDL:part name="parameters" element="ae:UpdateGroups" />
</WSDL:message>
<WSDL:message name="UpdateGroupsResponse">
<WSDL:part name="parameters" element="ae:UpdateGroupsResponse" />
</WSDL:message>
<WSDL:message name="SetUserPrivileges">
<WSDL:part name="parameters" element="ae:SetUserPrivileges" />
</WSDL:message>
<WSDL:message name="SetUserPrivilegesResponse">
<WSDL:part name="parameters" element="ae:SetUserPrivilegesResponse" />
</WSDL:message>
<WSDL:message name="SetGroupPrivileges">
<WSDL:part name="parameters" element="ae:SetGroupPrivileges" />
</WSDL:message>
<WSDL:message name="SetGroupPrivilegesResponse">
<WSDL:part name="parameters" element="ae:SetGroupPrivilegesResponse" />
</WSDL:message>
<WSDL:message name="HasGroupPrivilege">
<WSDL:part name="parameters" element="ae:HasGroupPrivilege" />
</WSDL:message>
<WSDL:message name="HasGroupPrivilegeResponse">
<WSDL:part name="parameters" element="ae:HasGroupPrivilegeResponse" />
</WSDL:message>
<WSDL:message name="GetGroupPrivileges">
<WSDL:part name="parameters" element="ae:GetGroupPrivileges" />
</WSDL:message>
<WSDL:message name="GetGroupPrivilegesResponse">
<WSDL:part name="parameters" element="ae:GetGroupPrivilegesResponse" />
</WSDL:message>
<WSDL:message name="HasGroupRole">
<WSDL:part name="parameters" element="ae:HasGroupRole" />
</WSDL:message>
<WSDL:message name="HasGroupRoleResponse">
<WSDL:part name="parameters" element="ae:HasGroupRoleResponse" />
</WSDL:message>
<WSDL:message name="GetGroupRoles">
<WSDL:part name="parameters" element="ae:GetGroupRoles" />
</WSDL:message>
<WSDL:message name="GetGroupRolesResponse">
<WSDL:part name="parameters" element="ae:GetGroupRolesResponse" />
</WSDL:message>
<WSDL:message name="HasUserRole">
<WSDL:part name="parameters" element="ae:HasUserRole" />
</WSDL:message>
<WSDL:message name="HasUserRoleResponse">
<WSDL:part name="parameters" element="ae:HasUserRoleResponse" />
</WSDL:message>
<WSDL:message name="GetUserRoles">
<WSDL:part name="parameters" element="ae:GetUserRoles" />
</WSDL:message>
<WSDL:message name="GetUserRolesResponse">
<WSDL:part name="parameters" element="ae:GetUserRolesResponse" />
</WSDL:message>
<WSDL:message name="SetGroupRoles">
<WSDL:part name="parameters" element="ae:SetGroupRoles" />
</WSDL:message>
<WSDL:message name="SetGroupRolesResponse">
<WSDL:part name="parameters" element="ae:SetGroupRolesResponse" />
</WSDL:message>
<WSDL:message name="SetUserRoles">
<WSDL:part name="parameters" element="ae:SetUserRoles" />
</WSDL:message>
<WSDL:message name="SetUserRolesResponse">
<WSDL:part name="parameters" element="ae:SetUserRolesResponse" />
</WSDL:message>
<WSDL:message name="GetPrivilegeTypes">
<WSDL:part name="parameters" element="ae:GetPrivilegeTypes" />
</WSDL:message>
<WSDL:message name="GetPrivilegeTypesResponse">
<WSDL:part name="parameters" element="ae:GetPrivilegeTypesResponse" />
</WSDL:message>
<WSDL:message name="GetTypePrivileges">
<WSDL:part name="parameters" element="ae:GetTypePrivileges" />
</WSDL:message>
<WSDL:message name="GetTypePrivilegesResponse">
<WSDL:part name="parameters" element="ae:GetTypePrivilegesResponse" />
</WSDL:message>
<WSDL:message name="GetRoleUsers">
<WSDL:part name="parameters" element="ae:GetRoleUsers" />
</WSDL:message>
<WSDL:message name="GetRoleUsersResponse">
<WSDL:part name="parameters" element="ae:GetRoleUsersResponse" />
</WSDL:message>
<WSDL:message name="GetRoleGroups">
<WSDL:part name="parameters" element="ae:GetRoleGroups" />
</WSDL:message>
<WSDL:message name="GetRoleGroupsResponse">
<WSDL:part name="parameters" element="ae:GetRoleGroupsResponse" />
</WSDL:message>
<WSDL:message name="AEWebservicesFaultFault">
<WSDL:part name="fault" element="ae:AEWebservicesFault" />
</WSDL:message>
<WSDL:portType name="sbmadminservices72PortType">
<WSDL:operation name="Logout">
<documentation>Logs out the current active session, releasing license.</documentation>
<WSDL:input message="tns:Logout" />
<WSDL:output message="tns:LogoutResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetVersion">
<documentation>Gets the server version.</documentation>
<WSDL:input message="tns:GetVersion" />
<WSDL:output message="tns:GetVersionResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="CreateProject">
<documentation>Creates a project.</documentation>
<WSDL:input message="tns:CreateProject" />
<WSDL:output message="tns:CreateProjectResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="DeleteProcessApp">
<documentation>Deletes a process application.</documentation>
<WSDL:input message="tns:DeleteProcessApp" />
<WSDL:output message="tns:DeleteProcessAppResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="HasUserPrivilege">
<documentation>Checks for the specified privilege by name.</documentation>
<WSDL:input message="tns:HasUserPrivilege" />
<WSDL:output message="tns:HasUserPrivilegeResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetUserPrivileges">
<documentation>Returns a list of privileges that the specified user has.</documentation>
<WSDL:input message="tns:GetUserPrivileges" />
<WSDL:output message="tns:GetUserPrivilegesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="IsUserValid">
<documentation>Determine if the specified user is valid.</documentation>
<WSDL:input message="tns:IsUserValid" />
<WSDL:output message="tns:IsUserValidResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetUsers">
<documentation>Returns user information one or more users. If no user is specified, then information about the current user is returned.</documentation>
<WSDL:input message="tns:GetUsers" />
<WSDL:output message="tns:GetUsersResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="CreateUsers">
<documentation>Creates one or more users and optionally updates existing user(s) if they already exist.</documentation>
<WSDL:input message="tns:CreateUsers" />
<WSDL:output message="tns:CreateUsersResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="UpdateUsers">
<documentation>Updates one or more users. Can delete users by setting isDeleted.</documentation>
<WSDL:input message="tns:UpdateUsers" />
<WSDL:output message="tns:UpdateUsersResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetGroups">
<documentation>Returns group information for one or more groups.</documentation>
<WSDL:input message="tns:GetGroups" />
<WSDL:output message="tns:GetGroupsResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="CreateGroups">
<documentation>Creates one or more groups and optionally updates existing groups(s) if they already exist.</documentation>
<WSDL:input message="tns:CreateGroups" />
<WSDL:output message="tns:CreateGroupsResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="UpdateGroups">
<documentation>Updates one or more groups. Can delete groups by setting isDeleted.</documentation>
<WSDL:input message="tns:UpdateGroups" />
<WSDL:output message="tns:UpdateGroupsResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="SetUserPrivileges">
<documentation>Grants or revokes privileges for particular user.</documentation>
<WSDL:input message="tns:SetUserPrivileges" />
<WSDL:output message="tns:SetUserPrivilegesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="SetGroupPrivileges">
<documentation>Grants or revokes privileges for particular group.</documentation>
<WSDL:input message="tns:SetGroupPrivileges" />
<WSDL:output message="tns:SetGroupPrivilegesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="HasGroupPrivilege">
<documentation>Checks for the specified group privilege by name.</documentation>
<WSDL:input message="tns:HasGroupPrivilege" />
<WSDL:output message="tns:HasGroupPrivilegeResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetGroupPrivileges">
<documentation>Returns a list of privileges that the specified group has.</documentation>
<WSDL:input message="tns:GetGroupPrivileges" />
<WSDL:output message="tns:GetGroupPrivilegesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="HasGroupRole">
<documentation>Checks whether specified group is assigned to a role.</documentation>
<WSDL:input message="tns:HasGroupRole" />
<WSDL:output message="tns:HasGroupRoleResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetGroupRoles">
<documentation>Returns a list of roles assigned to particular group.</documentation>
<WSDL:input message="tns:GetGroupRoles" />
<WSDL:output message="tns:GetGroupRolesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="HasUserRole">
<documentation>Checks whether specified user is assigned to a role.</documentation>
<WSDL:input message="tns:HasUserRole" />
<WSDL:output message="tns:HasUserRoleResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetUserRoles">
<documentation>Returns a list of roles assigned to particular user.</documentation>
<WSDL:input message="tns:GetUserRoles" />
<WSDL:output message="tns:GetUserRolesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="SetGroupRoles">
<documentation>Grants of revokes set of project roles to particular group.</documentation>
<WSDL:input message="tns:SetGroupRoles" />
<WSDL:output message="tns:SetGroupRolesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="SetUserRoles">
<documentation>Grants of revokes set of project roles to particular user.</documentation>
<WSDL:input message="tns:SetUserRoles" />
<WSDL:output message="tns:SetUserRolesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetPrivilegeTypes">
<documentation>Returns set of available privilege types ( TS_PRIVTYPE_USER* for kind == ae__PrivilegeKind::USER_KIND, TS_PRIVTYPE_ADM* for kind == ae__PrivilegeKind::ADMIN_KIND )</documentation>
<WSDL:input message="tns:GetPrivilegeTypes" />
<WSDL:output message="tns:GetPrivilegeTypesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetTypePrivileges">
<documentation>Returns set of available privileges of particular type.</documentation>
<WSDL:input message="tns:GetTypePrivileges" />
<WSDL:output message="tns:GetTypePrivilegesResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetRoleUsers">
<documentation>Returns list of users granted particular project role.</documentation>
<WSDL:input message="tns:GetRoleUsers" />
<WSDL:output message="tns:GetRoleUsersResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
<WSDL:operation name="GetRoleGroups">
<documentation>Returns list of groups granted particular project role.</documentation>
<WSDL:input message="tns:GetRoleGroups" />
<WSDL:output message="tns:GetRoleGroupsResponse" />
<WSDL:fault name="AEWebservicesFault" message="tns:AEWebservicesFaultFault" />
</WSDL:operation>
</WSDL:portType>
<WSDL:binding name="sbmadminservices72" type="tns:sbmadminservices72PortType">
<SOAP:binding transport="http://schemas.xmlsoap.org/soap/http" />
<WSDL:operation name="Logout">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetVersion">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="CreateProject">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="DeleteProcessApp">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="HasUserPrivilege">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetUserPrivileges">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="IsUserValid">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetUsers">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="CreateUsers">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="UpdateUsers">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetGroups">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="CreateGroups">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="UpdateGroups">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="SetUserPrivileges">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="SetGroupPrivileges">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="HasGroupPrivilege">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetGroupPrivileges">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="HasGroupRole">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetGroupRoles">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="HasUserRole">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetUserRoles">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="SetGroupRoles">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="SetUserRoles">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetPrivilegeTypes">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetTypePrivileges">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetRoleUsers">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
<WSDL:operation name="GetRoleGroups">
<SOAP:operation soapAction="" />
<WSDL:input>
<SOAP:body use="literal" parts="parameters" />
</WSDL:input>
<WSDL:output>
<SOAP:body use="literal" parts="parameters" />
</WSDL:output>
<WSDL:fault name="AEWebservicesFault">
<SOAP:fault use="literal" name="AEWebservicesFault" namespace="" />
</WSDL:fault>
</WSDL:operation>
</WSDL:binding>
<WSDL:service name="sbmadminservices72">
<documentation>SBM Administrative Web Services Version 7.2</documentation>
<WSDL:port name="sbmadminservices72" binding="tns:sbmadminservices72">
<SOAP:address location="http://localhost:80/gsoap/gsoap_ssl.dll?sbmadminservices72" />
</WSDL:port>
</WSDL:service>
</WSDL:definitions>
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property
/SVN-ALFEventEmitter/branches/Maint 0.1 JRE6/src/LICENSE.txt
0,0 → 1,13
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.
Property changes:
Added: svn:mime-type
+text/plain
\ No newline at end of property