Hi,
I was trying hard to rebuild sipxconfig with my new function but i
always get build errors. Maybe I missed to include some dependencies but
there is no specific error shown. I added my changed files so hopefully
you could help me.
Thanks
Stephan
/*
*
*
* Copyright (C) 2007 Pingtel Corp., certain elements licensed under a
Contributor Agreement.
* Contributors retain copyright to elements licensed under a Contributor
Agreement.
* Licensed to the User under the LGPL license.
*
* $
*/
package org.sipfoundry.sipxconfig.admin.callgroup;
import java.util.Collection;
import java.util.List;
import org.sipfoundry.sipxconfig.admin.commserver.AliasProvider;
import org.sipfoundry.sipxconfig.alias.AliasOwner;
public interface CallGroupContext extends AliasOwner, AliasProvider {
public static final String CONTEXT_BEAN_NAME = "callGroupContext";
void activateCallGroups();
CallGroup loadCallGroup(Integer id);
List<CallGroup> getCallGroups();
void storeCallGroup(CallGroup callGroup);
void removeCallGroups(Collection ids);
void duplicateCallGroups(Collection ids);
void removeUser(Integer userId);
void addUsersToCallGroup(Integer callGroupId, Collection ids);
void clear();
void generateSipPasswords();
void removeCallGroupByAlias(String name);
void addUsersToCallGroupByName(String callGroupAlias, String userName);
}
/*
*
*
* Copyright (C) 2007 Pingtel Corp., certain elements licensed under a
Contributor Agreement.
* Contributors retain copyright to elements licensed under a Contributor
Agreement.
* Licensed to the User under the LGPL license.
*
* $
*/
package org.sipfoundry.sipxconfig.admin.callgroup;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.sipfoundry.sipxconfig.acd.AcdContext;
import org.sipfoundry.sipxconfig.acd.AcdQueue;
import org.sipfoundry.sipxconfig.admin.ExtensionInUseException;
import org.sipfoundry.sipxconfig.admin.NameInUseException;
import org.sipfoundry.sipxconfig.admin.commserver.SipxReplicationContext;
import org.sipfoundry.sipxconfig.admin.commserver.imdb.DataSet;
import org.sipfoundry.sipxconfig.alias.AliasManager;
import org.sipfoundry.sipxconfig.common.BeanId;
import org.sipfoundry.sipxconfig.common.CoreContext;
import org.sipfoundry.sipxconfig.common.SipxCollectionUtils;
import org.sipfoundry.sipxconfig.common.SipxHibernateDaoSupport;
import org.sipfoundry.sipxconfig.common.User;
import org.sipfoundry.sipxconfig.common.event.UserDeleteListener;
import org.springframework.orm.hibernate3.HibernateTemplate;
/**
* Hibernate implementation of the call group context
*/
public class CallGroupContextImpl extends SipxHibernateDaoSupport implements
CallGroupContext {
private static final String VALUE = "value";
private static final String QUERY_CALL_GROUP_IDS_WITH_NAME =
"callGroupIdsWithName";
private static final String QUERY_CALL_GROUP_IDS_WITH_ALIAS =
"callGroupIdsWithAlias";
private CoreContext m_coreContext;
private SipxReplicationContext m_replicationContext;
private AliasManager m_aliasManager;
private AcdContext m_acdContext;
// trivial setters
public void setCoreContext(CoreContext coreContext) {
m_coreContext = coreContext;
}
public void setReplicationContext(SipxReplicationContext
replicationContext) {
m_replicationContext = replicationContext;
}
public void setAliasManager(AliasManager aliasManager) {
m_aliasManager = aliasManager;
}
public void setAcdContext(AcdContext acdContext) {
m_acdContext = acdContext;
}
public CallGroup loadCallGroup(Integer id) {
return (CallGroup) getHibernateTemplate().load(CallGroup.class, id);
}
public void storeCallGroup(CallGroup callGroup) {
// Check for duplicate names or extensions before saving the call group
String name = callGroup.getName();
String extension = callGroup.getExtension();
final String huntGroupTypeName = "hunt group";
if (!m_aliasManager.canObjectUseAlias(callGroup, name)) {
throw new NameInUseException(huntGroupTypeName, name);
}
if (!m_aliasManager.canObjectUseAlias(callGroup, extension)) {
throw new ExtensionInUseException(huntGroupTypeName, extension);
}
getHibernateTemplate().saveOrUpdate(callGroup);
// activate call groups every time the call group is saved
activateCallGroups();
}
public void removeCallGroups(Collection ids) {
if (ids.isEmpty()) {
return;
}
m_acdContext.removeOverflowSettings(ids, AcdQueue.HUNTGROUP_TYPE);
removeAll(CallGroup.class, ids);
// activate call groups every time the call group is removed
activateCallGroups();
}
public UserDeleteListener createUserDeleteListener() {
return new OnUserDelete();
}
private class OnUserDelete extends UserDeleteListener {
@Override
protected void onUserDelete(User user) {
getHibernateTemplate().update(user);
removeUser(user.getId());
}
}
/**
* Removes all rings associated with a removed user. This is temporary. In
the long term we
* will introduce hibernate dependency between the users and rings table.
*
* Note: we cannot just blindly removed rings from database, there is a
cascade relationship
* between call groups and rings, hibernate will resave the ring if it's
removed from database
* but not from the call group
*
* This function is called from legacy notification service, there is no
need to activate call
* groups - they will be activated anyway because alias generation follows
user deletion.
*
* @param userId id of the user that us being deleted
*
*/
public void removeUser(Integer userId) {
final HibernateTemplate hibernate = getHibernateTemplate();
Collection rings =
hibernate.findByNamedQueryAndNamedParam("userRingsForUserId",
"userId", userId);
for (Iterator i = rings.iterator(); i.hasNext();) {
UserRing ring = (UserRing) i.next();
CallGroup callGroup = ring.getCallGroup();
callGroup.removeRing(ring);
hibernate.save(callGroup);
}
}
public List<CallGroup> getCallGroups() {
return getHibernateTemplate().loadAll(CallGroup.class);
}
public void duplicateCallGroups(Collection ids) {
for (Iterator i = ids.iterator(); i.hasNext();) {
CallGroup group = loadCallGroup((Integer) i.next());
// Create a copy of the call group with a unique name
CallGroup groupDup = (CallGroup) duplicateBean(group,
QUERY_CALL_GROUP_IDS_WITH_NAME);
// Extensions should be unique, so don't copy the extension from the
// source call group. The admin must fill it in explicitly.
groupDup.setExtension(null);
groupDup.setEnabled(false);
storeCallGroup(groupDup);
}
}
/**
* Remove all call groups - mostly used for testing
*/
public void clear() {
HibernateTemplate template = getHibernateTemplate();
Collection callGroups = template.loadAll(CallGroup.class);
template.deleteAll(callGroups);
}
/**
* Sends notification to profile generator to trigger alias generation
*/
public void activateCallGroups() {
m_replicationContext.generate(DataSet.ALIAS);
m_replicationContext.generate(DataSet.PERMISSION);
m_replicationContext.generate(DataSet.CREDENTIAL);
}
/**
* Generate aliases for all call groups
*/
public Collection getAliasMappings() {
final String dnsDomain = m_coreContext.getDomainName();
Collection callGroups = getCallGroups();
List allAliases = new ArrayList(callGroups.size());
for (Iterator i = callGroups.iterator(); i.hasNext();) {
CallGroup cg = (CallGroup) i.next();
allAliases.addAll(cg.generateAliases(dnsDomain));
}
return allAliases;
}
public boolean isAliasInUse(String alias) {
// Look for the ID of a call group with the specified alias as its name
or extension.
// If there is one, then the alias is in use.
List objs = getHibernateTemplate().findByNamedQueryAndNamedParam(
QUERY_CALL_GROUP_IDS_WITH_ALIAS, VALUE, alias);
return SipxCollectionUtils.safeSize(objs) > 0;
}
public Collection getBeanIdsOfObjectsWithAlias(String alias) {
List ids = getHibernateTemplate().findByNamedQueryAndNamedParam(
QUERY_CALL_GROUP_IDS_WITH_ALIAS, VALUE, alias);
Collection bids = BeanId.createBeanIdCollection(ids, CallGroup.class);
return bids;
}
public void addUsersToCallGroup(Integer callGroupId, Collection ids) {
CallGroup callGroup = loadCallGroup(callGroupId);
for (Iterator i = ids.iterator(); i.hasNext();) {
Integer userId = (Integer) i.next();
User user = m_coreContext.loadUser(userId);
callGroup.insertRingForUser(user);
}
storeCallGroup(callGroup);
}
public void generateSipPasswords() {
List<CallGroup> callGroups = getCallGroups();
List<CallGroup> changed = new ArrayList<CallGroup>();
for (CallGroup callGroup : callGroups) {
if (callGroup.generateSipPassword()) {
changed.add(callGroup);
}
}
// no need to trigger replication - do not use storeCallGroup
getHibernateTemplate().saveOrUpdateAll(changed);
}
@Override
public void removeCallGroupByAlias(String alias) {
List ids =
getHibernateTemplate().findByNamedQueryAndNamedParam(QUERY_CALL_GROUP_IDS_WITH_ALIAS,
VALUE, alias);
removeCallGroups(ids);
}
@Override
public void addUsersToCallGroupByName(String callGroupAlias, String
userName) {
List cids =
getHibernateTemplate().findByNamedQueryAndNamedParam(QUERY_CALL_GROUP_IDS_WITH_ALIAS,
VALUE, callGroupAlias);
List ids =
getHibernateTemplate().findByNamedQueryAndNamedParam("userIdsWithAlias", VALUE,
userName);
Iterator i = cids.iterator();
if(i.hasNext()) {
addUsersToCallGroup((Integer)i.next(), ids);
}
}
}
/*
*
*
* Copyright (C) 2007 Pingtel Corp., certain elements licensed under a
Contributor Agreement.
* Contributors retain copyright to elements licensed under a Contributor
Agreement.
* Licensed to the User under the LGPL license.
*
* $
*/
package org.sipfoundry.sipxconfig.api;
import java.rmi.RemoteException;
import java.util.Collection;
import org.sipfoundry.sipxconfig.admin.callgroup.CallGroupContext;
public class CallGroupServiceImpl implements CallGroupService {
private CallGroupContext m_context;
private CallGroupBuilder m_builder;
public void setCallGroupContext(CallGroupContext context) {
m_context = context;
}
public void setCallGroupBuilder(CallGroupBuilder builder) {
m_builder = builder;
}
public void addCallGroup(AddCallGroup acg) throws RemoteException {
CallGroup apiCg = acg.getCallGroup();
org.sipfoundry.sipxconfig.admin.callgroup.CallGroup myCg =
new org.sipfoundry.sipxconfig.admin.callgroup.CallGroup();
ApiBeanUtil.toMyObject(m_builder, myCg, apiCg);
m_context.storeCallGroup(myCg);
}
public GetCallGroupsResponse getCallGroups() throws RemoteException {
GetCallGroupsResponse response = new GetCallGroupsResponse();
Collection callGroupsColl = m_context.getCallGroups();
org.sipfoundry.sipxconfig.admin.callgroup.CallGroup[] callGroups =
(org.sipfoundry.sipxconfig.admin.callgroup.CallGroup[])
callGroupsColl
.toArray(new
org.sipfoundry.sipxconfig.admin.callgroup.CallGroup[callGroupsColl.size()]);
CallGroup[] arrayOfCallGroups =
(CallGroup[]) ApiBeanUtil.toApiArray(m_builder, callGroups,
CallGroup.class);
response.setCallGroups(arrayOfCallGroups);
return response;
}
public void deleteCallGroup(DeleteCallGroup group) throws RemoteException {
m_context.removeCallGroupByAlias(group.getCallGroupAlias());
}
public void addUserToCallGroup(AddUserToCallGroup data) throws
RemoteException {
m_context.addUsersToCallGroupByName(data.getAddUserCallGroupAlias(),
data.getUserName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
- NOTES:
- o If you are making a change that is not backwards compatible modify the target namespace
- to be of the form: http://www.sipfoundry.org/<year>/<2-digit-month>/<day>/ConfigService
- With that update the namespace mapping in web/build.xml:
- <mapping namespace="http://www.sipfoundry.org/2007/08/21/ConfigService" package="org.sipfoundry.sipxconfig.api"/>
- Make sure namespace is updated in SOAP examples and the examples all operate after the WSDL update
- Refer to: http://www.ibm.com/developerworks/webservices/library/ws-version/
- for further details on SOAP versioning
- o After editing this file, run "ant wsdl" target and hit f5 in eclipse on
- web project
-->
<definitions name="ConfigService" targetNamespace="http://www.sipfoundry.org/2007/08/21/ConfigService"
xmlns:tns="http://www.sipfoundry.org/2007/08/21/ConfigService" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<types>
<xsd:schema targetNamespace="http://www.sipfoundry.org/2007/08/21/ConfigService">
<!-- B U S I N E S S O B J E C T S -->
<xsd:simpleType name="RingType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="delayed">
<xsd:annotation>
<xsd:documentation>If no response</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="immediate">
<xsd:annotation>
<xsd:documentation>At the same time</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<!--
<xsd:complexType name="AbstractRing">
<xsd:sequence>
<xsd:element name="expiration" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="position" type="xsd:int" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
-->
<xsd:complexType name="UserRing">
<!--
- Ruby 1.8.4 from FC4 doesn't have support for this yet, latest download
- from SOAP4R does. Hold back on this as long as possible until FC4 catches up
- xsd:extension base="tns:AbstractRing"
-->
<xsd:sequence>
<xsd:element name="expiration" type="xsd:int" minOccurs="1" maxOccurs="1" />
<xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="position" type="xsd:int" minOccurs="1" maxOccurs="1" />
<xsd:element name="userName" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CallGroup">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="extension" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="description" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="enabled" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="rings" type="tns:UserRing" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfCallGroups">
<xsd:sequence>
<xsd:element name="callGroup" type="tns:CallGroup" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="PermissionType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="APPLICATION">
<xsd:annotation>
<xsd:documentation>Application permission type</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="CALL">
<xsd:annotation>
<xsd:documentation>Call handling permission type is used when defining dial plan rules</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="VOICEMAIL_SERVER">
<xsd:annotation>
<xsd:documentation>VMServer permission type defines which VM server hosts user VM box</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Permission">
<xsd:sequence>
<!--
- Names of custom permissions are assigned by the system and can not be set by the user
- when adding or modifying permissions
-->
<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="label" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="description" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="defaultValue" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<!--
- The following are read-only permission parameters
- type - call-handling, application or voicemail-server
- builtIn - builtIn or custom. Custom permissions can only be of type call-handling
-->
<xsd:element name="type" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="builtIn" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfPermissions">
<xsd:sequence>
<xsd:element name="permission" type="tns:Permission" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PermissionSearch">
<xsd:sequence>
<xsd:element name="byName" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="byLabel" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="User">
<xsd:sequence>
<xsd:element name="userName" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="pintoken" type="xsd:string" nillable="true" maxOccurs="1" />
<xsd:element name="lastName" type="xsd:string" nillable="true" maxOccurs="1" />
<xsd:element name="firstName" type="xsd:string" nillable="true" maxOccurs="1" />
<xsd:element name="sipPassword" type="xsd:string" nillable="true" maxOccurs="1" />
<xsd:element name="aliases" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="emailAddress" type="xsd:string" nillable="true" maxOccurs="1" />
<xsd:element name="groups" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="permissions" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfUsers">
<xsd:sequence>
<xsd:element name="user" type="tns:User" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Phone">
<xsd:sequence>
<xsd:element name="serialNumber" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="modelId" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="description" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="groups" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="lines" type="tns:Line" nillable="true" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="deviceVersion" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfPhones">
<xsd:sequence>
<xsd:element name="user" type="tns:Phone" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Property">
<xsd:all>
<xsd:element name="property" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="value" type="xsd:string" nillable="true" minOccurs="1" maxOccurs="1" />
</xsd:all>
</xsd:complexType>
<xsd:complexType name="PhoneSearch">
<xsd:sequence>
<xsd:element name="bySerialNumber" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="byGroup" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UserSearch">
<xsd:sequence>
<xsd:element name="byUserName" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="byFuzzyUserNameOrAlias" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="byGroup" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Line">
<xsd:sequence>
<xsd:element name="userId" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="uri" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AddExternalLine">
<xsd:sequence>
<xsd:element name="userId" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="displayName" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="password" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="registrationServer" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="voiceMail" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ParkOrbit">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="extension" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="description" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="enabled" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="music" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfParkOrbits">
<xsd:sequence>
<xsd:element name="parkOrbit" type="tns:ParkOrbit" nillable="true" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<!-- C A L L G R O U P -->
<xsd:element name="GetCallGroupsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="callGroups" type="tns:ArrayOfCallGroups" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddCallGroup">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="callGroup" type="tns:CallGroup" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeleteCallGroup">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="callGroupAlias" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddUserToCallGroup">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="addUserCallGroupAlias" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="userName" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- P A R K O R B I T -->
<xsd:element name="GetParkOrbitsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="parkOrbits" type="tns:ArrayOfParkOrbits" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddParkOrbit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="parkOrbit" type="tns:ParkOrbit" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- P E R M I S S I O N S -->
<xsd:element name="FindPermissionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="permissions" type="tns:ArrayOfPermissions" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddPermission">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="permission" type="tns:Permission" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FindPermission">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="search" type="tns:PermissionSearch" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ManagePermission">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="search" type="tns:PermissionSearch" minOccurs="1" maxOccurs="1" />
<xsd:element name="edit" type="tns:Property" maxOccurs="unbounded" />
<xsd:element name="deletePermission" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- P H O N E -->
<xsd:element name="FindPhoneResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="phones" type="tns:ArrayOfPhones" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddPhone">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="phone" type="tns:Phone" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FindPhone">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="search" type="tns:PhoneSearch" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ManagePhone">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="search" type="tns:PhoneSearch" minOccurs="1" maxOccurs="1" />
<xsd:element name="edit" type="tns:Property" maxOccurs="unbounded" />
<xsd:element name="deletePhone" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="addGroup" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="removeGroup" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="addLine" type="tns:Line" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="addExternalLine" type="tns:AddExternalLine" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="removeLineByUserId" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="removeLineByUri" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="generateProfiles" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="restart" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- U S E R -->
<xsd:element name="FindUserResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="users" type="tns:ArrayOfUsers" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddUser">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="user" type="tns:User" minOccurs="1" maxOccurs="1" />
<xsd:element name="pin" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ManageUser">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="search" type="tns:UserSearch" minOccurs="1" maxOccurs="1" />
<xsd:element name="edit" type="tns:Property" maxOccurs="unbounded" />
<xsd:element name="deleteUser" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="addGroup" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="removeGroup" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FindUser">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="search" type="tns:UserSearch" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- S Y S T E M I N F O -->
<xsd:complexType name="Domain">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="realm" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="aliases" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="SystemInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="domain" type="tns:Domain" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- T E S T -->
<xsd:element name="ResetServices">
<xsd:complexType>
<!-- A flag for each service indicating whether it should be reset -->
<xsd:sequence>
<xsd:element name="callGroup" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="parkOrbit" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="permission" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="phone" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<xsd:element name="user" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
<!-- if there is a superadmin already, service will preserve PIN, but all other data cleared -->
<xsd:element name="superAdmin" type="xsd:boolean" nillable="true" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<!--
- BOILER PLATE SECTION
- Much of this section is redundant, cutting and pasting. Automation is imminent.
-->
<!-- C A L L G R O U P S E R V I C E -->
<message name="addCallGroupResponse" />
<message name="addCallGroupRequest">
<part name="addCallGroup" element="tns:AddCallGroup" />
</message>
<message name="getCallGroupsResponse">
<part name="getCallGroups" element="tns:GetCallGroupsResponse" />
</message>
<message name="deleteCallGroupResponse" />
<message name="deleteCallGroupRequest">
<part name="deleteCallGroup" element="tns:DeleteCallGroup" />
</message>
<message name="getCallGroupsRequest" />
<message name="addUserToCallGroupResponse" />
<message name="addUserToCallGroupRequest">
<part name="addUserToCallGroup" element="tns:AddUserToCallGroup" />
</message>
<portType name="CallGroupService">
<documentation>Any change to call groups updates all servers automatically and asynchronously.</documentation>
<operation name="addCallGroup">
<input message="tns:addCallGroupRequest" />
<output message="tns:addCallGroupResponse" />
</operation>
<operation name="getCallGroups">
<input message="tns:getCallGroupsRequest" />
<output message="tns:getCallGroupsResponse" />
</operation>
<operation name="deleteCallGroup">
<input message="tns:deleteCallGroupRequest" />
<output message="tns:deleteCallGroupResponse" />
</operation>
<operation name="addUserToCallGroup">
<input message="tns:addUserToCallGroupRequest" />
<output message="tns:addUserToCallGroupResponse" />
</operation>
</portType>
<binding name="CallGroupServiceSoapBinding" type="tns:CallGroupService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="addCallGroup">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="getCallGroups">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="deleteCallGroup">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="addUserToCallGroup">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- C O N F E R E N C E B R I D G E S E R V I C E -->
<!-- P A R K O R B I T S E R V I C E -->
<message name="addParkOrbitResponse" />
<message name="addParkOrbitRequest">
<part name="addParkOrbit" element="tns:AddParkOrbit" />
</message>
<message name="getParkOrbitsResponse">
<part name="getParkOrbits" element="tns:GetParkOrbitsResponse" />
</message>
<message name="getParkOrbitsRequest" />
<portType name="ParkOrbitService">
<documentation>Any change to park orbits updates all servers automatically and asynchronously.</documentation>
<operation name="addParkOrbit">
<input message="tns:addParkOrbitRequest" />
<output message="tns:addParkOrbitResponse" />
</operation>
<operation name="getParkOrbits">
<input message="tns:getParkOrbitsRequest" />
<output message="tns:getParkOrbitsResponse" />
</operation>
</portType>
<binding name="ParkOrbitServiceSoapBinding" type="tns:ParkOrbitService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="addParkOrbit">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="getParkOrbits">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- P E R M I S S I O N S S E R V I C E -->
<message name="addPermissionResponse" />
<message name="addPermissionRequest">
<part name="addPermission" element="tns:AddPermission" />
</message>
<message name="findPermissionResponse">
<part name="findPermission" element="tns:FindPermissionResponse" />
</message>
<message name="findPermissionRequest">
<part name="findPermission" element="tns:FindPermission" />
</message>
<message name="managePermissionResponse" />
<message name="managePermissionRequest">
<part name="managePermission" element="tns:ManagePermission" />
</message>
<portType name="PermissionService">
<documentation>Any change to permisions updates all servers automatically and asynchronously.</documentation>
<operation name="addPermission">
<input message="tns:addPermissionRequest" />
<output message="tns:addPermissionResponse" />
</operation>
<operation name="findPermission">
<input message="tns:findPermissionRequest" />
<output message="tns:findPermissionResponse" />
</operation>
<operation name="managePermission">
<input message="tns:managePermissionRequest" />
<output message="tns:managePermissionResponse" />
</operation>
</portType>
<binding name="PermissionServiceSoapBinding" type="tns:PermissionService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="addPermission">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="findPermission">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="managePermission">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- P H O N E S E R V I C E -->
<message name="addPhoneResponse" />
<message name="addPhoneRequest">
<part name="addPhone" element="tns:AddPhone" />
</message>
<message name="findPhoneResponse">
<part name="findPhoneResponse" element="tns:FindPhoneResponse" />
</message>
<message name="findPhoneRequest">
<part name="findPhone" element="tns:FindPhone" />
</message>
<message name="managePhoneResponse" />
<message name="managePhoneRequest">
<part name="managePhone" element="tns:ManagePhone" />
</message>
<portType name="PhoneService">
<documentation>
Any change to phones requires generating profiles to get phone to update. See managePhone.
</documentation>
<operation name="addPhone">
<input message="tns:addPhoneRequest" />
<output message="tns:addPhoneResponse" />
</operation>
<operation name="findPhone">
<input message="tns:findPhoneRequest" />
<output message="tns:findPhoneResponse" />
</operation>
<operation name="managePhone">
<input message="tns:managePhoneRequest" />
<output message="tns:managePhoneResponse" />
</operation>
</portType>
<binding name="PhoneServiceSoapBinding" type="tns:PhoneService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="addPhone">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="findPhone">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="managePhone">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- T E S T S E R V I C E -->
<message name="resetServicesResponse" />
<message name="resetServicesRequest">
<part name="resetServices" element="tns:ResetServices" />
</message>
<portType name="TestService">
<operation name="resetServices">
<input message="tns:resetServicesRequest" />
<output message="tns:resetServicesResponse" />
</operation>
</portType>
<binding name="TestServiceSoapBinding" type="tns:TestService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="resetServices">
<soapbind:operation />
<input name="resetServicesRequest">
<soapbind:body use="literal" />
</input>
<output name="resetServicesResponse">
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- U S E R S E R V I C E -->
<message name="addUserResponse" />
<message name="addUserRequest">
<part name="addUser" element="tns:AddUser" />
</message>
<message name="findUserResponse">
<part name="findUserResponse" element="tns:FindUserResponse" />
</message>
<message name="findUserRequest">
<part name="findUser" element="tns:FindUser" />
</message>
<message name="manageUserResponse" />
<message name="manageUserRequest">
<part name="manageUser" element="tns:ManageUser" />
</message>
<portType name="UserService">
<documentation>
To get all users, call findUser with an empty search argument. Any change to users updates all servers
automatically and asynchronously.
</documentation>
<operation name="addUser">
<input message="tns:addUserRequest" />
<output message="tns:addUserResponse" />
</operation>
<operation name="findUser">
<input message="tns:findUserRequest" />
<output message="tns:findUserResponse" />
</operation>
<operation name="manageUser">
<input message="tns:manageUserRequest" />
<output message="tns:manageUserResponse" />
</operation>
</portType>
<binding name="UserServiceSoapBinding" type="tns:UserService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="addUser">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="findUser">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
<operation name="manageUser">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- S Y S T E M S E R V I C E -->
<message name="systemInfoResponse">
<part name="systemInfo" element="tns:SystemInfo" />
</message>
<message name="systemInfoRequest" />
<portType name="SystemService">
<documentation>System related information and functions</documentation>
<operation name="systemInfo">
<input message="tns:systemInfoRequest" />
<output message="tns:systemInfoResponse" />
</operation>
</portType>
<binding name="SystemServiceSoapBinding" type="tns:SystemService">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="systemInfo">
<soapbind:operation />
<input>
<soapbind:body use="literal" />
</input>
<output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
<!-- S E R V I C E S -->
<service name="ConfigImplService">
<port name="CallGroupService" binding="tns:CallGroupServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/CallGroupService" />
</port>
<port name="ParkOrbitService" binding="tns:ParkOrbitServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/ParkOrbitService" />
</port>
<port name="PermissionService" binding="tns:PermissionServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/PermissionService" />
</port>
<port name="PhoneService" binding="tns:PhoneServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/PhoneService" />
</port>
<port name="TestService" binding="tns:TestServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/TestService" />
</port>
<port name="UserService" binding="tns:UserServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/UserService" />
</port>
<port name="SystemService" binding="tns:SystemServiceSoapBinding">
<soapbind:address location="http://localhost:9999/sipxconfig/services/SystemService" />
</port>
</service>
</definitions>
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev/