Damian Krzeminski wrote: > Dale asked me to review sipXconfig changes related to that. I think I'll > have a small patch related to those [...] >
[...] This is a promised patch (I couldn't find the JIRA issue. so I am just attaching it here). It applies cleanly on top of the user_dworley_instrument2 branch. I can commit it to this SVN branch that's easier. Let me know if you want me to squash all sipXconfig changes related to this feature or coordinate taking it to mainline in any other way. BTW: Paul asked for making the changes for nortel12x0 phones. The changes are trivial but the phone does not have separate authentication user name setting, and I was not sure I can just change the generated username. I am afraid something may stop working if I do that. Damian
From 42bc72dd9f977d3835e4f29207676ce12c9e9fb4 Mon Sep 17 00:00:00 2001 From: Damian Krzeminski <[email protected]> Date: Thu, 29 Oct 2009 11:05:07 -0400 Subject: [PATCH] review XECS-36 cont. - sipXconfig changes only Add Line.getUserName (similar to Line.getAuthenticationName) to help with calculating appropriate value for plug-in methods used in LineDefaults objects. Treat external lines differently from internal lines. External lines don't have user associated and represent registrations for external systems. sipXconfig should preserve the authentication name configured by admin (returning 'null' from Line.getUserName and Line.getUserAuthentication name preserves the admin input). Minor updates to device plug-in: use Line.getUserName and Line.getAuthenticationName where possible. --- .../sipxconfig/admin/callgroup/CallGroup.java | 2 +- .../admin/commserver/imdb/Credentials.java | 12 +++--- .../src/org/sipfoundry/sipxconfig/common/User.java | 2 +- .../src/org/sipfoundry/sipxconfig/phone/Line.java | 43 ++++++++++--------- .../org/sipfoundry/sipxconfig/phone/LineTest.java | 42 +++++--------------- .../phone/aastra/AastraLineDefaultsTest.java | 2 +- .../phone/counterpath/CounterpathPhone.java | 5 +-- .../phone/lg_nortel/LgNortelLineDefaults.java | 14 ++----- .../sipxconfig/phone/nt1535/NT1535Phone.java | 6 +-- .../phone/polycom/PolycomLineDefaults.java | 18 ++------ .../sipxconfig/phone/polycom/PolycomPhoneTest.java | 2 +- .../phone/polycom/expected-phone.cfg.xml | 8 ++-- 12 files changed, 57 insertions(+), 99 deletions(-) diff --git a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/callgroup/CallGroup.java b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/callgroup/CallGroup.java index 497a14c..e7d074a 100644 --- a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/callgroup/CallGroup.java +++ b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/callgroup/CallGroup.java @@ -116,7 +116,7 @@ public class CallGroup extends AbstractCallSequence implements NamedObject { } public String getSipPassword() { - return StringUtils.defaultString(m_sipPassword); + return m_sipPassword; } public void setSipPassword(String sipPassword) { diff --git a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/commserver/imdb/Credentials.java b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/commserver/imdb/Credentials.java index 5dcc614..dd0333c 100644 --- a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/commserver/imdb/Credentials.java +++ b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/admin/commserver/imdb/Credentials.java @@ -5,7 +5,7 @@ * Contributors retain copyright to elements licensed under a Contributor Agreement. * Licensed to the User under the LGPL license. * - * $ + * */ package org.sipfoundry.sipxconfig.admin.commserver.imdb; @@ -20,6 +20,7 @@ import org.sipfoundry.sipxconfig.common.SipUri; import org.sipfoundry.sipxconfig.common.SpecialUser.SpecialUserType; import org.sipfoundry.sipxconfig.common.User; +import static org.apache.commons.lang.StringUtils.defaultString; import static org.sipfoundry.sipxconfig.common.DaoUtils.forAllUsersDo; public class Credentials extends DataSetGenerator { @@ -60,8 +61,7 @@ public class Credentials extends DataSetGenerator { String uri = SipUri.format(null, callGroup.getName(), domainName); String sipPassword = callGroup.getSipPassword(); String sipPasswordHash = callGroup.getSipPasswordHash(realm); - addCredentialsItem(items, uri, callGroup.getName(), - sipPassword, sipPasswordHash, realm); + addCredentialsItem(items, uri, callGroup.getName(), sipPassword, sipPasswordHash, realm); } private void addSpecialUser(List<Map<String, String>> items, SpecialUserType specialUserType, String domainName, @@ -77,13 +77,13 @@ public class Credentials extends DataSetGenerator { addCredentialsItem(items, uri, user.getUserName(), user.getSipPassword(), user.getPintoken(), realm); } - private void addCredentialsItem(List<Map<String, String>> items, String uri, String name, - String sipPassword, String pintoken, String realm) { + private void addCredentialsItem(List<Map<String, String>> items, String uri, String name, String sipPassword, + String pintoken, String realm) { Map<String, String> item = addItem(items); item.put("uri", uri); item.put("realm", realm); item.put("userid", name); - item.put("passtoken", sipPassword); + item.put("passtoken", defaultString(sipPassword)); item.put("pintoken", pintoken); item.put("authtype", "DIGEST"); } diff --git a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/common/User.java b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/common/User.java index 910f2dd..c9f26b1 100644 --- a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/common/User.java +++ b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/common/User.java @@ -135,7 +135,7 @@ public class User extends BeanWithGroups implements NamedObject { } public String getSipPassword() { - return StringUtils.defaultString(m_sipPassword); + return m_sipPassword; } public String getSipPasswordHash(String realm) { diff --git a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/phone/Line.java b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/phone/Line.java index ccd1a56..6e4e627 100644 --- a/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/phone/Line.java +++ b/sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/phone/Line.java @@ -11,7 +11,6 @@ package org.sipfoundry.sipxconfig.phone; import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.sipfoundry.sipxconfig.common.DataCollectionItem; import org.sipfoundry.sipxconfig.common.User; import org.sipfoundry.sipxconfig.setting.BeanWithGroups; @@ -36,28 +35,30 @@ public class Line extends BeanWithGroups implements DataCollectionItem { return m_user; } - // Get the string to be used as the "authentication user": - // [user]/[phone-serial-no] - public String getAuthenticationUserName() { - User u = getUser(); - String userName; - if (u != null) { - userName = u.getUserName(); - } else { - LineInfo info = getPhone().getLineInfo(this); - if (info != null) { - userName = info.getUserId(); - } else { - userName = ""; - } + public void setUser(User user) { + m_user = user; + } + + public String getUserName() { + if (m_user == null) { + // for external lines user name is stored in DB already + return null; } - return StringUtils.defaultString(userName) - + "/" - + StringUtils.defaultString(getPhone().getSerialNumber()); + return m_user.getUserName(); } - public void setUser(User user) { - m_user = user; + /** + * Get the string to be used as the "authentication user" + * + * For internal lines it looks like this: [user]/[phone-serial-no] For external lines it's the + * same as username. + */ + public String getAuthenticationUserName() { + if (m_user == null) { + // no user -- external line - use default value stored in DB + return null; + } + return String.format("%s/%s", getUserName(), getPhone().getSerialNumber()); } public String getDisplayLabel() { @@ -76,6 +77,7 @@ public class Line extends BeanWithGroups implements DataCollectionItem { m_position = position; } + @Override protected Setting loadSettings() { Phone phone = getPhone(); Setting settings = phone.loadLineSettings(); @@ -85,6 +87,7 @@ public class Line extends BeanWithGroups implements DataCollectionItem { return settings; } + @Override public Set getGroups() { // Use phone groups until we can justify lines // having their own groups and work out a reasonable UI diff --git a/sipXconfig/neoconf/test/org/sipfoundry/sipxconfig/phone/LineTest.java b/sipXconfig/neoconf/test/org/sipfoundry/sipxconfig/phone/LineTest.java index 5b57e0e..ae3cf02 100644 --- a/sipXconfig/neoconf/test/org/sipfoundry/sipxconfig/phone/LineTest.java +++ b/sipXconfig/neoconf/test/org/sipfoundry/sipxconfig/phone/LineTest.java @@ -5,18 +5,18 @@ * Contributors retain copyright to elements licensed under a Contributor Agreement. * Licensed to the User under the LGPL license. * - * $ + * */ package org.sipfoundry.sipxconfig.phone; -import junit.framework.TestCase; - import org.sipfoundry.sipxconfig.TestHelper; import org.sipfoundry.sipxconfig.common.User; import org.sipfoundry.sipxconfig.device.DeviceDefaults; import org.sipfoundry.sipxconfig.phone.acme.AcmePhone; import org.sipfoundry.sipxconfig.setting.Group; +import junit.framework.TestCase; + import static org.easymock.EasyMock.createNiceMock; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; @@ -127,52 +127,30 @@ public class LineTest extends TestCase { } public void testNoUserGetAuthorizationName() { - DeviceDefaults defaults = new DeviceDefaults(); - defaults.setDomainManager(TestHelper.getTestDomainManager("sipfoundry.org")); - - PhoneContext phoneContext = createNiceMock(PhoneContext.class); - phoneContext.getPhoneDefaults(); - expectLastCall().andReturn(defaults).anyTimes(); - replay(phoneContext); - - Phone phone = new AcmePhone(); PhoneModel model = new PhoneModel("acmePhone"); model.setModelFilePath("acmePhone"); + + Phone phone = new AcmePhone(); + phone.setModelFilesContext(TestHelper.getModelFilesContext()); phone.setModel(model); - phone.setPhoneContext(phoneContext); phone.setSerialNumber("0000DEADBEEF"); - phone.setModelFilesContext(TestHelper.getModelFilesContext()); Line line = phone.createLine(); line.setModelFilesContext(TestHelper.getModelFilesContext()); phone.addLine(line); - LineInfo li = new LineInfo(); - li.setDisplayName("Display Name"); - li.setUserId("user_id"); - li.setRegistrationServer("sipfoundry.org"); - phone.setLineInfo(line, li); - - assertEquals("user_id/0000DEADBEEF", line.getAuthenticationUserName()); + assertNull(line.getAuthenticationUserName()); } public void testUserGetAuthorizationName() { - DeviceDefaults defaults = new DeviceDefaults(); - defaults.setDomainManager(TestHelper.getTestDomainManager("sipfoundry.org")); - - PhoneContext phoneContext = createNiceMock(PhoneContext.class); - phoneContext.getPhoneDefaults(); - expectLastCall().andReturn(defaults).anyTimes(); - replay(phoneContext); - - Phone phone = new AcmePhone(); PhoneModel model = new PhoneModel("acmePhone"); model.setModelFilePath("acmePhone"); + + Phone phone = new AcmePhone(); + phone.setModelFilesContext(TestHelper.getModelFilesContext()); phone.setModel(model); - phone.setPhoneContext(phoneContext); phone.setSerialNumber("0000DEADBEEF"); - phone.setModelFilesContext(TestHelper.getModelFilesContext()); Line line = phone.createLine(); line.setModelFilesContext(TestHelper.getModelFilesContext()); phone.addLine(line); diff --git a/sipXconfig/plugins/aastra/test/org/sipfoundry/sipxconfig/phone/aastra/AastraLineDefaultsTest.java b/sipXconfig/plugins/aastra/test/org/sipfoundry/sipxconfig/phone/aastra/AastraLineDefaultsTest.java index 0ad064b..acd8a85 100644 --- a/sipXconfig/plugins/aastra/test/org/sipfoundry/sipxconfig/phone/aastra/AastraLineDefaultsTest.java +++ b/sipXconfig/plugins/aastra/test/org/sipfoundry/sipxconfig/phone/aastra/AastraLineDefaultsTest.java @@ -60,7 +60,7 @@ public class AastraLineDefaultsTest extends TestCase { assertEquals(null, m_defaults.getScreenName2()); // Should Fix this : a default user password should be set in this case - assertEquals("", m_defaults.getAuthorizationPassword()); + assertEquals(null, m_defaults.getAuthorizationPassword()); assertEquals("example.org", m_defaults.getRegistrationServer()); } diff --git a/sipXconfig/plugins/counterpath/src/org/sipfoundry/sipxconfig/phone/counterpath/CounterpathPhone.java b/sipXconfig/plugins/counterpath/src/org/sipfoundry/sipxconfig/phone/counterpath/CounterpathPhone.java index 48ebeeb..3d9f1e7 100644 --- a/sipXconfig/plugins/counterpath/src/org/sipfoundry/sipxconfig/phone/counterpath/CounterpathPhone.java +++ b/sipXconfig/plugins/counterpath/src/org/sipfoundry/sipxconfig/phone/counterpath/CounterpathPhone.java @@ -107,10 +107,7 @@ public class CounterpathPhone extends Phone { @SettingEntry(path = REG_USERNAME) public String getUserName() { - if (m_user == null) { - return null; - } - return m_user.getUserName(); + return m_line.getUserName(); } @SettingEntry(path = REG_AUTH_USERNAME) diff --git a/sipXconfig/plugins/lg-nortel/src/org/sipfoundry/sipxconfig/phone/lg_nortel/LgNortelLineDefaults.java b/sipXconfig/plugins/lg-nortel/src/org/sipfoundry/sipxconfig/phone/lg_nortel/LgNortelLineDefaults.java index 6f3903b..74425e4 100644 --- a/sipXconfig/plugins/lg-nortel/src/org/sipfoundry/sipxconfig/phone/lg_nortel/LgNortelLineDefaults.java +++ b/sipXconfig/plugins/lg-nortel/src/org/sipfoundry/sipxconfig/phone/lg_nortel/LgNortelLineDefaults.java @@ -25,8 +25,8 @@ public class LgNortelLineDefaults { private static final String VOIP_DISPLAYNAME = "VOIP/displayname"; private static final String VOIP_TYPE = "VOIP/type"; - private Line m_line; - private DeviceDefaults m_defaults; + private final Line m_line; + private final DeviceDefaults m_defaults; public LgNortelLineDefaults(DeviceDefaults defaults, Line line) { m_line = line; @@ -46,18 +46,12 @@ public class LgNortelLineDefaults { @SettingEntry(path = VOIP_NAME) public String getUserName() { - User user = m_line.getUser(); - if (user == null) { - return null; - } - - return user.getUserName(); + return m_line.getUserName(); } @SettingEntry(path = VOIP_AUTHNAME) public String getAuthUserName() { - User user = m_line.getUser(); - if (user == null || m_line.getSettingValue(VOIP_TYPE) == "dss") { + if (m_line.getSettingValue(VOIP_TYPE) == "dss") { return null; } diff --git a/sipXconfig/plugins/nortel/src/org/sipfoundry/sipxconfig/phone/nt1535/NT1535Phone.java b/sipXconfig/plugins/nortel/src/org/sipfoundry/sipxconfig/phone/nt1535/NT1535Phone.java index 09a84e2..fdf847c 100644 --- a/sipXconfig/plugins/nortel/src/org/sipfoundry/sipxconfig/phone/nt1535/NT1535Phone.java +++ b/sipXconfig/plugins/nortel/src/org/sipfoundry/sipxconfig/phone/nt1535/NT1535Phone.java @@ -139,11 +139,7 @@ public class NT1535Phone extends Phone { @SettingEntry(path = VOIP_NAME) public String getUserName() { - User user = m_line.getUser(); - if (user != null) { - return user.getUserName(); - } - return null; + return m_line.getUserName(); } @SettingEntry(path = VOIP_AUTHNAME) diff --git a/sipXconfig/plugins/polycom/src/org/sipfoundry/sipxconfig/phone/polycom/PolycomLineDefaults.java b/sipXconfig/plugins/polycom/src/org/sipfoundry/sipxconfig/phone/polycom/PolycomLineDefaults.java index d1ae325..6148518 100644 --- a/sipXconfig/plugins/polycom/src/org/sipfoundry/sipxconfig/phone/polycom/PolycomLineDefaults.java +++ b/sipXconfig/plugins/polycom/src/org/sipfoundry/sipxconfig/phone/polycom/PolycomLineDefaults.java @@ -5,7 +5,7 @@ * Contributors retain copyright to elements licensed under a Contributor Agreement. * Licensed to the User under the LGPL license. * - * $ + * */ package org.sipfoundry.sipxconfig.phone.polycom; @@ -16,16 +16,10 @@ import org.sipfoundry.sipxconfig.setting.SettingEntry; public class PolycomLineDefaults { - /** - * - */ private static final String TYPE_PRIVATE = "private"; - /** - * - */ private static final String TYPE_SHARED = "shared"; - private DeviceDefaults m_defaults; - private Line m_line; + private final DeviceDefaults m_defaults; + private final Line m_line; PolycomLineDefaults(DeviceDefaults defaults, Line line) { m_defaults = defaults; @@ -72,11 +66,7 @@ public class PolycomLineDefaults { @SettingEntry(path = PolycomPhone.USER_ID_PATH) public String getAddress() { - User u = m_line.getUser(); - if (u != null) { - return u.getUserName(); - } - return null; + return m_line.getUserName(); } @SettingEntry(path = PolycomPhone.PASSWORD_PATH) diff --git a/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/PolycomPhoneTest.java b/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/PolycomPhoneTest.java index a3f0e99..8a4ba75 100644 --- a/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/PolycomPhoneTest.java +++ b/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/PolycomPhoneTest.java @@ -127,7 +127,7 @@ public class PolycomPhoneTest extends TestCase { m_phone.addLine(secondLine); Setting settings = secondLine.getSettings(); Setting userId = settings.getSetting("reg/auth.userId"); - assertEquals("/0004f200e06b", userId.getValue()); + assertEquals(null, userId.getValue()); } public void testFormat() throws Exception { diff --git a/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/expected-phone.cfg.xml b/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/expected-phone.cfg.xml index 563f851..e57568f 100644 --- a/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/expected-phone.cfg.xml +++ b/sipXconfig/plugins/polycom/test/org/sipfoundry/sipxconfig/phone/polycom/expected-phone.cfg.xml @@ -98,7 +98,7 @@ reg.3.bargeInEnabled="0" reg.3.csta="" reg.3.thirdPartyName="" - reg.3.auth.userId="/0004f200e06b" + reg.3.auth.userId="" reg.3.auth.password="" reg.3.auth.optimizedInFailover="" reg.3.ringType="2" @@ -141,7 +141,7 @@ reg.4.bargeInEnabled="0" reg.4.csta="" reg.4.thirdPartyName="" - reg.4.auth.userId="/0004f200e06b" + reg.4.auth.userId="" reg.4.auth.password="" reg.4.auth.optimizedInFailover="" reg.4.ringType="2" @@ -184,7 +184,7 @@ reg.5.bargeInEnabled="0" reg.5.csta="" reg.5.thirdPartyName="" - reg.5.auth.userId="/0004f200e06b" + reg.5.auth.userId="" reg.5.auth.password="" reg.5.auth.optimizedInFailover="" reg.5.ringType="2" @@ -227,7 +227,7 @@ reg.6.bargeInEnabled="0" reg.6.csta="" reg.6.thirdPartyName="" - reg.6.auth.userId="/0004f200e06b" + reg.6.auth.userId="" reg.6.auth.password="" reg.6.auth.optimizedInFailover="" reg.6.ringType="2" -- 1.6.0.6
_______________________________________________ sipx-dev mailing list [email protected] List Archive: http://list.sipfoundry.org/archive/sipx-dev Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev sipXecs IP PBX -- http://www.sipfoundry.org/
