CN1390416A - 用于建立和维护因特网域名注册的方法和设备 - Google Patents

用于建立和维护因特网域名注册的方法和设备 Download PDF

Info

Publication number
CN1390416A
CN1390416A CN00815699A CN00815699A CN1390416A CN 1390416 A CN1390416 A CN 1390416A CN 00815699 A CN00815699 A CN 00815699A CN 00815699 A CN00815699 A CN 00815699A CN 1390416 A CN1390416 A CN 1390416A
Authority
CN
China
Prior art keywords
see
attr
nsiwholesaleapi
string
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN00815699A
Other languages
English (en)
Inventor
S·曹汉
G·科热尼约夫斯基
S·纳卡里
B·泰勒
L·布莱姆
D·莫斯顿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Network Solutions LLC
Original Assignee
Network Solutions LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Network Solutions LLC filed Critical Network Solutions LLC
Publication of CN1390416A publication Critical patent/CN1390416A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/102Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measure for e-commerce
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Marketing (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Game Theory and Decision Science (AREA)
  • Primary Health Care (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Resources & Organizations (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Tourism & Hospitality (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

用于处理与管理因特网域名关联的事务的方法和设备包括在因特网上其他用户的应用程序和因特网域名注册员之间建立连接,对用户权利进行检验以请求完成事务,在连接中建立安全套接层并在这种验证之后处理命令。

Description

用于建立和维护因特网域名注册的方法和设备
相关申请
本申请要求美国临时申请号60/153,960(1999.9.15申请,通过参考专门引入)的权益。共同待批美国专利申请序列号09/544,305(2000.4.6申请,通过参考专门引入)。
技术领域
本发明涉及域名注册领域。具体说,本发明涉及能够提供对因特网域名进行注册和维护的应用程序接口的方法和设备。
背景技术
因特网的蓬勃发展萌发了人们对创建域名注册(也称为网址)和后续管理活动(例如所有权变更、更新等)处理进行有序管理的需求。直到近来,NetworkSolutions,Inc.of Herndon,Virginia还是唯一能获得和注册域名注册(“DNRs”)的公司,至少对以.com、.net、.org和.edu结尾的域名来说是这样。在这种情况下,Network Solutions,Inc.就被称为注册员。迄今为止,大约有5百万个网址由Network Solutions,Inc.注册。
网址注册的现行系统几乎都是完全依靠在用户和注册员之间使用e-mail进行每步处理。例如,图4示出注册步骤的顺序,客户(注册者)准备注册新的网址100。
注册者填写服务协议(102)。该服务协议通过e-mail提交给注册者,例如,给hostmaster@internic.net(步骤104)。给该请求自动分配一个跟踪号码106。服务协议会自动进行错误检查108。如果不存在差错,就处理该服务协议,并且当完成处理,就通过e-mail告知注册者112。网址注册是用一个消息完成。例如,该消息可能是“Your Web Address registration is complete”(你的网址注册完成)(步骤114)。客户为网址注册开发票,步骤116,并支付注册费用(步骤118)。
最后,注册员在最初注册两周年的前60天向注册者发送重新注册通知(步骤120)。如果在服务协议中存在差错,注册处理就不会完成,并且会给注册者发送一封e-mail告知其问题所在(步骤110)。
即使这种处理能够有效工作,但它还是存在缺陷。最明显的是使用因特网e-mail通知通常不是基于“实时”原则。有时,它可能会花费几天才能收到e-mail,特别是在那些还没有完全建立因特网支持体系的地方。另外,e-mail可能被破坏,这就会产生进一步的延误,因为接收者必须要求重新发送该消息。
而且,近来的事件导致名为“批发”(“Wholesaling”)的概念的发展,通过它,其他组织例如因特网服务供应商(ISP)、因特网主机供应商、因特网接入以及电子商务供应商能够代表他们自己的客户保护这类DNR。实际上,这样的组织通过为他们的客户提供能够允许不熟练和熟练用户与注册处理和后续管理连接的接口,从而自身担当起他们的注册员。然而最终,DNR还是由注册员,NetworkSolutions,Inc.,发布。
保护DNR的出口数目的扩大导致了便于批发的系统和方法的发展。
Network Solutions,Inc.提供了NSI批发服务协议(“WSP”),该协议建立了用于Network Solutions,Inc.(“NSI”)系统产品和系统服务的购买和管理的实时可编程接口支持。这种系统通常允许寻求注册的用户不用考虑其计算机技术方面的专业水平,特别是因特网方面,就能完成这种处理。WSP使用一种简单、基于连接、同步、基于ASCII文本的协议,从而在因特网上与NSI批发系统进行通信,因而,允许批发商安全和可靠地创建、修改和删除客户帐号以及各种产品,包括因特网域名的注册和管理。
WSP是由一组批发商可能发布用于创建客户或域名相关产品的命令组成。每条命令返回一组’属性’以及主要和次要的出错码。在许多情况下,一条命令的结果用作下一命令的输入。
批发商命令是同步或异步的。通常,客户创建和管理命令是同步的,而域名创建和管理命令是异步的。用于异步命令的“尽可能快”的实行系统维护一个队列,以便保证在出现外部系统问题时,命令不会丢失。典型的同步响应时间为几秒或更少,而异步时间(例如完成注册的时间)通常少于几分钟。
在NSI批发系统中存在两种主要的安全机制。所有的批发商必须提供IP地址,通过这些地址,批发商就能与NSI批发商系统连接并与之建立安全套接层(“SSL”)连接。在发出会话命令时他们还必须使用帐户号和口命。在批发商之前NSI已经提供了这些连接。虽然,这种系统提供了许多超越已有技术的优势,但还是需要使得这种系统普遍可用。
因此,当前存在对一种方法和设备的需求,该方法和设备提供了一种应用程序接口以允许其他用户的计算机应用程序访问批发商系统,并以与WSP相同的方式实施有关因特网域名注册和管理的处理。
发明内容
为了实现这些目标以及其他优点,并且根据本发明的目的,在此对本发明进行具体化和广泛描述。本发明针对用于将用户应用程序连接到一种系统的方法和设备,该系统用于通过在因特网上用户和系统之间建立连接来实施与管理因特网域名关联的事务;给用户授权以实施与管理与因特网域名关联的事务;在应用程序接口和系统中建立安全套接层;在应用程序接口中接收来自应用程序的请求以遵循这种授权开始事务处理;以及通过应用程序接口向实现这种处理的系统发送命令。
附图说明
在此包括和构成说明书一部分的附图和描述一起说明了本发明的实施例,实施例用作解释本发明的原理。在图中,
图1是本发明较佳实施例的图例,其中应用程序接口,WSP Java API,以一组Java对象类形式实现了WSP的功能性;
图2示出用于将用户应用程序与实施与管理因特网域名关联的事务的系统相连的方法示范流程图。
图3示出用于将用户应用程序与实施与管理因特网域名关联的事务的系统相连的设备示范图例。
具体实施方式
下面将对本发明的当前较佳实施例进行详细描述,在附图中说明了本发明的一个实例。只要可能,图中相同的标号在整个附图中是指相同或类似的元件。
这些方法和设备提供由用户应用程序进行访问以建立和实施与管理因特网域名关联事务的系统的接口。
参照图1,计算机应用程序12通常给用户提供一个接口以收集客户数据。该计算机应用程序12通常向应用程序接口(WSP Java API 14)发送会话请求,以便在因特网10上建立与批发商系统16的会话,并发送各种命令。
WSP Java API 14实质上是WSP的一个Java“封装”。它由两个主类组成:NSIWholesaleAPI以及WSPResponse。NSIWholesaleAPI含有创建客户、产品和服务的所有方法。WSPResponse是大多数方法返回的单个类,并含有所发送命令请求的结果,并且将可选地包括任何由请求产生的附加数据。
使用WSP Java API 14的一个优点是当创建了NSIWholesaleAPI对象,该对象就创建到批发商系统16的SSL连接’库’。这种类消除了发送’会话’命令的需要,并且消除了批发商建立和管理SSL连接的负担。多线程应用程序也可以使用这种连接库。
图2示出本发明的示范流程图。用户20向应用程序12发送请求以执行与管理因特网域名关联的事务。应用程序12通常为用户提供一个接口以收集客户数据。应用程序12通常向应用程序接口14发送会话请求以便在因特网10上与批发商系统16建立会话。应用程序接口14将使用从应用程序12接收的用户帐号信息验证用户通过尝试与批发商系统16相连执行处理的权利。如果验证失败,应用程序接口14将尝试两种附加验证。应用程序接口14将把验证结果发送给应用程序12。如果验证成功,应用程序接口14将与批发商系统16建立安全套接层。应用程序12将把请求发送给应用程序接口14以便通过类NSIWholesaleAPI的对象示例使一组命令可供使用。应用程序12现在可以向任何对象方法发送请求以要求命令的处理。应用程序接口14将接收伴随任意数据的命令请求。应用程序接口14将把数据和命令格式化为如上述待批美国专利申请号09/544,305中所述的字符串。随后,应用程序14将通过因特网10向批发商系统16发送请求以完成事务处理。批发商系统16将处理请求并通过因特网10将事务处理结果返回给应用程序接口14。应用程序接口14将向应用程序12发送响应。
图3是本发明相一致的方法可以实现的示范计算机环境图例。为用户20提供了一个部件以便向应用程序12发送请求以执行与管理因特网域名关联的事务。应用程序12通常为用户提供一个接口以收集客户数据。应用程序12通常通常向应用程序接口14发送会话请求以便在因特网10上与批发商系统16建立会话。还配置了一个部件用于验证用户20执行事务处理的权利。应用程序接口14将使用从应用程序12接收的用户帐号信息验证用户通过尝试与批发商系统16相连执行事务处理的权利。如果验证失败,应用程序接口14将尝试两种附加验证。应用程序接口14将把验证结果发送给应用程序12。还配置一个部件用于如果验证成功就建立安全套接层。应用程序接口14将与批发商系统16建立安全套接层。还配置了一个部件用于在成功验证之后开始事务处理。应用程序12将把请求发送给应用程序接口14以便通过类NSIWholesaleAPI的对象示例得到一组在批发商系统16中可用的命令。应用程序12现在可以向任何对象方法发送请求以要求命令的处理。应用程序接口14将接收伴随任意数据的命令请求。还提供了一个部件用于通过安全套接层发送命令。应用程序接口14将把数据和命令格式化为如上述待批美国专利申请号09/544,305中详细所述的字符串。随后,应用程序14将通过因特网10向批发商系统16发送请求以完成事务处理。批发商系统16将处理请求并通过因特网10将事务处理结果返回给应用程序接口14。应用程序接口14将向应用程序12发送响应。
WSP Java API配置文件的名字通常为WSPjavaAPI.conf。该文件含有有关每个批发商用户的具体信息。当批发商协议与注册员(如NSI)完成时提供了在该文件中的这些参数值。该文件包括下述参数:
 WholesaleAPI.minConnections=2WholesaleAPI.maxConnections=2WholesaleAPI.connectionSoTimeout=120000WholesaleAPI.connectionProtocol=WSP1.5WholesaleAPI.server=XXX.netsol.comWholesaleAPI.port=X000WholesaleAPI.retry=1WholesaleAPI.WholesalerAccountId=12345678WholesaleAPI.WholesalerPassword=XXXXXXXX
用“X”表示的值将随用户的不同而不同。这些参数中每个参数的定义如下:
配置文件参数
名称 类型 标准值 定义
minConnections 正整数 2到10 连接合并调整参数
maxConnections 正整数 最小连接到5 连接合并调整参数
connectionSoTimeout 正整数 120000 在API连接超时前的非使用毫秒数
Server 字符串 X.netsol.com 注册员处的批发协议服务器名。实际名称将在建立批发协议时提供。
Port 整数 XXXX 用于连接的服务器上IP端口
WholesalerAccountId 字符串 XXX 每个批发合伙人的唯一标识符
WholesalerPassword 字符串 XXXXXXX 用于批发操作与NSI连接所需的唯一代码
类层次结构
。class java.lang.Obiect。class nsi.wholesale.toolkit.javaapi.NSIWholesaleAPI。class java.lang.Throwable(implements java.io.Serializable)。class java.lang.Exception。class nsi.wholesale.toolkit.javaapi.NSIWholesaleException。class nsi.wholesale.toolkit.javaapi.WSPException。class nsi.wholesale.toolkit.javaapi.InvalidArgumentException。class nsi.wholesale.toolkit.javaapi.InvalidResponseFormatException。class nsi.wholesale.toolkitjavaapi.WSPResponse
NSIWholesaleAPI类构建了一个新的NSIWholesaleAPI对象的实例,该实例的方法可以被调用以实行与批发商相关的活动,例如通过SSL在因特网上连接批发商系统16,并且它允许计算机应用程序12创建并管理因特网域名。NSIWholesaleAPI的类定义包括如下内容:
构造概述
NSIWholesaleAPI()
方法概述
  WSPResponse createBusinessAccount(String aCompanyName,String aCompanyType, String aAddress1, String aCity,String aCountryCode, String aPhone, String aCustomerPassword,String aAuthQuestion, String aAuthAnswer,String aLegalContactFirstName, String aLegalContactLastName)该方法创建商业客户账户并返回自动生成的客户账户id。
  WSPResponse createBusinessAccount(String aCompanyName,String aCompanyType, String aAddress1, String aCity,String aCountryCode,String aPhone,String aCustomerPassword,
Figure A0081569900111
Figure A0081569900131
Figure A0081569900141
Figure A0081569900171
该方法检验特定域名是否可用。
  WSPResponse verifyDomains(String pDomainTarget)该方法检验域系列是否可用。
  WSPResponse verifyDomains(String pDomainTarget,Properties optionalAttributes)该方法检验域系列是否可用。
  WSPResponse verifyPassword(String pCustomerAccountId,String pCustomerPassword)该方法检验特定客户的账户id和密码是否有效。
  WSPResPonse verifyPassword(String pcustomerAccountId,String pCustomerPassword,Properties optionalAttributes)该方法检验特定客户的账户id和密码是否有效。
  从类java.lang.Object继承的方法
  equals,getClass.hashCode.notify,notifyAll,toString,wait,wait,wait
WSPResponse类代表WSP响应的各部分。通过应用程序接口14发送的命令请求就可以返回一个WSPResponse。该响应将尽可能详细地描述所发送的请求结果,并将可选地包括任何由该请求产生的附加信息。该结果由“result code,和其后的描述“result message”组成。结果代码由主结果代码和其后的“.”以及再其后的次结果代码组成。
三位数字主结果代码提供通用的发送请求的成功或失败指示。在大多数情况下返回一个或多个结果属性。三位数字次结果代码可以提供有关主结果代码的附加信息。每条命令请求具有其自身的次结果代码集或可具有值(000)。WSPResponse和结果代码在上述待批美国专利申请号09/544305中有更加详细的描述。结果属性由属性关键字和其后的冒号“:”以及其后的属性值组成。在某些结果中,会返回明文(例如从Help命令返回的信息)。结果属性在上述待批美国专利申请号09/544,305中有更加详细的描述。WSPResponse的类定义如下:
构造概述
WSPResponse(String data)分析WSP文本响应并析取和存储各部分。
方法概述
    static void displayResponse(WSPResponse response)打印WSP响应的调试-类型表示到标准输出
  static Strirg getJdkVersion()获得JDK版本的静态存取器方法
            int getMajorResultCode()返回WPS响应主结果代码
            int getMinorResultCode()返回WPS响应次结果代码
     Properties getProperties()如果可用就返回从原始WSP文本响应中提取的含有所有结果属性规格的属性列表。
static Properties getProperties(WSPResponse wspResponse)如果可用就返回从原始WSP文本响应中提取的含有所有结果属性规格的属性列表。
         String getProperty(String resultPropertyKey)如果能找到就返回从原始WSP文本响应中提取的对应于特定结果属性键的结果属性值。
         String getRawResponse()返回用于例示对象的原始WSP文本响应字符串。
         String getResultCode()返回WPS响应结果代码
        String getResultCodeAndMessage()
返回WSP响应结果代码和结果报文
        String getResultMessage()返回从原始WSP文本响应中提取的结果报文
   static long getSerialVersion()获得序列版本的静态存取器方法
       Vector getText()返回含有在WSP响应中返回的文本行的矢量。
 static double getVersion()获得发行版本的静态存取器。
       string toString()返回未加工的WSP响应。
从类java.lang.Object继承的方法
equals,getClass,hashCode,notify,notifyAll.wait,wait.wait
NSIWholesaleException类是用户自定义异常类,指示在类NSIWholesaleAPI中方法所抛出的特定出错。具体说,类NSIWholesaleAPI的异常是在(a)当类初始化失败;(b)当在没有成功初始化类的情况下就调用NSIWholesaleAPI中的方法;(c)当不能完成命令时(例如由于通信问题);(d)再构造低层抛出的NSIException以给出附加上下文信息时,抛出。
类WSPException是处理由批发商服务器16发送给计算机应用程序12的响应的wholesale协议异常类的父类。这是服务类,并不明显使用。它提供了存储所有异常情况公共的出错信息的基本方法。
类InvalidArgumentException和InvalidResponseFormatException是WSPException的细分子类。两种方法都具有与WSPException相同的内部功能性。另外,两个类都是独立的,因此,即使出错的上下文信息相同,接收抛出异常的方法也知道检测到的出错类型。具体说,如果由批发商服务器16作为命 令 一 部 分 返 回 的 数 据 无 效 ,  WSPException  就  抛  出InvalidArgumentException。如果由批发商服务器16作为命令一部分返回的数  据  没  有  适  当  格  式  化  ,  WSPException  就  抛  出InvalidResponseFormatException。NSIWholesaleException的类定义包括:
WSPException的类定义包括下述内容:
构造概述
WSPException ()
WSPException(String message)
WSPException(String message,Throwable x)
方法概述
static String getJdkVersion()获得JDK版本的静态存取器方法。
       String getMessage()
  static long getSerialVersion()获得序列版本的静态存取器方法。
static double getVersion()获得发行版本的静态存取器方法。
从类java.lang.Throwable继承的方法
fillInStackTrace,getLocalizedMessage,printStackTrace,printStackTrace,printStackTrace,toString
从类java.lang.Object继承的方法
equalsgetClasshashCodenotifynotifyAllwaitwaitwait
InvalidArgumentException的类定义如下:
构造概述
 InvalidArgumentException()
InvalidArgumentException(String message)
InvalidArgumentException(String message,Throwable x)
方法概述
static Stri ng getJdkVersion()获得JDK版本的静态存取器方法。
        String getMessa ge()
  static long getSerialVersion()获得序列版本的静态存取器方法。
static double getVersion()获得发行版本的静态存取器方法。
从类java.lang.Throwable继承的方法
fillInStackTrace,getLocalizedMessa ge,printStackTrace,printStackTrace,printStackTrace,toStri ng
从类java.lang.Object继承的方法
equals, getClass,hashCode, notify,notifyAll,wait,wait,wait
InvalidResponseFormatException的类定义包括下述内容:
构造概述
InvalidResponseFormatException()
InvalidResponseFormatException(String message)
InvalidResponseFormatException(String message,Throwable x)
方法概述
static  String getJdkVersion()
获得JDK版本的静态存取器方法。
      String getMessa ge()
 static long getSerialVersion()获得序列版本的静态存取器方法。
static double getVersion()获得发行版本的静态存取器方法。
从类java.lang.Throwable继承的方法
fillInStackTrace,getLocalizedMessa ge,PrintStackTrace,printStackTrace,printStackTrace,toString
从类java.lang.Object继承的方法
equalsgetClasshashCodenotifynotifyAllwaitwaitwait
本发明将通过下述实例进一步进行说明,该实例示出创建与批发商系统会话的计算机程序文件以开始Wholesale的操作,该实例纯粹作为本发明的示范。
   /*** ----------Copyright (c) 2000 Network solutions,Inc----------<BR>** This class is a demonstration program for use case 1:Creating a session* with NSI to begin wholesale operations.** This class assumes the existance of the file WSPjavaAPI.conf,which was set* up in running the installation test earlier.**<BR>-----------------------------------------------------------<BR>*/// Importsimport java.util.*;import java.io.*;import nsi.wholesale.toolkit.javaapi.util.resourcepool.*;import nsi.wholesale.toolkit.javaapi.*;//class NSIUseCasel{//-----------------------------------------------------------public static void main(String args []){NSIWholesaleAPI api = null;// Use the properties from the configuration file to establish a session
  try {NSIWholesaleAPI.init(″WSPjavaAPI.conf″);}catch(NSIWholesaleException e){System.out.print(″Unable to initialize NSI Wholesale API:″+e);System.exit(1);}//Having initialized the NSI Wholesale API,we now need to//create an instance of the API by calling constructor NSIWholesaleAPI()try{api=new NSIWholesaleAPI();}catch(NSIWholesaleException e){System.out.print(″Unable to initialize NSI Wholesale API:"+e);System.exit(l);}//// At this point,if no error has been thrown,then the session// is established,and a number of connections have been opened// in the connection pool.////// Here,the call to methods on"api"are used to perform// wholesale related activities. For this use case,// there are none.//               .// End the session.This is done by calling the shutdown method on the// instance of the wholesale API that was created earlier.api.shutdown();}}
WSP Java API 14是WSP的实现。在使用WSP Java API 14的任何情况中,第一步是初始会话并随后创建类的实例以引用这些方法。对这些方法的各个调用是单个协议交换的实例。每个调用含有所有必需的信息(例如客户标识符、联系信息)。除会话信息外,没有其他信息在方法和方法之间传送。
如实例所示,WSP Java API 14中例程的第一个唤起是对类方法NSIWholesaleAPI.init以便初始化到批发商系统的接口。第二个唤起创建了类NSIWholesaleAPI的示例,这就使得该方法可供应用程序使用以向批发系统16发送命令。应用程序12现在可以向应用程序接口14发送命令请求。最后的唤起是关闭方法,这就结束了与批发商系统16的会话。
注意在上述描述中(参照Network Solutions,Inc.以及NSI,包括但不局限在给出的类、方法、设计、图例和类似元素的实例中包含的引用)仅是示范目的,并不受限于任何特定实现。
虽然,前面的描述是依据客户服务器结构,但本领域的熟练技术人员可以理解也可以与本发明一致的其他类型的结构。另外,虽然前面的描述是基于软件实现,但也可以使用与本发明一致的其他实现。而且,虽然,前面的描述是基于Java语言,但本领域的熟练技术人员可以认识到可以使用与本发明一致的其他类型的语言。因此,本发明并不局限在在此所述的特定实现和方法,但本发明包括所有落入附加权利要求范畴中的实现方法。
前面的描述是为进行说明和解释。并不是要将本发明彻底包括或限制在所揭示的精确形式,并且依据上述示教可以对其进行变化修改或可以从本发明的实践中进行修改。本发明的原理和其实际应用能使本领域的熟练技术人员以各种实施例形式使用本发明,并且用适用于所预期使用的各种修改使用本发明。
NSIWholesaleAPI的类定义如下:
  //--------------------------------------------------------------------

  // Package

  //--------------------------------------------------------------------

  package nsi.wholesale.toolkit.javaapi;

  //--------------------------------------------------------------------

  // Imports...

  //--------------------------------------------------------------------

  import java.io.LineNumberReader;

  import java.io.FileReader;

  import java.io.IOException;

  import java.io.FileNotFoundException;

  import java.util.StringTokenizer;

  import java.util.properties;

  import java.util.Enumeration;

  import java.util.NoSuchElementException;

  import nsi.wholesale.toolkit.javaapi.util.resourcepool.Resource;

  import nsi.wholesale.toolkit.javaapi.util.resourcepool.ResourceException;

  /**

   *-------------------------- Copyright (c) 2000 Network Solutions,Inc-------

   ----------------<BR>

  *    

  * This Java-based Wholesale Services Protocol (WSP) API provides

  * programmer access to the Wholesale Services Protocol Server.

  * The Wholesale Services Protocol (WSP) is a simple,connection-based,

  * ASCII text-based protocol.It allows wholesalers to securely and

  * reliably create,modify,and lookup customer accounts and various

  * products via a single client/server interface.

  *

  *

  *<BR>---------------------------------------------------------------------------
   <BR>

  * SLogS

  *<BR>---------------------------------------------------------------------------
   <BR>
  */
   public class NSIWholesaleAPI
   {
   //---------------------------------------------------------------------------
   // Beginning of Required/Standard Fields
   //---------------------------------------------------------------------------

       /** Serial Version */

       static long serialVersion = 1L;

       /** Release Version */

       static double version = 1.1D;

       /**SCCS control ID */

       static final String sccsID = ″@(#) wholesale-sdk_d1.12.1.3 08/04/00
10:27:19 NSIWholesaleAPI.java NSI″;

       /** JDK Version */

       static String jdkVersion = ″1.1.7″;

       // Static Accessor Method(s)...

       /** Static accessor method to get serial version  */

       static public long getSerialVersion() { return serialVersion;}

       /** Static accessor method to get release version */
				
				<dp n="d24"/>
   static public double getVersion() { return version;}

   /** Static accessor method to get JDK version */

   static public String getJdkVersion() { return jdkVersion;}
//--------------------------------------------------------------------
// End of Required/Standard Fields
//--------------------------------------------------------------------
//--------------------------------------------------------------------
//class (static) variable(s) ...
//--------------------------------------------------------------------

   /** The name of this class */

   private static final String className=″NSIWholesaleAPI″;

   /** Connection pool */

   protected static NSIWholesalePool pool=null;
  /** Retry count */

   protected static int retry=1;
   // Supported Commands

   //-------------------------------------------------------------------

   /** Ease-of-use constant for command:Session */

   public static final String COMMAND_SESSION=″Session″;

   /** Ease-of-use constant for Command:Describe */

   public static final String COMMAND_DESCRIBE=″Describe″;

   /** Ease-of-use constant for Command:Verify */

   public static final String COMMAND_VERIFY=″Verify″;

   /** Ease-of-use constant for Command:Create */

   public static final String COMMAND_CREATE=″Create″;

   /** Ease-of-use constant for Command:Delete*/

   public static final String COMMAND_DELETE=″Delete″;

   /** Ease-of-use constant for command:Modify */

   public static final String COMMAND_MODIFY=″Modify″;

   /** Ease-of-use constant for Command:Renew */

   public static final String COMMAND_RENEW=″Renew″;

   /** Ease-of-use constant for Command:Generate */

   public static final String COMMAND_GENERATE=″Generate″;

   /** Ease-of-use constant for Command:Lookup */

   public static final String COMMAND_LOOKUP=″Lookup″;

   /** Ease-of-use constant for Command:Help */

   public static final String COMMAND_HELP=″Help″;

   /** Ease-of-use constant for Command:Quit */

   public static final String COMMAND_QUIT=″Quit″;

   // Supported Classes

   //-------------------------------------------------------------------

   /** Ease-of-use constant for Class:DomainName */

   public static final String CLASS_DOMAIN_NAME=″DomainName″;

   /** Ease-of-use constant for Class:Domains */

   public static final String CLASS_DOMAINS=″Domains″;

   /** Ease-of-use constant for Class:Password */

   public static final String CLASS_PASSWORD=″Password″;

   /** Ease-of-use constant for Class:IndividualAccount */

   public static final String CLASS_INDIVIDUAL_ACCOUN =
″IndividualAccount″;

  /**  Ease-of-use constant for Class:BusinessAccount */
				
				<dp n="d25"/>
    public static final String CLASS_BUSINESS_ACCOUNT=″BusinessAccount″

    /** Ease-of-use constant for Class:TechnicalContact */

    public static final String CLASS_TECHNICAL_CONTACT=″TechnicalContact″;

    /** Ease-of-use constant for Class:Domain */
    public static final String CLASS_DOMAIN=″Domain″;

    /** Ease-of-use constant for Class:DnsHosting */

    public static final String CLASS_DNS_HOSTING=″DnsHosting″;

    // Supported Command-Class Combinations

    //--------------------------------------------------------------------

    /** Ease-of-use constant for Command-Class Combination:VerifyDomainName
*/

    public static final String COMBO_VERIFY_DOMAIN_NAME=COMMAND_VERIFY + ″
″+ CLASS_DOMAIN_NAME;

  /** Ease-of-use constant for Command-Class Combination:Verify Domains
*/

    public static final String COMBO_VERIFY_DOMAINS=COMMAND_VERIFY +″″+
CLASS_DOMAINS;

    /** Ease-of-use constant for Command-Class Combination:Verify Password
*/

    public static final String COMBO_VERIFY_PASSWORD=COMMAND_VERIFY + ″″
+ CLASS_PASSWORD;

    /** Ease-of-use constant for Command-Class Combination:Create
IndividualAccount */

    public static final string COMBO_CREATE_INDIVIDUAL_ACCOUNT=
COMMAND_CREATE + ″″+ CLASS_INDIVIDUAL_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination:Create
BusinessAccount */

    public static final String COMBO_CREATE_BUSINESS_ACCOUNT=
COMMAND_CREATE + ″″+CLASS_BUSINESS_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination:Create
TechnicalContact */

    public static final String COMBO_CREATE_TECHNICAL_CONTACT=
COMMAND_CREATE + ″″+ CLASS_TECHNICAL_CONTACT;

    /** Ease-of-use constant for Command-Class Combination:Create Domain */

    public static final String COMBO_CREATE_DOMAIN=COMMAND_CREATE + ″″+
CLASS_DOMAIN;

    /** Ease-of-use constant for Command-Class Combination:Create
DnsHosting */

    public static final String COMBO_CREATE_DNS_HOSTING=COMMAND_CREATE +″
″+  CLASS_DNS_HOSTING;    

    /** Ease-of-use constant for Command-Class Combination:Delete Domain */

    public static final String COMBO_DELETE_DOMAIN=COMMAND_DELETE +″″+
CLASS_DOMAIN;    

    /** Ease-of-use constant for Command-Class Combination:Delete
DnsHosting */

    public static final String COMBO_DELETE_DNS_HOSTING=COMMAND_DELETE + ″
″+ CLASS_DNS_HOSTING;

    /** Ease-of-use constant for Command-Class Combination:Delete
IndividualAccount  */

    public static final String COMBO_DELETE_INDIVIDUAL_ACCOUNT=
COMMAND_DELETE + ″″+ CLASS_INDIVIDUAL_ACCOUNT;

    /**  Ease-of-use constant for Command-Class Combination:Delete
BusinessAccount  */
				
				<dp n="d26"/>
    public static final String COMBO_DELETE_BUSINESS_ACCOUNT=
COMMAND_DELETE + ″″+ CLASS_BUSINESS_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination:Modify Domain */

    public static final String COMBO_MODIFY_DOMAIN=COMMAND_MODIFY +″″+
CLASS_DOMAIN;

    /** Ease-of-use constant for Command-Class Combination:Modify
IndividualAccount  */
 
    public static final String COMBO_MODIFY_INDIVIDUAL_ACCOUNT=
COMMAND_MODIFY + ″″+ CLASS_INDIVIDUAL_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination:Modify
BusinessAccount  */

    public static final String COMBO_MODIFY_BUSINESS_ACCOUNT=
COMMAND_MODIFY + ″″+ CLASS_BUSINESS_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination:Modify
TechnicalContact  */

    public static final String COMBO_MODIFY_TECHNICAL_CONTACT=
COMMAND_MODIFY + ″″+ CLASS_TECHNICAL_CONTACT;

    /** Ease-of-use constant for Command-Class Combination:Modify Password
*/

    public static final String COMBO_MODIFY_PASSWORD=COMMAND_MODIFY + ″″
+ CLASS_PASSWORD;

    /** Ease-of-use constant for Command-Class Combination:Renew Domain */

    public static final String COMBO_RENEW_DOMAIN=COMMAND_RENEW + ″″+
CLASS_DOMAIN;

    /** Ease-of-use constant for Command-Class Combination:Renew DnsHosting
*/    

    public static final String COMBO_RENEW_DNS_HOSTING=COMMAND_RENEW + ″″
+ CLASS_DNS_HOSTING;

    /** Ease-of-use constant for Command-Class Combination:Generate
DomainName */
    public static final String COMBO_GENERATE_DOMAIN_NAME=COMMAND_GENERATE
+ ″″+ CLASS_DOMAIN_NAME

    /** Ease-of-use constant for Command-Class Combination:Lookup Domain */

    public static final String COMBO_LOOKUP_DOMAIN=COMMAND_LOOKUP + ″″+
CLASS_DOMAIN;

    /** Ease-of-use constant for Command-Class Combination:Lookup
DnsHosting */

    public static final String COMBO_LOOKUP_DNS_HOSTING=COMMAND_LOOKUP + ″
″+ CLASS_DNS_HOSTING;

    /** Ease-of-use constant for Command-Class Combination:Lookup
IndividualAccount */

    public static final String COMBO_LOOKUP_INDIVIDUAL_ACCOUNT=
COMMAND_LOOKUP + ″″+ CLASS_INDIVIDUAL_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination:Lookup
BusinessAccount */

    public static final String COMBO_LOOKUP_BUSINESS_ACCOUNT=
COMMAND_LOOKUP + ″″+ CLASS_BUSINESS_ACCOUNT;

    /** Ease-of-use constant for Command-Class Combination;Lookup
TechnicalContact */

    public static final String COMBO_LOOKUP_TECHNICAL_CONTACT=
COMMAND_LOOKUP +″ ″+ CLASS_TECHNICAL_CONTACT;

    // Supported Attributes
				
				<dp n="d27"/>
     //--------------------------------------------------------------------

     /** Ease-of-use constant for Attribute Key:FirstName */

     public static final String ATTR_FIRST_NAME=″FirstName″;

     /** Ease-of-use constant for Attribute Key:LastName */

     public static final String ATTR_LAST_NAME=″LastName″;

     /** Ease-of-use constant for Attribute Key:Address1 */

     public static final String ATTR_ADDRESS1=″Address1″;

     /** Ease-of-use constant for Attribute Key:Address2 */

     public static final String ATTR_ADDRESS2=″Address2″;

     /** Ease-of-use constant for Attribute Key:Address3 */

     public static final String ATTR_ADDRESS3=″Address3″;

     /** Ease-of-use constant for Attribute Key:Address4 */

     public static final String ATTR_ADDRESS4=″Address4″;

     /** Ease-of-use constant for Attribute Key:Address5 */

     public static final String ATTR_ADDRESS5=″Address5″;

     /** Ease-of-use constant for Attribute Key:City */

     public static final String ATTR_CITY=″City″;

     /** Ease-of-use constant for Attribute Key:State */

     public static final String ATTR_STATE=″State″;

     /** Ease-of-use constant for Attribute Key:PostalCode */

     public static final String ATTR_POSTAL_CODE=″PostalCode″;

     /** Ease-of-use constant for Attribute Key:CountryCode */

     public static final String ATTR_COUNTRY_CODE=″CountryCode″;

     /** Ease-of-use constant for Attribute Key:Phone */

     public static final String ATTR_PHONE=″Phone″;

     /** Ease-of-use constant for Attribute Key:Fax */

     public static final String ATTR_FAX =″Fax″;

     /** Ease-of-use constant for Attribute Key:Email*/

     public static final String ATTR_EMAIL= ″Email″;

     /** Ease-of-use constant for Attribute Key:CustomerAccountId */

     public static final String ATTR_CUSTOMER_ACCOUNT_ID=
″CustomerAccountId″;

     /** Ease-of-use constant for Attribute Key:CustomerPassword*/

     public static final String ATTR_CUSTOMER_PASSWORD=″CustomerPassword″;

     /** Ease-of-use constant for Attribute Key:AuthQuestion */

     public static final String ATTR_AUTH_QUESTION=″AuthQuestion″;

     /** Ease-of-use constant for Attribute Key:AuthAnswer */

     public static final String ATTR_AUTH_ANSWER=″AuthAnswer″;

     /** Ease-of-use constant for Attribute Key:CompanyName */

     public static final String ATTR_COMPANY_NAME=″CompanyName″;  

     /** Ease-of-use constant for Attribute Key:CompanyType */

     public static final String ATTR_COMPANY_TYPE=″CompanyType″;

     /** Ease-of-use constant for Attribute Key:LegalContactFirstName */

     public static final String ATTR_LEGAL_CONTACT_FIRST_NAME=
″LegalContactFirstName″;    

     /** Ease-of-use constant for Attribute Key:LegalContactLastName */

     public static final String ATTR_LEGAL_CONTACT_LAST_NAME
″LegalContactLastName″;

     /** Ease-of-use constant for Attribute Key:LegalContactAddress1*/

     public static final String ATTR_LEGAL_CONTACT_ADDRESS1=
″LegalContactAddress1″;

     /** Ease-of-use constant for Attribute Key:LegalContactAddress2 */

     public static final String ATTR_LEGAI_CONTACT_ADDRESS2=
″LegalContactAddress2″;

     /**Ease-of-use constant for Attribute Key:LegalContactAddress3 */

     public static final String ATTR_LEGAI_CONTACT_ADDRESS3=
″LegalContactAddress3″;
				
				<dp n="d28"/>
     /** Ease-of-use constant for Attribute Key:LegalContactAddress4 */

     public static final String ATTR_LEGAL_CONTACT_ADDRESS4=
″LegalContactAddress4;

     /** Ease-of-use constant for Attribute Key:LegalcontactAddress5 */

     public static final String ATTR_LEGAL_CONTACT_ADDRESS5=
″LegalContactAddress5″;

     /** Ease-of-use constant for Attribute Key:LegalContactCity */

     public static final String ATTR_LEGAL_CONTACT_CITY=″LegalContactCity″

     /** Ease-of-use constant for Attribute Key:LegalContactState */

     public static final String ATTR_LEGAL_CONTACT_STATE=
″LegalContactState

     /** Ease-of-use constant for Attribute Key:LegalContactPostalCode */

     public static final String ATTR_LEGAL_CONTACT_POSTAL_CODE=
″LegalContactPostalCode″;

     /** Ease-of-use constant for Attribute Key:LegalContactCountryCode */

     public static final String ATTR_LEGAL_CONTACT_COUNTRY_CODE=
″Legal ContactCountryCode″;

     /** Ease-of-use constant for Attribute Key:LegalContactPhone */

     public static final String ATTR_LEGAI_CONTACT_PHONE=
″LegalContactPhone″;

     /** Ease-of-use constant for Attribute Key:LegalContactFax */

     public static final String ATTR_LEGAL_CONTACT_FAX=″LegalContactFax″;

     /** Ease-of-use constant for Attribute Key:LegalContactEmail */

     public static final String ATTR_LEGAL_CONTACT_EMAIL=
″LegalContactEmail″;

     /** Ease-of-use constant for Attribute Key:Organization */

     public static final String ATTR_ORGANIZATION=″Organization″;

     /** Ease-of-use constant for Attribute Key:TechContactPassword*/

     public static final String ATTR_TECH_CONTACT_PASSWORD =
″TechContactPassword″;

     /** Ease-of-use constant for Attribute Key:DomainName */

     public static final String ATTR_DOMAIN_NAME=″DomainName″;

     /** Ease-of-use constant for Attribute Key:HostName1*/
     public static final String ATTR_HOST_NAME1=″HostName1″;

     /**  Ease-of-use constant for Attribute Key:HostAddr1  */

     public static final String ATTR_HOST_ADDR1=″HostAddr1″;

     /** Ease-of-use constant for Attribute Key:HostName2 */

     public static final String ATTR_HOST_NAME2=″HostName2″;

     /** Ease-of-use constant for Attribute Key:HostAddr2 */

     public static final String ATTR_HOST_ADDR2=″HostAddr2″;

     /** Ease-of-use constant for Attribute Key:HostId1 */

     public static final String ATTR_HOST_ID1=″HostId1″;

     /** Ease-of-use constant for Attribute Key:HostId2 */

     public static final String ATTR_HOST_ID2=″HostId2″;

     /** Ease-of-use constant for Attribute Key:TechContactId*/

    public static final String ATTR_TECH_CONTACT_ID=″TechContactId″;

     /** Ease-of-use constant for Attribute Key:IspPassword */

     public static final String ATTR_ISP_PASSWORD=″IspPassword″;    

     /** Ease-of-use constant for Attribute Key:Protocol(returned by
Describe)  */

     public static final String ATTR_PROTOCOL=″Protocol″;

     /** Ease-of-use constant for Attribute Key:Dns Hosting Created
(returned by Create DnsHosting) */

     public static final String ATTR_DNS_HOSTING_CREATED=″Dns Hosting
Created″;

     // Supported Parameters
				
				<dp n="d29"/>
     //--------------------------------------------------------------------

     /** Ease-of-use constant for Parameter Key:-WholesalerAccountId */

     public static final String PARM_WHOLESALER_ACCOUNT_ID=″-
WholesalerAccountId″;

     /** Ease-of-use constant for Parameter Key:-WholesalerPassword */

     public static final String PARM_WHOLESALER_PASSWORD=″-
WholesalerPassword″;

     /** Ease-of-use constant for Parameter Key:-Target */

     public static final String PARM_TARGET=″-Target″;

     /** Ease-of-use constant for Parameter Key:-DomainTarget */

     public static final String PARM_DOMAIN_TARGET=″-DomainTarget″;

     /** Ease-of-use constant for Parameter Key:-KeyWords */

     public static final String PARM_KEY_WORDS=″-KeyWords″;

     /** Ease-of-use constant for Parameter Key:-CustomerAccountId */
     public static final String PARM_CUSTOMER_ACCOUNT_ID = ″-″+
ATTR_CUSTOMER_ACCOUNT_ID ;

     /** Ease-of-use constant for Parameter Key:-CustomerPassword */

     public static final String PARM_CUSTOMER_PASSWORD=″-″+
ATTR_CUSTOMER_PASSWORD;

     /** Ease-of-use constant for Parameter Key:-DomainName  */

     public static final String PARM_DOMAIN_NAME= ″-″+ATTR_DOMAIN_NAME;

     /** Ease-of-use constant for Parameter Key:-TechContactId */

    public static final string PARM_TECH_CONTACT_ID=″-″+
ATTR_TECH_CONTACT_ID;    

     /** Ease-of-use constant for Parameter Key:-TechContactPassword */

     public static final String PARM_TECH_CONTACT_PASSWORD=″-″+
ATTR_TECH_CONTACT_PASSWORD;

     /** Ease-of-use constant for Parameter Key:-IspPassword */

     public static final String PARM_ISP_PASSWORD=″-″+ ATTR_ISP_PASSWORD;
//-------------------------------------------------------------------
// class (static) method(s)  
//-------------------------------------------------------------------

    /**

     * Initializes the Wholesale Services Protocol API.

     *

     * @param String name of configuration files containing property list

     * @return void

     * @see NSIWholesaleAPI#init

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException if
initialization fails

     */

     public static void init(String configFileName)

     throws NSIWholesaleException {

           System.out.println(″NSIWholesaleAPI.init(String) started″);

           Properties configProps=new Properties ();

           try {

                LineNumberReader in=new LineNumberReader(new
FileReader(configFileName));

                String line=in.readLine();

                while(line!=null)  {

                     line=line.trim();

                     if((line.length()>0)&amp;&amp;(line.startsWith(″#″) ==
false)){                 

                          try{
				
				<dp n="d30"/>
                                              StringTokenizer st=new
StringTokenizer(line,″=″);

                                              String propertyKey=st.nextToken();

                                              String propertyValue=st.nextToken();

                                              configProps.put(propertyKey,
propertyValue);

                                 }

                                 catch(NoSuchElementException nsee}  {

    System.err.println(″NSIWholesaleAPI.init(String):Error Reading Config
File″+ nsee);    

                                      throw new NSIWholesaleException(″Error
reading Configuration File ″+ configFileName);

                                }

                       }

                       line=in.readLine();

               }

          }

          catch (FileNotFoundException fnfe)  {

                System.err.println(NSIWholesaleAPI.init(String):
Configuration File Not Found″+ fnfe);

                throw new NSIWholesaleException(″Configuration File Not
Found″+configFileName);

          }

          catch (IOException ioe)  {

                System.err.println(″NSIWholesaleAPI.init(String):IO
Exception reading configuration file ″ + ioe);

               throw new NSIWholesaleException(″IO Exception reading
configuration file ″+ configFileName);

          }

          catch (Exception e)  {

                System.err.println(″NSIWholesaleAPI.init(String);Exception
reading configuration file ″+ e);

                throw new NSIWholesaleException(″Exception reading
configuration file ″+ configFileName);

          }

          NSIWholesaleAPI.init(configProps);

          System.out.println(″NSIWholesaleAPI.init(String) completed
successfully″);

    }    

    /**

     * Initializes the Wholesale Services Protocol API.

     * <BR>

     * All of the following parameters should be

     * passed in through the properties file:

          <PRE>

                WholesaleAPI.minConnections  -

                      Connections to use on startup (1,2,5,10)

                WholesaleAPI.maxConnections  -

                      Maximum Connections (5,10,20)

                WholesaleAPI.connectionSoTimeout  -  (Provided by NSI)

                      Enable/disable Socket SO_TIMEOUT with the specified
timeout,in milliseconds
				
				<dp n="d31"/>
                WholesaleAPI.connectionProtocol - (Provided by NSI)

                      Wholesale Services Protocol Version

                WholesaleAPI.server - (Provided by NSI)

                      The secure wholesale server at NSI

                WholesaleAPI.port - (Provided by NSI)

                      The port on that machine

                WholesaleAPI.retry  -

                      The retry count,if a transient error occurs (2,3)

                WholesaleAPI.WholesalerAccountId - (Provided by NSI)

                      The Wholesaler Account number

                WholesaleAPI.WholesalerPassword - (Provided by NSI)

                      The Password for that account

         </PRE>

  *

  * @param properties Properties file containing configuration settings

  * @return void

  * @see NSIWholesaleAPI#NSIWholesaleAPI

  * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException if
initialization  fails

  */

  public static void init(Properties properties)

  throws NSIWholesaleException  {

        System.out.println(″NSIWholesaleAPI.init(Properties) started″);

        int min=parseInt(

             properties.getProperty(″WholesaleAPI.minConnections″));

        int max=parseInt(

              properties.getProperty(″WholesaleAPI.maxConnections″));

        int connectionSoTimeout=parseInt(

              properties.getProperty(″WholesaleAPI.connectionSoTimeout″));

       String connectionProtocol=
properties.getProperty(″WholesaleAPI.connectionProtocol″);

        String server=properties.getProperty(″WholesaleAPI.server″);

        int port=parseInt(properties.getProperty(″WholesaleAPI.port″));

        retry=parseInt(properties.getProperty(″WholesaleAPI.retry″));

        String wholesalerAccountId=

              properties.getProperty(″WholesaleAPI.WholesalerAccountId);

        String wholesalerPassword=

              properties.getProperty(″WholesaleAPI.WholesalerPassword″);

        System.out.println(″connectionProtocol=″+ connectionProtocol);

        System.out.println(″server=″+ server);

        System.out.println(″port*″+ port);

        System.out.println(″wholesalerAccountId=″ +
wholesalerAccountId);

        System.out.println(″wholesalerPassword=″+ wholesalerPassword);

        System.out.println(″NSIWholesaleAPI.init(Properties)constructing
new NSIWholesalePool″);

        pool=new NSIWholesalePool(server,port,min,max,

             wholesalerAccountId,wholesalerPassword,retry,
connectionSoTimeout);

        NSIWholesaleAPI api=new NSIWholesaleAPI();

        if(api.verifyConnectionProtocol(connectionProtocol)!=true)

        {

           api=null;
				
				<dp n="d32"/>
                throw new NSIWholesaleException(″Failed to verify connection
protocol ″+ connectionProtocol);

          }

          api=null;

          System.out.println(″NSIWholesaleAPI.init(Properties)completed
successfully″);

    }
//--------------------------------------------------------------------
//static initializer block...
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// instance Variable(s)...
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// Constructor(s)
//--------------------------------------------------------------------

    /**
 
     * constructs a new NSIWholesaleAPI object.NSIWholesaleAPI MUST have

     * been initialized BEFORE any NSIWholesaleAPI objects can be
constructed.

    * @see NSIWholesaleAPI#init

    * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException if
NSIWholesaleAPI has not yet

    * been initialized

    */    

    public NSIWholesaleAPI()throws NSIWholesaleException  {

          if (pool==null)

                 throw new NSIWholesaleException(″Must initialize API before
use″);

     }
//--------------------------------------------------------------------
// Accessors and Mutators
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// General Methods
//--------------------------------------------------------------------
// #--BEGIN API-------------------------------------------------------
-----------------

     /**

      * This method is used to authenticate a wholesaler and to provide

      * the wholesaler with access to Session commands.Once a session

      * has been established,the Session command may not be issued

      * again

      * <BR><PRE>

            Expected Major Result Code:SESSION_CREATED

      * </PRE><BR>

      * @param pWholesalerAccountId the parameter value

      * @param pWholesalerPassword the parameter value

      * @return  he Wholesale Server Protocol Server response
				
				<dp n="d33"/>
     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see COMMAND_SESSION

     * @See PARM_WHOLESALE_ACCOUNT_ID

     * @see PARM_WHOLESALE_PASSWORD

     * @see WSPResponse#SESSION_CREATED

     * @see WSPResponse#AUTHENTICATION_FAILED

     *

     */

     WSPResponse session(

           String pWholesalerAccountId,

           String pWholesalerPassword)

     throws NSIWholesaleException  {

           return session (pWholesalerAccountId,pWholesalerPassword,new
Properties(),0);

    }

   /**

     *This method is used to authenticate a wholesaler and to provide

     * the wholesaler with access to Session commands.Once a session

     * has been established,the Session command may not be issued

     * again

     * <BR><PRE>

          Expected Major Result Code:SESSION_CREATED

     * </PRE><BR>

     * @param pWholesalerAccountId the parameter value

     * @param pWholesalerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see COMMAND_SESSION

     * @see PARM_WHOLESALE_ACCOUNT_ID

     * @see PARM_WHOLESALE_PASSWORD

     * @see WSPResponse#SESSION_CREATED

     * @see WSPResponse#AUTHENTICATION_FAILED
     *

    */

    WSPResponse session(

          String pWholesalerAccountId,

          String pWholesalerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return session(pWholesalerAccountId,pWholesalerPassword,
optionalAttributes,0);

    }

    protected WSPResponse session(

          String pWholesalerAccountId,

          String pWholesalerPassword,.

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className + ″.session(String,String,
Properties,int)″;

          if(count>retry)  {

               throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }
				
				<dp n="d34"/>
         NSIWholesaleConnection conn=null;

         WSPResponse returnCode;

         try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties all ParmsAndiAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_WHOLESALER_ACCOUNT_ID,
pWholesalerAccountId);

                allParmsAndAttrs.put(PARM_WHOLESALER_PASSWORD,
pWholesalerPassword);

                returnCode=conn.makeRequest(COMMAND_SESSION,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                     pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                }
                finally {

                      return session(

                            pWholesalerAccountId,

                            pWholesalerPassword,

                            optionalAttributes,

                            count + 1);

                      }

               }

    }

    /**

     * This method provides information about a specified target.

     * Currently,the only supported target is ″Protocol″.

     * This target tells Describe to return the current protocol version

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_PROTOCOL

     * </PRE><BR>

     * @param pTarget the parameter value

     * @return the Wholesale Server protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_DESCRIBE

     * @see NSIWholesaleAPI#PARM_TARGET

     * @see NSIWholesaleAPI#ATTR_PROTOCOL

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *
				
				<dp n="d35"/>
    */

    public WSPResponse describe(String pTarget)

    throws NSIWholesaleException  {

          return describe(pTarget,new Properties(),0);

    }

    /**

     * This method provides information about a specified target.

     * Currently,the only supported target is ″Protocol″.

     * This target tells Describe to return the current protocol version
    * <BR><PRE>

            Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

            Expected Result Property Key(s) Returned:

                  ATTR_PROTOCOL

     * </PRE><BR>

     * @param pTarget the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_DESCRIBE

     * @see NSIWholesaleAPI#PARM_TARGET

     * @see NSIWholesaleAPI#ATTR_PROTOCOL

     * @See
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

     */

     public WSPResponse describe(String pTarget,Properties
optionalAttributes)    

     throws NSIWholesaleException  {

          return describe(pTarget,optionalAttributes,0);

     }

     protected WSPResponse describe(

           String pTarget

           Properties optionalAttributes,

           int count)

     throws NSIWholesaleException  {

           String methodName=className + ″describe(String,Properties,
int)″;    

           if(count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

           }

           NSIWholesaleConnection conn=null;

           WSPResponse returnCode;

           try {

                 conn=(NSIWholesaleConnection)pool.checkOut();

                 Properties allParmsAndAttrs=new Properties();

                 //put optional attributes

                 propertiesCat(allParmsAndAttrs,optionalAttributes);

                 allParmsAndAttrs.put(PARM_TARGET pTarget);

                 returnCode=conn.makeRequest(COMMAND_DESCRIBE,
allParmsAndAttrs);
				
				<dp n="d36"/>
                pool.checkIn(conn);

                return returnCode;

          } catch(Exception e)  {

                try {

                     pool.release(conn);

                }

                catch(ResourceException re)  {

                     System.err.println(methodName +″Caught
ResourceException″+re);    

                }

                finally {

                      return describe(

                            pTarget,

                            optionalAttributes,

                            count+l);

                }

           }

    }

    /**

     *This method verifies whether or not a specified domain name is
available.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pDomainName the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command    

     * @see NSIWholesaleAPI#COMMAND_VERIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN_NAME

     * @see NSIWholesaleAPI#COMBO_VERIFY_DOMAIN_NAME

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse verifyDomainName(

          String pDomainName)

    throws NSIWholesaleException  {

         return verifyDomainName(

               pDomainName,

               new Properties(),

               0);

    }

    /**

     * This method verifies whether or not a specified domain name is
available.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pDomainName the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command
				
				<dp n="d37"/>
     * @see NSIWholesaleAPI#COMMAND_VERIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN_NAME

     * @see NSIWholesaleAPI#COMBO_VERIFY_DOMAIN_NAME

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse verifyDomainName(

          String pDomainName,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return verifyDomainName(

                pDomainName,

                optionalAttributes,

                0);

    }

    protected WSPResponse verifyDomainName(

          String pDomainName,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className + ″.verifyDomainName(String,
Properties,int)″;

          if(count>retry)  {

               throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

               conn=(NSIWholesaleConnection)pool.checkOut();

               Properties allParmsAndAttrs=new Properties();

               //put optional attributes

               propertiesCat(allParmsAndAttrs,optionalAttributes);

               allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

               returnCode=conn.makeRequest(COMBO_ERIFY_DOMAIN_NAME,
allParmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

         } catch(Exception e)  {

               try {

                     pool.release(conn);

               }

               catch(ResourceException re)  {

                    System.err.println(methodName + ″Caught
ResourceException″+ re);

               }

               finally{

                     return verifyDomainName(

                           pDomainName,

                           optionalAttributes

                           count+l);

               }
				
				<dp n="d38"/>
          }

    }

    /**

     * This method verifies if series of domains are available.The command

     * will take the domain target string and add the.com,.net,and.org

     * TLD suffix and verify the domain name availability.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned

                DomainName1:

                DomainName2:

                DomainName3:
                ...etc...

     * </PRE><BR>

     * @param pDomainTarget the parameter value

     * @return the Wholesale Server Protocol  Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_VERIFY

     * @see NSIWholesaleAPI#CASS_DOMAINS

     * @see NSIWholesaleAPI#COMBO_VERIFY_DOMAINS

     * @see NSIWholesaleAPI#PARM_DOMAIN_TARGET

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse verifyDomains(

          String pDomainTarget)

    throws NSIWholesaleException  {

          return verifyDomains(

                pDomainTarget,

                new Properties(),

                0);

    }

    /**

     * This method verifies if series of domains are available. The command

     * will take the domain target string and add the .com,.net,and .org

     * TLD suffix and verify the domain name availability.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                DomainName1:

                DomainName2:

                DomainName3:

                ...etc...

     * </PRE><BR>

     * @param pDomainTarget the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return  the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIwholesaleException when
unable to complete command    

     * @see NSIWholesaleAPI#COMMAND_VERIFY

     * @see NSIWholesaleAPI#CLASS_DOMAINS
				
				<dp n="d39"/>
     * @see NSIWholesaleAPI#COMBO_VERIFY_DOMAINS

     * @see NSIWholesaleAPI#PARM_DOMAIN_TARGET

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse verifyDomains(

          String pDomainTarget,

          Properties optionalAttributes)

   throws NSIWholesaleException  { 

          return verifyDomains(

                pDomainTarget,

               optionalAttributes,

                0);

    }

    protected WSPResponse verifyDomains(

          String pDomainTarget,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className +″.verifyDomains(String,
Properties,int) ″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);
          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_DOMAIN_TARGET,pDomainTarget);

                returnCode=conn.makeRequest(COMBO_VERIFY_DOMAINS,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName +″Caught
ResourceException″+ re);

                }

                finally {

                      return verifyDomains(

                            pDomainTarget 

                            optionalAttributes,

                            count+1);

                }
				
				<dp n="d40"/>
              }

    }

    /**

     * This method verifies whether or not a specified customer account id
and

     * password are valid.

     * <BR><PRE>

     Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId  the parameter value

     * @param pCustomerPassword the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_VERIFY

     * @see NSIWholesaleAPI#CLASS_PASSWORD

     * @see NSIWholesaleAPI#COMBO_VERIFY_PASSWORD

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse verifyPassword(

          String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleExcePtion  {

          return verifvPassword(

          pCustomerAccountId,

          pCustomerPassword

          new Properties(),

          0);

    }

    /**

     * This method verifies whether or not a specified customer account id
and

     * password are valid.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_VERIFY

     * @see NSIWholesaleAPI#CLASS_PASSWORD

     * @see NSIWholesaleAPI#COMBO_VERIFY_PASSWORD

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse verifyPassword(
				
				<dp n="d41"/>
          String pCustomerAccountId,

          String pCustomerPassword,

         Properties optionalAttributes)

    throws NSIWholesaleException  {

          return verifyPassword(

                pCustomerAccountId,

                pCustomerPassword,

                optionalAttributes,

                0);

    }

    protected WSPResponse verifyPassword(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className + ″.verifyPassword(String,String,
Properties,int)″;

          _if_(count>retry)  {

                throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                returnCode=conn.makeRequest(COMBO_VERIFY_PASSWORD,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                }

                finally {
                      return verifyPassword (

                             pCustomerAccountId,

                             pCustomerPassword,

                             optionalAttributes,

                             count+1);

                      }

                }
				
				<dp n="d42"/>
    /**

     * This method creates an individual customer account and returns an

     * automatically generated customer account id.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     *  </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aAddressl the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestion the attribute value

     * @param aAuthAnswer the attribute value

     * @param aCity the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_CREATE_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_CITY

     *

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE

     * @See
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *@see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createIndividualAccount(

          String aFirstName,

          String aLastName,

          String aAddress1,

          String aCountryCode,
				
				<dp n="d43"/>
       String aPhone,

        String aCustomerPassword,

        String aAuthQuestion,

        String aAuthAnswer,

        String aCity)

  throws NSIWholesaleException  {

        return createIndividualAccount(

              aFirstName,

              aLastName,

              aAddress1,

              aCountryCode,

              aPhone,

              aCustomerPasSword,

              aAuthQuestion,

              aAuthAnswer

              aCity,

              new Properties(),

              0);

    }

    /**    

     * This method creates an individual customer account and returns an

     * automatically generated customer account id.

     * <BR><PRE>

          Optional Attribute Key(s):

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_EMAIL

                ATTR_FAX

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aAddress1 the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestionthe attribute value

     * @param aAuthAnswer the attribute value

     * @param aCity the attribute value    

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unableto complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_CREATE_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE
				
				<dp n="d44"/>
     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_CITY

     *

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE

     * @See
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createIndividualAccount(

          String aFirstName,

          String aLastName,

          String aAddress1,

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aCity,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return createIndividualAccount(

                aFirstName,

                aLastName,

                aAddress1,

                aCountryCode,

                aPhone,

                aCustomerPassword,

                aAuthQuestion,

                aAuthAnswer,

                aCity,

                optionalAttributes,

                0);

    }

    protected WSPResponse createIndividualAccount(

          String aFirstName,

          String aLastName,

          String aAddress1

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aCity,

          Properties optionalAttributes,

          int count)
				
				<dp n="d45"/>
      throws NSIWholesaleException  {

           String methodName=className +
″.createIndividualAccount(StringX9,Properties,int)″;

           if (count>retry)  {

                 throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties ();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(ATTR_FIRST_NAME,aFirstName);

                allParmsAndAttrs.put(ATTR_LAST_NAME,aLastName);

                allParmsAndAttrs.put(ATTR_ADDRESS1,aAddress1);

                allParmsAndAttrs.put(ATTR_COUNTRY_CODE,aCountryCode);

                allParmsAndAttrs.put(ATTR_PHONE,aPhone);

                allParmsAndAttrs.put(ATTR_CUSTOMER_PASSWORD,
aCustomerPassword);

                allParmsAndAttrs.put(ATTR_AUTH_QUESTION,aAuthQuestion); 
                allParmsAndAttrs.put(ATTR_AUTH_ANSWER,aAuthAnswer);

                allParmsAndAttrs.put(ATTR_CITY,aCity);

                returnCode=
conn.makeRequest(COMBO_CREATE_INDIVIDUAL_ACCOUNT,allParmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

           }

           catch (Exception e) {

                 try {

                      pool.release(conn);

                 }

                 catch (ResourceException re) {

                       System.err.println(methodName + ″Caught
ResourceException″ + re);

                 }

                 finally {

                       return createIndividualAccount(

                             aFirstName,

                             aLastName,

                             aAddress1,

                             aCountryCode,

                             aPhone,

                             aCustomerPassword,

                             aAuthOuestion,

                             aAuthAnswer.

                             aCity,

                             optionalAttributes,

                             count+1);

                     }

             }

    }
				
				<dp n="d46"/>
    /**

     * This method creates an individual customer account and returns an

     * automatically generated customer account id.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aAddress1 the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestion the attribute value

     * @param aAuthAnswer the attribute value

     * @param aCity the attribute value

     * @param aState the attribute value

     * @param aPostalCode the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI##COMBO_CREATE_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_OUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     *

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createIndividualAccount(

          String aFirstName,

          String aLastName,

          String aAddress1,

          String aCountryCode,
				
				<dp n="d47"/>
          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aCity,
          String aState,

          String aPostalCode)

    throws NSIWholesaleException  {

          return createIndividualAccount(

                aFirstName,

                aLaStName,
                aAddress1,

                aCountryCode,

                aPhone,

                aCustomerPassword,

                aAuthQuestion,

                aAuthAnSwer,

                aCity,

                aState,

                aPostalCode.

                new Properties(),

                0);

    }

    /**

     * This method creates an individual customer account and returns an

     * automatically generated customer account id.

     * <BR><PRE>

          Optional Attribute Key(s):

                 ATTR_ADDRESS2

                 ATTR_ADDRESS3

                 ATTR_ADDRESS4

                 ATTR_ADDRESS5

                 ATTR_EMAIL

                 ATTR_FAX

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aAddress1 the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestion the attribute value

     * @param aAuthAnswer the attribute value  

     * @param aCity the attribute value

     * @param aState the attribute value

     * @param aPostalCode the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT
				
				<dp n="d48"/>
     * @see NSIWholesaleAPI#COMBO_CREATE_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE
     *

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND EXECUTION SUCCEEDED PROPERTIES BEING RETURNED

     *@see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createIndividualAccount(

          String aFirstName,

          String aLastName,

          String aAddress1,

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aCity,

          String aState,

          String aPostalCode,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return createIndividualAccount(

                aFirstName,

                aLastName,

                aAddress1,

                aCountryCode,

                aPhone,
                aCustomerPassword,
                aAuthQuestion,

                aAuthAnswer,

                aCity,

                aState,

                aPostalCode,

                optionalAttributes,

                0);

    }

    protected WSPResponse createIndividualAccount(

           String aFirstName,
				
				<dp n="d49"/>
           String aLastName,

           String aAddress1,

           String aCountryCode,

           String aPhone,

           String aCustomerPassword,

           String aAuthQuestion,

           String aAuthAnswer,

           String aCity,

           String aState,

           String apostalCode,

           Properties optionalAttributes,

           int count)

     throws NSIWholesaleException  {

           String methodName=className +
″.createIndividualAccount(StringX11,Properties,int)″;

           if (count>retry)  {

                 throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {
                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

               //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(ATTR_FIRST_NAME,aFirstName);

                allParmsAndAttrs.put(ATTR_LAST_NAME,aLastName);

                allParmsAndAttrs.put(ATTR_ADDRESS1,aAddress1);

                allParmsAndAttrs.put(ATTR_COUNTRY_CODE,aCountryCode);

                allParmsAndAttrs.put(ATTR_PHONE,aPhone);

                allParmsAndAttrs.put(ATTR_CUSTOMER_PASSWORD,
aCustomerPassword);

                allParmsAndAttrs.put(ATTR_AUTH_QUESTION,aAuthQuestion);

                allParmsAndAttrs.put(ATTR_AUTH_ANSWER,aAuthAnswer);

                allParmsAndAttrs.put(ATTR_CITY,aCity);

                allParmsAndAttrs.put(ATTR_STATE,aState);

                allParmsAndAttrs.put(ATTR_POSTAL_CODE,aPostalCode);

                returnCode=
conn.makeRequest(COMBO_CREATE_INDIVIDUAL_ACCOUNT,allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          }

          catch (Exception e)  {

                try {

                      pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                }

                finally  {

                      return createIndividualAccount(
				
				<dp n="d50"/>
                aFirstName,

                aLastName,

                aAddress1.
                aCountryCode,

                aPhone.

                aCustomerPassword.

                aAuthQuestion,

                aAuthAnswer.

                aCity,

                aState.

                apostalCode.

                optionalAttributes,

                court+1);

           }

       }

    }

    /**

     * This method creates a business customer account and returns an

     * automatically generated customer account id.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

         Expected Result Property Key(s) Returned:

               ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aCompanyName the attribute value
     * @param aCompanyType the attribute value

     * @param aAddress1 the attribute value

     * @param aCity the attribute value

     * @param aCountryCode the attribute value

     * @param aphone the attribute value

     * @param aCustomerPassWord the attribute value

     * @param aAuthOuestion the attribute value

     * @param aAuthAnswer the attribute value

     * @param aLegalContactFirstName the attribute value

     * @param aLegalContactLastName the attribute value

     * @param optionalAttributes a property listof optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_CREATE_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_COMPANY_NAME

     * @see NSIWholesaleAPI#ATTR_COMPANY_TYPE

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_LAST_NAME

     *                

     * @see NSIWholesaleAPI#ATTR_STATE
				
				<dp n="d51"/>
     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS2

     * @see NSIWholesaleAPI#ATTR LEGAL_CONTACT_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_CITY

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_STATE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_PHONE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_EMAIL

     *

     * @see WSPResponse#INVALID_VALUE

     * @See
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *@see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     * 

    */

    public WSpResponse createBusinessAccount(

          String aComPanyName,

          String aCompanyType,

          String aAddress1,

          String aCity,

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,
          String aAuthAnswer,
          String aLegalContactFirstName,

            String aLegalContactLastName)

    throws NSIWholesaleException  {

          return createBusinessAccount(

                aCompanyName,

                aCompanyType,

                aAddress1,

                aCity,

                aCountryCode,

                aPhone,

                aCustomerPassword,

                aAuthQuestion,

                aAuthAnswer,

                aLegalContactFirstName,

                aLegalContactLastName,

                new Properties(),

                0);

    }

    /**

     * This method creates a business customer account and returns an

     * automatically generated customer account id.
				
				<dp n="d52"/>
     * <BR><PRE>

          Optional Attribute Key(s):

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_EMAIL

                ATTR_FAX

                ATTR_LEGAL_CONTACT_ADDRESS1

                ATTR_LEGAL_CONTACT_ADDRESS2

                ATTR_LEGAL_CONTACT_ADDRESS3

                ATTR_LEGAL_CONTACT_ADDRESS4

                ATTR_LEGAL_CONTACT_ADDRESS5

                ATTR_LEGAL_CONTACT_CITY

                ATTR_LEGAL_CONTACT_STATE

                ATTR_LEGAL_CONTACT_POSTAL_CODE

                ATTR_LEGAL_CONTACT_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_PHONE

                ATTR_LEGAL_CONTACT_FAX

                ATTR_LEGAL_CONTACT_EMAIL  

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aCompanyName the attribute value

     * @param aCompanyTyPe the attribute value

     * @param aAddress1 the attribute value

     * @param aCity the attribute vale

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestion the attribute value

     * @param aAuthAnswer the attribute value

     * @param aLegalContactFirstName the attribute value

     * @param aLegalContactLastName the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
urable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_CREATE_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_COMPANY_NAME

     * @see NSIWholesaleAPI#ATTR_COMPANY_TYPE

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR AUTH ANSWER

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_LASTNAME

     *

     * @see NSIWholesaleAPI#ATTR_STATE
				
				<dp n="d53"/>
     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_CITY

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_STATE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_PHONE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_EMAIL

     *

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROpERTIES_BEING_RETURNED

     *@see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createBusinessAccount(

          String aCompanyName,

          String aCompanyType,

          String aAddress1

          String aCity,

          String aCountryCode,

          String aPhone, 

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aLegalContactFirstName,

          String aLegalContactLastName,

          Properties optionalAttributes)

    throws NSIWholesaleException{

          return createBusinessAccount(

                aCompanyName,

                aCompanyType,

                aAddress1,
                aCity,

                aCountryCode,

                aPhone,

                aCustomerPassword,

                aAuthQuestion,

                aAuthAnswer,

                aLegalContactFirstName,

                aLegalContactLastName,

                optionalAttributes,

                0);

    }

    protected WSPResponse createBusinessAccount(

          String aCompanyName
				
				<dp n="d54"/>
          String aCompanyType,

          String aAddress1,

          String aCity,

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aLegalContactFirstName,

          String aLegalContactLastName,

          Properties optionalAttributes,

          int count)

    throws NsIWholesaleException  {

          String methodName=className+ ″.createBusinessAccount(StringX11,
Properties,int) ″;

          if (count>retry) {    

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(ATTR_COMPANY_NAME,aCompanyName);

                allParmsAndAttrs.put(ATTR_COMPANY_TYPE,aCompanyType);

                allParmsAndAttrs.put(ATTR_ADDRESS1,aAddress1);

                allParmsAndAttrs.put(ATTR_CITY,aCity);
                allParmsAndAttrs.put(ATTR_COUNTRY_CODE,aCountryCode);

                allParmsAndAttrs.put(ATTR_PHONE,aPhone);

                allParmsAndAttrs.put(ATTR_CUSTOMER_PASSWORD,
aCustomerPassword);

                allParmsAndAttrs.put(ATTR_AUTH_QUESTION,aAuthQuestion);

                allParmsAndAttrs.put(ATTR_AUTH_ANSWER,aAuthAnswer);

                allParmsAndAttrs.put(ATTR_LEGAL_CONTACT_FIRST_NAME,
aLegalContactFirstName);

                allParmsAndAttrs.put(ATTR_LEGAL_CONTACT_LAST_NAME,
aLegalContactLastName);

                returnCode=conn.makeRequest(COMBO_CREATE_BUSINESS_ACCOUNT,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                }

                finally {
				
				<dp n="d55"/>
                return createBusinessAccount(

                      aCompanyName,

                      aCompanyType,

                      aAddress1,

                      aCity,

                      aCountryCode,

                      aPhone,

                      aCustomerPassword,
                      aAuthQuestion,

                      aAuthAnswer,

                      aLegalContactFirstName,

                      aLegalContactLastName,

                      optionalAttributes,

                      count+1);

                }

          }

    }

    /**    

     * This method creates a business customer account and returns an

     * automaticallY generated customer account id.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aCompanyName the attribute value

     * @param aCompanyType the attribute value

     * @param aAddress1 the attribute value

     * @param aCity the attribute value

     * @param aState the attribute value

     * @param aPostalCode the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value 

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestion the attribute value

     * @param aAuthAnswer the attribute value

     * @param aLegalContactFirstName the attribute value

     * @param aLegalContactLastName the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_CREATE_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_COMPANY_NAME

     * @see NSIWholesaleAPI#ATTR_COMPANYTYPE

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER
				
				<dp n="d56"/>
     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_LAST_NAME

     *

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_CITY

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_STATE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_PHONE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_EMAIL

     *

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createBusinessAccount(

          String aCompanyName,

          String aCompanyType,

          String aAddress1,

          String aCity,

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aLegalContactFirstName,

          String aLegalContactLastName,
         String aState,

          String apostalCode)

    throws NSIWholesaleException  {

          return createBusinessAccount(

                aCompanyName,

                aCompanyType,

                aAddress1,

                aCity,

                aCountryCode,

                aPhone,

                aCustomerPas sword,

                aAuthQuestion,

                aAuthAnswer,

                aLegalContactFirstName,

                aLegalContactLastName,

                aState,

                aPostalCode,
				
				<dp n="d57"/>
                new Properties(),

                0);

    }

    /**

     * This method creates a business customer account and returns an

     * automatically generated customer account id.    

     * <BR><PRE>

          Optional Attribute Key(s):

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_EMAIL

                ATTR_FAX

                ATTR_LEGAL_CONTACT_ADDRESS1

                ATTR_LEGAL_CONTACT_ADDRESS2

                ATTR_LEGAL_CONTACT_ADDRESS3

                ATTR_LEGAL_CoNTACT_ADDRESS4

                ATTR_LEGAL_CONTACT_ADDRESS5

                ATTR_LEGAL_CONTACT_CITY

                ATTR_LEGAL_CONTACT_STATE

                ATTR_LEGAL_CONTACT_ POSTAL_CODE

                ATTR_LEGAL_CONTACT_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_PHONE

                ATTR_LEGAL_CONTACT_FAX

                ATTR_LEGAL_CONTACT_EMAIL

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_CUSTOMER_ACCOUNT_ID

     * </PRE><BR>

     * @param aCompanyName the attribute value

     * @param aCompanyType the attribute value

     * @param aAddress1 the attribute value

     * @param aCity the attribute value

     * @param aState the attribute value

     * @param aPostalCode the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aCustomerPassword the attribute value

     * @param aAuthQuestion the attribute value

     * @param aAuthAnswer the attribute value

     * @param aLegalContactFirstName the attribute value

     * @param aLegalContactLastName the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command    

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_CREATE_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#ATTR_COMPANY_NAME

     * @see NSIWholesaleAPI#ATTR_COMPANY_TYPE

     * @see NSIWholesaleAPI#ATTR_ADDRESS1
     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE
				
				<dp n="d58"/>
     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSlWholesaleAPl#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_LAST_NAME

     *

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_CITY

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_STATE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_PHONE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_EMAIL

     *
     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *@see NSIWholesaleAPI#ATTR_CUSTOMER_ACCOUNT_ID

     *

    */

    public WSPResponse createBusinessAccount {

          String aCompanyName,

          String aCompanyType,

          String aAddress1,

          String aCity,

          String aCountryCode,

          String aPhone,

          String aCustomerPassword,

          String aAuthQuestion,

          String aAuthAnswer,

          String aLegalContactFirstName,

          String aLegalContactLastName,

          String aState,

          String aPostalCode,

          Properties optionalAttributes)

    throws NSIWholesaleException{

          return createBusinessAccount(

                aCompanyName,

                aCompanyType,

                aAddress1,

                aCity,

                aCountryCode,

                aPhone,
				
				<dp n="d59"/>
                aCustomerPassword,

                aAuthOuestion,

                aAuthAnswer,

                aLegalContactFirstName,

                aLegalContactLastName,

                aState,

                aPostalCode,

                optionalAttributes,

                0);

    }

    protected WSPResponse createBusinessAccount(

          String aCompanyName,

          String aCompanyType,

          String aAddress1,

          String aCity,

          String aCountryCode,

          String aphone,

          String aCustomerPassword,

          String aAuthQuestion,
          String aAuthAnswer,

          String aLegalContactFirstName,

          String aLegalContactLastName,

          String aState,

          String apostalCode,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className + ″.createBusinessAccount(StringX13,
Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
omplete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(ATTR_COMPANY_NAME,aCompanyName);

                allParmsAndAttrs.put(ATTR_COMPANY_TYPE,aCompanyType);

                allParmsAndAttrs.put(ATTR ADDRESS1,aAddress1) ;

                allParmsAndAttrs.put(ATTR_CITY,aCity);

                allParmsAndAttrs.put(ATTR_COUNTRY_CODE,aCountryCode);

                allParmsAndAttrs.put(ATTR PHONE,aPhone);

                allParmsAndAttrs.put(ATTR_CUSTOMER_PASSWORD,
aCustomerPassword);
                allParmsAndAttrs.put(ATTR_AUTH_QUESTION,aAuthQuestion);

                allParmsAndAttrs.put(ATTR_AUTH_ANSWER,aAuthAnswer);

                allParmsAndAttrs.put(ATTR_LEGAL_CONTACT_FIRST_NAME,
aLegalContactFirstName);

                allParmsAndAttrs.put(ATTR_LEGAL_CONTACT_LAST_NAME,
aLegalContactLastName);
				
				<dp n="d60"/>
                allParmsAndAttrs.put(ATTR_STATE,aState);

                allParmsAndAttrs.put(ATTR_POSTAL_CODE,aPostalCode);

                returnCode=conn.makeRequest(COMBO_CREATE_BUSINESS_ACCOUNT,
allParmsAndAttrs); 

                pool.checkIn(conn);

                return returnCode:

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                       System.err.println(methodName + ″Caught
ResourceException″+ re);

               }

               finally {

                     return createBusinessAccount(

                           aCompanyName,

                           aCompanyType,

                           aAddress1.

                           aCity,

                           aCountryCode,

                           aPhone,

                           aCustomerPassword,

                           aAuthQuestion,

                           aAuthAnswer,

                           aLegalContactFirstName,

                           aLegalContactLastName,

                           aState,

                           aPostalCode,

                           optionalAttributes,

                           count+1);

                 }

          }

    }

    /**

      * This method creates a technical contact and returns an

     * automatically generated technical contact id (NIC Handle).

     * <BR><PRE>

         Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

        Expected Result Property Key(s) Returned:

              ATTR_TECH_CONTACT_ID

     * </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aOrganization the attribute value

     * @param aAddress1 the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aEmail the attribute value

     * @param aTechContactPassword the attribute value

     * @param aCity the attribute value

     * @return the Wholesale Server Protocol Server response
				
				<dp n="d61"/>
     * @exception nsi.wholesale,toolkit.javaapi.NSIWholesaleException when
unabie to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_CREATE_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ORGANIZATION

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#ATTR_CITY

     *

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResPonse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

    */

    public WSpResponse createTechnicalContact(

          String aFirstName,

          String aLastName,

          String aOrganization,

          String aAddress1,
          String aCountryCode,

          String aPhone,

          String aEmail,

          String aTechContactPassword,

          String aCity)

    throws NSIWholesaleException  {

          return createTechnicalContact(

                aFirstName,

                aLastName,

                aOrganization,

                aAddress1,

                aCountryCode,

                aPhone,

                aEmail,

                aTechContactPassword,

                aCity,

                new Properties(),

                0);

    }

    /**

     * This method creates a technical contact and returns an

     * automatically generated technical contact id (NIC Handle).

     * <BR><PRE>

          Optional Attribute Key(s):

                 ATTR_FAX
				
				<dp n="d62"/>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key (s) Returned:

                ATTR_TECH_CONTACT_ID

     * </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aOrganization the attribute value

     * @param aAddress1 the attribute value

     * @param aCountrvCode the attribute value

     * @param aPhone the attribute value

     * @param aEmail the attribute value
     * @param aTechContactPassword the attribute value

     * @param aCity the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_CREATE_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ORGANIZATION

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#ATTR_CITY

     *

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

    */

    public WSPResponse createTechnicalContact(

          String aFirstName,

          String aLastName,

          String aOrganization,

          String aAddressl,

          String aCountryCode,

          String aPhone,

          String aEmail,

          String aTechContactPassword,

          String aCity,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return createTechnicalContact(

                aFirstName,

                aLastName,

                aOrganization,
				
				<dp n="d63"/>
               aAddress1,

               aCountryCode,

               aPhone,

               aEmail,

               aTechContactPassword,

               aCity,

               optionalAttributes,

               0);

    }

    protected WSPResponse createTechnicalContact(

          String aFirstName,

          String aLastName,

          String aOrganization,

          String aAddress1,

          String aCountryCode,

          String aPhone,

          String aEmail,

          String aTechContactPassword,

          String aCity,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className + ″.createTechnicalContact(StringX9,
Properties,int) ″;    

         if(count>retry)  {

              throw new NSIWholesaleException(methodName +″Unable to
complete command″);

         }

         NSIWholesaleConnection conn=null;

         WSPResponse returnCode;

         try {

               conn=(NSIWholesaleConnection)pool.checkOut();

               Properties allParmsAndAttrs=new Properties();

               //put optional attributes

               propertiesCat(allParmsAndAttrs,optionalAttributes);

               allParmsAndAttrs.put(ATTR_FIRST_NAME,aFirstName);

               allParmsAndAttrs.put(ATTR_LAST_NAME,aLastName);

               allParmsAndAttrs.put(ATTR_ORGANIZATION,aOrganization);

               allParmsAndAttrs.put(ATTR_ADDRESS1,aAddress1);

               allParmsAndAttrs.put(ATTR_COUNTRY_CODE,aCountryCode);

               allParmsAndAttrs.put(ATTR_PHONE,aPhone);

               allParmsAndAttrs.put(ATTR_EMAIL,aEmail);

               allParmsAndAttrs.put(ATTR_TECH_CONTACT_PASSWORD,
aTechContactPassword);

               allParmsAndAttrs.put(ATTR_CITY,aCity);

               returnCode=
conn.makeRequest(COMBO_CREATE_TECHNICAL_CONTACT,allParmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

         } catch (Exception e)  {

               try {

                     pool.release(conn);

               }
				
				<dp n="d64"/>
                 catch (ResourceException re)  {

                       System.err.println(methodName +″Caught
ResourceException″ + re};    

                 }

                 finally {

                       return createTechnicalContact(

                             afirstName,

                             aLastName,

                             aOrganization,

                             aAddress1,

                             aCountryCode,

                             aPhone,

                             aEmail,
                             aTechContactPassword,

                             aCity,

                             optionalAttributes,

                             count+1);

               }

             }

    }

    /**

     * This method creates a technical contact and returns an

     * automatically generated technical contact id (NIC Handle).
     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_TECH_CONTACT_ID

     * </PRE><BR>    

     * @param afirstName the attribute value

     * @param aLastName the attribute value

     * @param aOrganization the attribute value

     * @param aAddress1 the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aEmail the attribute value

     * @param aTechContactPassword the attribute value

     * @param aCity the attribute value

     * @param aState the attribute value

     * @param aPostalCode the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command    

     * @see NSIWholesaleAPI#CoMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_CREATE_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ORGANIZATION

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE    
				
				<dp n="d65"/>
     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     *

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *            

    */

    public WSPResponse createTechnicalContact(

          String aFirstName,

          String aLastName,

          String aOrganization,

          String aAddress1,

          String aCountryCode,

          String aPhone,

          String aEmail,

          String aTechContactPassword,

          String aCity,

          String aState,

          String aPostalCode)

    throws NSIWholesaleException  {

          return createTechnicalContact(

                aFirstName,

                aLastName,

                aOrganization,

                aAddress1,

                aCountryCode,

                aPhone,

                aEmail,

                aTechContactPassword,

                aCity,

                aState,

                aPostalCode,

                new Properties(),

                0);

    }

    /**

     * This method creates a technical contact and returns an

     * automatically generated technical contact id (NIC Handle)

     * <BR><PRE>

         Optional Attribute Key(s):

                ATTR_FAX

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_TECH_CONTACT_ID

     * </PRE><BR>

     * @param aFirstName the attribute value

     * @param aLastName the attribute value

     * @param aOrganization the attribute value

     * @param aAddress1 the attribute value

     * @param aCountryCode the attribute value

     * @param aPhone the attribute value

     * @param aEmail the attribute value
				
				<dp n="d66"/>
     * @param aTechContactPassword the attribute value

     * @param aCitythe attribute value

     * @param aState the attribute value

     * @param apostalCode the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete conmand

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_CREATE_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ORGANIZATION

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE
     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     *

     * @see NSIWholesaleAPI#ATTR_FAX

     *

     * @see WSPResponse#INVALID_VALUE
     * @See
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED
     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

    */
    public WSPResponse createTechnicalContact(

          String aFirstName,

          String aLastName,

          String aOrganization,

          String aAddress1,

          String aCountryCode,

          String aPhone,

          String aEmail,

          String aTechContactPassword,

          String aCity,

          String aState,

          String aPostalCode,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return createTechnicalContact(

                aFirstName,

                aLastName,

                aOrganization,

                aAddress1,

                aCountryCode,

                aPhone,

                aEmail,

                aTechContactPassword,

                aCity,

                aState,

                aPostalCode,
				
				<dp n="d67"/>
                optionalAttributes,

                0);

     }

     protected WSPResponse createTechnicalContact(

           String aFirstName,

           String aLastName,

           String aOrganization,

           String aAddress1,

           String aCountryCode,

           String aPhone,

           String aEmail,

           String aTechContactPassword,

           String aCity,

           String aState,

           String aPostalCode,

           Properties optionalAttributes,

           int count)

     throws NSIWholesaleException  {

           String methodName=className +
″.createTechnicalContact(StringX11,Properties,int)″;

           if (count>retry)  {

                 throw new NSIWholesaleExcePtion(methodName + ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool,checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                all ParmsAndAttrs.put(ATTR_FIRST_NAME,aFirstName);

                all ParmsAndAttrs.put(ATTR_LAST_NAME,aLastName);

                all ParmsAndAttrs.put(ATTR_ORGANIZATION,aOrganization);

                all ParmsAndAttrs.put(ATTR_ADDRESS1,aAddress1);

                all ParmsAndAttrs.put(ATTR_COUNTRY_CODE,aCountryCode);

                all ParmsAndAttrs.put(ATTR_PHONE,aPhone);

                all ParmsAndAttrs.put(ATTR_EMAIL,aEmail);

                all ParmsAndAttrs.put(ATTR_TECH_CONTACT_PASSWORD,
aTechContactPassword);        

                allParmsAndAttrs.put(ATTR_CITY,aCity);

                allParmsAndAttrs.put (ATTR_STATE,aState);

                allParmsAndAttrs.put(ATTR_POSTAL_CODE,aPostalCode);
                returnCode=
conn.makeRequest(COMBO_CREATE_TECHNICAL_CONTACT,allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {
				
				<dp n="d68"/>
                      System.err.println(methodName + ″Caught
ResourceException″+ re);    

                }

                finally {

                      return createTechnicalContact(

                            aFirstName.

                            aLastName,

                            aOrganization,

                            aAddress1,

                            aCountryCode,

                            aPhone,

                            aEmail,

                            aTechContactPassword.

                            aCity,

                            aState,

                            aPostalCode,

                            optionalAttributes,

                            count+1);

                 }

           }

    }

    /**

     * This method registers a new domain product for an existing

     * customer account.This request assumes that the domain
     * name will be hosted by some organization other than

     * Network Solutions.

     * <BR>NOTE:This command is asynchronous.Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_ISP_PASSWORD

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param aDomainName the attribute value

     * @param aHostName1 the attribute value

     * @param aHostAddr1 the attribute value

     * @param aHostName2 the attribute value

     * @param aHostAddr2 the attribute value

     * @param aTechContactId the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NsIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_CREATE_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_NAME1

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR1

     * @see NSIWholesaleAPI#ATTR_HOST_NAME2
				
				<dp n="d69"/>
     * @see NSIWholesaleAPI#ATTR_HOST_ADDR2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWNERROR

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_ISP_PASSWORD

     *

    */

    public WSPResponse createDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId

          }

    throws NSIWholesaleException  {

          return createDomain(

                pCustomerAccountId,

                pCustomerPassword,

                aDomainName,

                aHostName1,

                aHostAddr1,

                aHostName2,

                aHostAddr2,

                aTechContactId,

                new Properties(),

                0);

    }

    /**

     * This method registers a new domain product for an existing

     * customer account. This request assumes that the domain

     * name will be hosted by some organization other than

     * Network Solutions.

     * <BR>NOTE:This command is asynchronous.Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_ISP_PASSWORD

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param aDomainName the attribute value

     * @param aHostName1 the attribute value

     * @param aHostAddr1 the attribute value

     * @param aHostName2 the attribute value

     * @param aHostAddr2 the attribute value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes
				
				<dp n="d70"/>
     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_CREATE_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_NAME1

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR1

     * @see NSIWholesaleAPI#ATTR_HOST_NAME2

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see    
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_ISP_PASSWORD

     *

    */

    public WSPResponse createDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return createDomain(

                pCustomerAccountId,

                pCustomerPassword,

                aDomainName,

                aHostName1,

                aHostAddr1,

                aHostName2,

                aHostAddr2,

                aTechContactId,

                optionalAttributes,

                0);

    }

    protected WSPResponse createDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId,

          Properties optionalAttributes,

          int count)
				
				<dp n="d71"/>
   throws NSIWholesaleException  {

         int rc;

          String methodName=c1assName +″.createDomain(StringX8,
Properties,int)″;

          System.out.println(″***Made it into createDomain...″);

          if(count>retry)  {

               rc=refundCard(pCustomerAccountId,aDomainName,

                                   CreateDomainPrice,CreateDomainWNRP,

                                   optionalAttributes);

               throw new NSIWholesaleException(methodName +″Unable to
complete command″);    
          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

            //Double check to see if the domain really is available (to
minimize charges)

            //with immediate credits

            try {

               System.out.println(″***Attempting to verify domain is
available.″);

              WSPResponse wspResponse=verifyDomainName(aDomainName);
              if (wspResponse.getMajorResultCode()==
WSPResponse.COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED)  {

                  // See if credit card information is available,if so get
transaction

                  System.out.println(″***Begining to do Charge Card
Validation.″);

                   rc=ChargeCard(pCustomerAccountId,aDomainName,

                                   CreateDomainPrice,CreateDomainWNRP,

                                   optionalAttributes);

                   if (rc!=0)  {

                       //Bad credit card. Return bad code.

                   throw new NSIWholesaleException(methodName +″Credit card
declined for:″+

                                                 aDomainName);

                     }

                   } else  {

                      //Domain name not available. Return bad code.

                throw new NSIWholesaleException(methodName +″Domain name
not available:″+

                                                aDomainName);

                   }

                 }

               catch (NSIWholesaleException e)  {

                 throw new NSIWholesaleException(″Domain name previously
taken:″+ aDomainName);

               }

               //All o.k.create the domain.

               System.out.println(″***After the credit card interaction,
going on to create a name.″);

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);
				
				<dp n="d72"/>
                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                allParmsAndAttrs.put(ATTR_DOMAIN_NAME,aDomainName);

                allParmsAndAttrs.put(ATTR_HOST_NAME1,aHostName1);

                allParmsAndAttrs.put(ATTR_HOST_ADDR1,aHostAddr1);

                allParmsAndAttrs.put(ATTR_HOST_NAME2,aHostName2);

                allParmsAndAttrs.put(ATTR_HOST_ADDR2,aHostAddr2);

                allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId);

                returnCode=conn.makeRequest(COMBO_CREATE_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName +″Caught
ResourceException″+re);

                }

                finally {

                      return createDomain(

                            pCustomerAccountId,

                            pCustomerPassword,

                            aDomainName,

                            aHostNamel,

                            aHostAddr1,

                            aHostName2,

                            aHostAddr2,

                            aTechContactId,

                            optionalAttributes,

                            count+1);

                }

           }

    }

    /**

     * This method registers a new domain product for an existing

     * customer account. This redest assumes that the domain

     * name will be hosted by some organization other than

     * Network Solutions.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result  Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_ISP_PASSWORD

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param aDomainName the attribute value
				
				<dp n="d73"/>
     * @param aHostIdl the attribute value

     * @param aHostId2 the attribute value

     * @pararm aTechContactIdthe attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_CREATE_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_ID1

     * @see NSIWholesaleAPI#ATTR_HOST_ID2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#CoMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_ISP_PASSWORD

     *

    */

    public WSPResponse createDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          String aHostId1,

          String aHostId2,

          String aTechContactId

          }

    throws NSIWholesaleException  {

          return createDomain(

                pCustomerAccountId,

                pCustomerPassword,

                aDomainName,

                aHostId1,

                aHostId2,

                aTechContactId,

                new Properties(),

                0);

    }    

    /**

     * This method registers a new domain product for an existing

     * customer account. This redquest assumes that the domain

     * name will be hosted by some organization other than

     * Network Solutions.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_ISP_PASSWORD

     * </PRE><BR>
				
				<dp n="d74"/>
     * @param pCustormerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param aDomainName the attribute value

     * @param aHostId1 the attribute value

     * @param aHostId2 the attribute value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes
     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_CREATE_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_ID1

     * @see NSIWholesaleAPI#ATTR_HOST_ID2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSpResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_ISP_PASSWORD

     *

    */

    public WSPResponse createDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          String aHostId1,

          String aHostId2,

          String aTechContactId,

          properties optionalAttributes)

    throws NSIWholesaleException  {

          return createDomain(

                pCustomerAccountId,

                pCustomerPassword,

                aDomainName,

                aHostId1,

                aHostId2,

                aTechContactId,

                optionalAttributes,

                0);

    }

    protected WSPResponse createDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          String aHostId1,

          String aHostId2,

          String aTechContactId,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {
				
				<dp n="d75"/>
          String methodName=className +″.createDomain(StringX6,
Properties,int)″;

          if (count>retry)  {

               throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null:

          WSPResponse returnCode;

          try  {

                 conn=(NSIWholesaleConnection)pool.checkOut();

                 Properties allParmsAndAttrs=new Properties();

                 //put optional attributes

                 propertiesCat(allParmsAndAttrs,optionalAttributes);

                 allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                 allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                 allParmsAndAttrs.put(ATTR_DOMAIN_NAME,aDomainName);

                 allParmsAndAttrs.put(ATTR_HOST_ID1,aHostId1);

                 allParmsAndAttrs.put(ATTR_HOST_ID2,aHostId2);

                 allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId);

                 returnCode=conn.makeRequest(COMBO_CREATE_DOMAIN,
allParmsAndAttrs);

                 pool.checkIn(conn);

                 return returnCode;

          }  catch (Exception e)  {

                 try {

                        pool.release(conn);

                 }

                 catch (ResourceException re)  {

                       System.err.println(methodName+ ″Caught
ResourceException″+ re);

                 }

                 finally {

                       return createDomain(
                             pCustomerAccountId,

                             pCustomerPassword,

                             aDomainName,

                             aHostId1,

                             aHostId2,

                             aTechContactId,

                             optionalAttributes,

                             count+1);

               }

          }

    }

    /**

     * This method registers a DNS Hosting product for an existing

     * customer account.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.
				
				<dp n="d76"/>
     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_DNS_HOSTING_CREATED

                ATTR_ISP_PASSWORD

     * </PRE><BR>

     * @param pCustomerAccountld the parameter value

     * @param pCustomerPassword the parameter value

     * @param aDomainName the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_DNS_HOSTING

     * @see NSIWholesaleAPI#COMBO_CREATE_DNS_HOSTING

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *@see NSIWholesaleAPI#ATTR_DNS_HOSTING_CREATED

     *@see NSIWholesaleAPI#ATTR_ISP_PASSWORD
     *

    */

    public WSPResponse createDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomairame)

    throws NSIWholesaleException  {

          return createDnsHosting(

                pCustomerAccountId,

                pCustomerPassword,

                aDomainName,

                new Properties(),

                0);

   }

    /**

     * This method registers a DNS Hosting product for an existing

     * customer account.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTI ES_BEING_RETURNED code

     * indicates that the command has been successfully queued.
     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_DNS_HOSTING_CREATED

                ATTR_ISP_PASSWORD

     * </PRE><BR>    

     * @param pCustomerAccountId the paraneter value

     * @param pCustomerPassword the parameter value

     * @param aDomainName the attribute value

     * @param optionalAttributes a property list of optional attributes
				
				<dp n="d77"/>
     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_CREATE

     * @see NSIWholesaleAPI#CLASS_DNS_HOSTING

     * @see NSIWholesaleAPI#COMBO_CREATE_DNS_HOSTING

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_DNS_HOSTING_CREATED

     * @see NSIWholesaleAPI#ATTR_ISP_PASSWORD

     *

    */

    public WSPResponse createDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return createDnsHosting(

                pCustomerAccountId,

                pCustomerPassword,

                aDomainName,

                optionalAttributes,

                0);

    }

    protected WSPResponse createDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          String aDomainName,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  (

          String methodName=className+″.createDnsHosting(String,String,
String,Properties,int)″;

          if (count>retry)  {

                rc=refundCard(pCustomerAccountId,aDomainName,

                                    CreateDnsHostPrice,CreateDnsHostWNRP,

                                    optionalAttributes);

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

            //Double check to see if the domain really is available (to
minimize charges)

           //with immediate credits

           try {

              System.out.println(***Attempting to verify domain for DNS
Hosting.″);

              WSPResponse wspResponse=verifyDomainName( aDomainName);

              if (wspResponse.getMajorResultCode()==
				
				<dp n="d78"/>
WSPResponse.COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED)  {

                  //See if credit card information is available,if so get
transaction    

                  System.out.println(″***Begining to do Charge Card
Validation.″);

                    rc=ChargeCard(pCustomerAccountId,aDomainName,

                                    CreateDomainPrice,CreateDomainWNRP

                                    optionalAttributes);

                    if (rc!=0)  {

                        //Bad credit card. Return bad code.

                    throw new NSIWholesaleException(methodName +″Credit card
declined for:″+

                                                 aDomainName);

                      }

                   }  else  {

                       //Domain name not available. Return bad code.

                 throw new NSIWholesaleException(methodName +″Domain name
not available:″+

                                                 aDomainName);

                   }

                 }

               catch(NSIWholesaleException e)  {

                 throw new NSIWholesaleException(″Domain name previously
taken:″+ aDomainName);

                }

          try { 

                 conn=(NSIWholesaleConnection)pool.checkOut();

                 Properties allParmsAndAttrs=new Properties();

                 //put optional attributes

                 propertiesCat(allParmsAndAttrs,optionalAttributes);

                 allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                 allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                 allParmsAndAttrs.put(ATTR_DOMAIN_NAME,aDomainName);

                 returnCode=conn.makeRequest{COMBO_CREATE_DNS_HOSTING,
allParmsAndAttrs);

                 pool.checkIn(conn);

                 return returnCode;

          }  catch  (Exception e)  {

                 try  {    

                        pool.release(conn);

                 }

                 catch (ResourceException re)  {

                       System.err.println(methodName + ″Caught
ResourceException″+ re);

                }

                finally {

                      return createDnsHosting (

                            pCustomerAccountId,

                            pCustomerPassword,

                            aDomainName.
				
				<dp n="d79"/>
                           optionalAttributes,

                           count+1);

                    }
               }

    }

    /*

     * This method allows a customer to modify one or more attributes

     * associated with a specific instance of a Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous.Receipt of the

     * COMMAND EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     *  <BR><PRE>

           Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostName1 the attribute value

     * @param aHostAddr1 the attribute value

     * @param aHostName2 the attribute value

     * @param aHostAddr2 the attribute value

     * @param aTechContactId the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_NAME1

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR1

     * @see NSIWholesaleAPI#ATTR_HOST_NAME2

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_PAILED_UNKNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEINGRETURNED

     *@see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

    */

    public WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          String aHostName1,
				
				<dp n="d80"/>
          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId

          }

    throws NSIWholesaleException  {

          return modifyDomain(

                pCustomerAccountId,

                pCustomerPassword,

                pDomainName

                aHostName1,

                aHostAddrl,

                aHostName2,

                aHostAddr2,

                aTechContactId,

                new Properties(),

                0);

    }

    /**

     * This method allows a customer to modify one or more attributes

     * associated with a specific instance of a Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous.Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED_code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostName1 the attribute value

     * @param aHostAddr1 the attribute value

     * @param aHostName2 the attribute value

     * @param aHostAddr2 the attribute value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_NAMEl

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR1

     * @see NSIWholesaleAPI#ATTR_HOST_NAME2 

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE
				
				<dp n="d81"/>
     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

    */

    public WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return modifyDomain(

                pCustomerAccountId,

                pCustomerPassword,

                pDomainName,

                aHostName1,

                aHostAddr1,

                aHostName2,

                aHostAddr2,

                aTechContactId,

                optionalAttributes,

                0);

    }

    protected WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          StringmethodName=className +″.modifyDomain(StringX8,
Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse  returnCode;

         try{

              conn=(NSIWholesaleConnection)pool.checkOut();

               Properties allParmsAndiAttrs=new Properties();

               //put optional attributes
				
				<dp n="d82"/>
                propertiesCat(allParmsAnAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);
                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                allParmsAndAttrs.put(ATTR_HOST_NAME1,aHostName1);

                allParmsAndAttrs.put(ATTR_HOST_ADDR1,aHostAddr1);

                allParmsAndAttrs.put(ATTR_HOST_NAME2,aHostName2);

                allParmsAndAttrs.put(ATTR_HOST_ADDR2,aHostAddr2);

                allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId)

                returnCode=conn.makeRequest(COMBO_MODIFY_DOMAIN,
allparmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

         } catch (Exception e)  {

               try {

                     pool.release(conn);

               }

               catch (ResourceException re)  {

                     System.err.println(methodName + ″Caught
ResourceException″+re);

               }

               finally {

                     return modifyDomain{

                           pCustomerAccountId,

                           pCustomerPassword,

                           pDomainName,

                           aHostName1,

                           aHostAddr1,

                           aHostName2,

                           aHostAddr2,

                           aTechContactId,

                           optionalAttributes,

                           count+1);

               }

           }

    }  

    /**

     * This method allows a customer to modify one or more attributes

     * associated with a specific instance of a Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *  </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value
				
				<dp n="d83"/>
     * @param pDomainName the parameter value

     * @param aHostId1 the attribute value

     * @param aHostId2 the attribute value

     * @param aTechContactIdthe attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSIOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_ID1

     * @see NSIWholesaleAPI#ATTR_HOST_ID2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID            

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *
    */

    public WSPResponse modifyDomain(

          String pCustomerAccountId 

          String pCustomerPassword,

          String pDomainName,

          String aHostId1,

          String aHostId2,

          String aTechContactId

          )

    throws NSIWholesaleException  {

          return modifyDomain(

                pCustomerAccountId,

                pCustomerPassword,

                pDomainName, 

                aHostId1,

                aHostId2,

                aTechContactId,

                new Properties(),

                0);

    }

    /**

     * This method allows a customerto modify one or more attributes

     * associated with a specific instance of a Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>
				
				<dp n="d84"/>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostId1 the attribute value

     * @param aHostId2 the attribute value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_ID1

     * @see NSIWholesaleAPI#ATTR_HOST_ID2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND    

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     */

     public WSPResponse modifyDomain(

           String pCustomerAccountId,
           String pCustomerPassword,

           String pDomainName,

           String aHostId1,

           String aHostId2,
           String aTechContactId,

           Properties optionalAttributes)

     throws NSIWholesaleException  {

           return modifyDomain(

                 pCustomerAccountId,

                 pCustomerPassword,

                 pDomainName,

                 aHostId1,

                 aHostId2,

                 aTechContactId,

                 optionalAttributes,

                 0);

    }

    protected WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          String aHostId1,
				
				<dp n="d85"/>
          String aHostId2,  

          String aTechContactId,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className + ″,modifyDomain(StringX6,
Properties;int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }    

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);    

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);    

                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                allParmsAndAttrs.put(ATTR_HOST_ID1,aHostId1);

                allParmsAndAttrs.put(ATTR_HOST_ID2,aHostId2);

                allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId);

                returnCode=conn.makeRequest(COMBO_MODIFY_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+re);

                }

                finally {

                      return modifyDomain(

                            pCustomerAccountId,

                            pCustomerPassword,

                            pDomainName,

                            aHostId1,

                            aHostId2,

                            aTechContactId,

                            optionalAttributes,

                            count+1);

               }

          }

    }
				
				<dp n="d86"/>
    /**

     * This method allows a technical contact of a customer′s domain

     * product to modify one or more attributes

     * associated with that specific instance of the Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>    

     * @param pCustomerAccountId the parameter value

     * @param pTechContactId the parameter value

     * @param pTechContactPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostName1 the attribute value

     * @param aHostAddr1 the attribute value

     * @param aHostName2 the attribute value

     * @param aHostAddr2 the attribute va1ue

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN
     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME
     * @see NSIWholesaleAPI#ATTR_HOST_NAME1

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR1
     * @see NSIWholesaleAPI#ATTR_HOST_NAME2

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED
     *

    */

    public WSPResponse modifyDomain (

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,
				
				<dp n="d87"/>
          String aTechContactId

          )

    throws NSIWholesaleException  {

          return modifyDomain(

                pCustomerAccountId,

                pTechContactId,

                pTechContactPassword,

                pDomainName,

                aHostName1,

                aHostAddr1,

                aHostName2,

                aHostAddr2,

                aTechContactId,

                new Properties(),

                0);

    }

    /**

     * This method allows a technical contact of a customer′s domain

     * product to modify one or more attributes

     * associated with that specific instance of the Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>
     * @param pCustomerAccountId the parameter value
     * @param pTechContactId the parameter value

     * @param pTechContactPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostName1 the attribute value

     * @param aHostAddr1 the attribute value

     * @param aHostName2 the attribute value

     * @param aHostAddr2 the attribute value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_NAMEl

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR1
     * @see NSIWholesaleAPI#ATTR_HOST_NAME2

     * @see NSIWholesaleAPI#ATTR_HOST_ADDR2
     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#(OMMAND_FAILED_UNKNOWN_ERROR
				
				<dp n="d88"/>
     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */    

    public WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return modifyDomain(

                pCustomerAccountId,

                pTechContactId,

                pTechContactPassword,

                pDomainName,

                aHostName1,

                aHostAddr1,

                aHostName2,

                aHostAddr2,

                aTechContactId,

                optionalAttributes,

                0);

    }

    protected WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomAainName,

          String aHostName1,

          String aHostAddr1,

          String aHostName2,

          String aHostAddr2,

          String aTechContactId,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className +″.modifyDomain(StringX9,
Properties,int)″;

          if (count>retry)  (

                throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;
           try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();
				
				<dp n="d89"/>
                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_ID,pTehContactId);
                allParmsAndAttrs.put(PARM_TECH_CONTACT_PASSWORD,
pTechContactPassword);

                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                allParmsAndAttrs.put(ATTR_HOST_NAME1,aHostName1);

                allParmsAndAttrs.put(ATTR_HOST_ADDR1,aHostAddr1);

                allParmsAndAttrs.put(ATTR_HOST_NAME2,aHostName2);

                allParmsAnAttrs.put(ATTR_HOST_ADDR2,aHostAddr2);
                allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId);

                returnCode=conn.makeRequest(COMBO_MODIFY_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn};

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.errprintln(methodName + ″Caught
ResourceException″+ re);

               }

               finally  {

                     return modifyDomain(

                           pCustomerAccountId,

                           pTechContactId,

                           pTechContactPassword,

                           pDomainName,

                           aHostName1,

                           aHostAddr1,

                           aHostName2,

                           aHostAddr2,

                           aTechContactId,

                           optionalAttributes,

                           count+1);    

             }

        }

    }

    /**

     * This method allows a technical contact of a customer′s domain

     * product to modify one or more attributes

     * associated with that specific instance of the Domain product

     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>
				
				<dp n="d90"/>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pTechContactId the parameter value

     * @param pTechContactPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostId1 the attribute value

     * @param aHostId2 the attribute value

     * @param aTechContactId the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIwholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PAR_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOSI_ID1

     * @see NSIWholesaleAPI#ATTR_HOSI_ID2

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_ExECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see  
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName,

          String aHostId1,

          String aHostId2,

          String aTechContactId

          )

    throws NSIWholesaleException {

          return modifyDomain (

                pCustomerAccountId,

                pTechContactId,

                pTechcontactPassword,

                pDomainName,

                aHostId1,

                aHostId2,

                aTechContactId,

                new Properties(),

                0);

    }

    /**  

     * This method allows a technical contact of a customer′s domain
     * product to modify one or more attributes    

     * associated with that specific instance of the Domain product
				
				<dp n="d91"/>
     * registered to that customer.

     * This method will also convert a DNS Hosting product domain

     * into a standard domain.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pTechContactId the parameter value

     * @param pTechContactPassword the parameter value

     * @param pDomainName the parameter value

     * @param aHostId1 the attribute value

     * @param aHostId2 the attribute value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command
     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_HOST_ID1

     * @see NSIWholesaleAPI#ATTR_HOST_ID2

     * @see NSIWholesaleAPI#ATTR_TEH_CONTACT_ID

     *

     * @see WSPResponse#COMMAND_FAILED_UNKNOWN_ERROR

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

    *

   */

    public WSPResponse modifyDomain(

          String pCustomerAccountId

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName,

          String aHostId1,

          String aHostId2,

          String aTechContactId,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

         return modifyDomain(

               pCustomerAccountId,

               pTechContactId,

               pTechContactPassword,

               pDomainName,

               aHostId1,

               aHostId2,
				
				<dp n="d92"/>
               aTechContactId,

               optionalAttributes,

               0);
   }

    protected WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName,

          String aHostId1,

          String aHostId2,  

          String aTechContactId,

          Properties optionalAttributes,

          int count)

    throws NSIWholesal.eException  {

          String methodName=className + ″.modifyDomain(StringX7,
Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode ;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_ID,pTechContactId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_PASSWORD,
pTechContactPassword);

                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                allParmsAndAttrs.put(ATTR_HOST_ID1,aHostId1);

                allParmsAndAttrs.put(ATTR_HOST_ID2,aHostId2);

                allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId);

                returnCode=conn.makeRequest(COMBO_MODIFY_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                }
                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                }

                finally {

                      return modifyDomain(

                            pCustomerAccountId,

                            pTechContactId,
				
				<dp n="d93"/>
                            pTechContactPassword,

                            pDomainName,

                            aHostId1,

                            aHostId2,

                            aTechContactId.

                            optionalAttributes,

                            count+1);

              }

       }

    }
    /**

     * This method allows an Internet Service Provider (ISP)

     * to modify the Technical Contact Id of a specific domain product.

     * <BR>NOTE:This command is asynchronous.Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_EEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

         Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR> 

     * @param pCustomerAccountId the parameter value

     * @param pIspPassword the parameter value

     * @param pDomainName the parameter value

     * @param aTechContactId the attribute value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_ISP PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pIspPassword 

          String pDomainName,

          String aTechContactId
          }

    throws NSIWholesaleException  {

          return modifyDomain(

                pCustomerAccountId,

                pIspPassword,

                pDomainName,

                aTechContactId,

                new Properties(),

                0);

     }
				
				<dp n="d94"/>
    /**

     * This method allows an Internet Service Provider (ISP)

     * to modify the Technical Contact Id of a specific domain product.

     * <BR>NOTE:This command is asynchronous. Receipt of the

     * COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED code

     * indicates that the command has been successfully queued.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pIspPassword the parameter value

     * @param pDomainName the parameter value

     * @param aTechContactId the attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_MODIFY_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_ISP_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     * @see NSIWholesaleAPI#ATTR_TECH_CONTACT_ID

     *

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *                      

    */

    public WSPResponse modifyDomain(

          String pCustomerAccountId,

          String pIspPassword,

          String pDomainName,

          String aTechContactId,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return modifyDomain(

                pCustomerAccountId,

                pIspPassword,

                pDomainName,

                aTechContactId,

                optionalAttributes,

                0);

    }
    protected WSPResponse modifyDomain(

          String pCustomerAccountId,

          Strirg pIspPassword,

          String pDomainName,

          String aTechContactId,
          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className+″.modifyDomain(StringX4,
Properties,int)″;

          if (count>retry)  {
				
				<dp n="d95"/>
                 throw new NSIWholesaleException(methodName + ″Unable to
complete command″);
          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_ISP_PASSWORD,pIspPassword);

                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                allParmsAndAttrs.put(ATTR_TECH_CONTACT_ID,aTechContactId);

                returnCode=conn.makeRequest(COMBO_MODIFY_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e) {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″ + re);

                }

                finally {

                      return modifyDomain(

                            pCustomerAccountId,

                            pIspPassword,

                            pDomainName,

                            aTechContactId,

                            optionalAttributes,

                            count+1);

                }

           }

    }

    /**

     *This method is used to modify one or more attributes

     *  of  an existing  individual customer account.

     *  <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>    

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY
				
				<dp n="d96"/>
     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesa1eAPI#COMBO_MODIFY_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *    

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse modifyIndividualAccount(

          String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleException  {

          return modifyIndividualAccount(

                pCustomerAccountId,

                pCustomerPassword,

                new Properties(),

                0);

    }

    /**

     * This method is used to modify one or more′attributes

     * of an existing individual customer account.

     * <BR><PRE>

          Optional Attribute Key(s):

                ATTR_CUSTOMER_PASSWORD

                ATTR_FIRST_NAME

                ATTR_LAST_NAME

                ATTR_ADDRESS1

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_CITY 

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

                ATTR_PHONE

                ATTR_FAX
				
				<dp n="d97"/>
                     ATTR_EMAIL

                     ATTR_AUTH_QUESTION

                     ATTR_AUTH_ANSWER

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CIASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_MODIFY_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME
     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *
    */

    public WSPResponse modifyIndividualAccount(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException{

          return modifyIndividualAccount(

                pCustomerAccountId,

                pCustomerPassword,

                optionalAttributes,

                0);

    }

    protected WSPResponse modifyIndividualAccount(
          String pCustomerAccountId,

          String pCustomerPassword,
          Properties optionalAttributes,
				
				<dp n="d98"/>
          int count)

    throws NSIWholesaleException  {

          String methodName=className +″.modifyIndividualAccount(String,
String,Properties,int}″;    

          if (count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                all ParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                returnCode=
conn.makeRequest(COMBO_MODIFY_INDIVIDUAL_ACCOUNT,allParmsAndAttrs);

                Pool.checkIn (conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                }    

                catch (ResourceException re)  {

                      System.err.println(methodName+″Caught
ResourceException″+ re);

               }

               finally {

                     return modifyIndividualAccount(
                           pCustomerAccountld,

                           pCustomerPassword,

                           optionalAttributes,

                           count+1);

               }

         }

    }

    /**

     * This method is used to modify one or more attributes

     * of an existing business (organization) customer account.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @return the Wholesale Server Protocol Server response
				
				<dp n="d99"/>
     * @exception nsi.wholesale.toolkit.javaapi.NsIWholesaleException when
unable to compete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CIASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_MODIFY_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_COMPANY_NAME

     * @see NSIWholesaleAPI#ATTR_COMPANY_TYPE

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_ADDRESSS

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESSS

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_CITY

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_STATE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_PHONE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     *    

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *  

    */

    public WSPResponse modifyBusinessAccount(

         String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleException  

          return modifyBusinessAccount(

                pCustomerACCountId,

                pCustomerPassword,

                new Properties(),

                0);

    }

    /**

     *This method is used to modify one or more attributes
				
				<dp n="d100"/>
     * of an existing business (organization) customer account.

     * <BR><PRE>

          Optional Attribute Key(s);

                ATTR_CUSTOMER_PASSWORD

                ATTR COMPANY_NAME

                ATTR_COMPANY_TYPE

                ATTR_ADDRESS1

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_CITY
                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

                ATTR_PHONE

                ATTR_FAX

                ATTR_EMAIL

                ATTR_AUTH_QUESTION

                ATTR_AUTH_ANSWER

                ATTR_LEGAL_CONTACT_FIRST_NAME

                ATTR_LEGAL_CONTACT_LAST_NAME

                ATTR_LEGAL_CONTACT_ADDRESS1

                ATTR_LEGAL_CONTACT_ADDRESS2

                ATTR_LEGAL_CONTACT_ADDRESS3

                ATTR_LEGAL_CONTACT_ADDRESS4

                ATTR_LEGAL_CONTACT_ADDRESS5

                ATTR_LEGAL_CONTACT_CITY

                ATTR_LEGAL_CONTACT_STATE

                ATTR_LEGAL_CONTACT_POSTAL_CODE

                ATTR_LEGAL_CONTACT_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_PHONE

                ATTR_LEGAL_CONTACT_FAX

                ATTR_LEGAL_CONTACT_EMAIL

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_MODIFY_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#ATTR_COMPANY_NAME

     * @see NSIWholesaleAPI#ATTR_COMPANY_TYPE

     * @see NSIWholesaleAPI#ATTR_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_ADDRESS4
				
				<dp n="d101"/>
     * @see NSIWholesaleAPI#ATTR_ADDRESS5

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_EMAIL

     * @see NSIWholesaleAPI#ATTR_AUTH_QUESTION

     * @see NSIWholesaleAPI#ATTR_AUTH_ANSWER

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS1

     * @see NSIWholesaleAPI#ATTR_LEGAI_CONTACT_ADDRESS2

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS3

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_ADDRESS4

     * @see NSIWholesaleAPI#ATTR_LEGAI_CONTACT_ADRESS5

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_CITY

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_STATE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTCT_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_PHONE

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     * @see NSIWholesaleAPI#ATTR_LEGAL_CONTACT_FAX

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *    

    */

    public WSPResponse modifyBusinessAccount(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionaAttributes)

    throws NSIWholesaleException  {

          return modifvBusinessAccount(

                pCustomerAccountId,

                pCustomerPassword,

                optionalAttributes,

                0);

     }
     protected WSPResponse modifyBusinessAccount(

           String pCustomerAccountId,

           String pCustomerPassword,

           Properties optionalAttributes,

           int count)

     throws NSIWholesaleException  {

          String methodName=className+″.modifyBusinessAccount(String,
String,Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

          }
          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {
				
				<dp n="d102"/>
                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                returnCode=conn.makeRequest(COMBO_MODIFY_BUSINESS_ACCOUNT,
allParmsAndAttrs);
                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                } 

                catch (ResourceException re)  {    

                      System.err.println(methodName + ″Caught
ResourceException″+re);    

                }

                finally {

                      return modifyBusinessAccount(

                            pCustomerAccountId, 

                            pCustomerPassword,

                            optionalAttributes,

                            count+1);  

              }

        }

    }

    /**

     * This method is used to modify one or more attributes

     * of an existing technical contact.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pTechContactId the parameter value

     * @pdram pTechContactPassword the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_MODIFY_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     *            

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ORGANIZATION
     * @see NSIWholesaleAPI#ATTR_ADDRESS1    

     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE    
				
				<dp n="d103"/>
     * @see NSIWholesaleAPI#ATTR_POSTAL_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE
     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_EMAIL

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */
    public WSPResponse modifyTechnicalContact(

          String pTechContactId,

          String pTechContactPassword)

    throws NSIWholesaleException  {

          return modifyTechnicalContact(

                pTechContactId

                pTechContactPassword,

                new Properties(),

                0);

    }

    /**    

     * This method is used to modify one or more attributes

     * of an existing technical contact

     * <BR><PRE>

          Optional Attribute Key(s):

                ATTR_FIRST_NAME

                ATTR_LAST_NAME

                ATTR_ORGANIZATION

                ATTR_ADDRESS1
                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

                ATTR EMAIL

                ATTR_FAX

                ATTR_PHONE

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @Param pTechContactId the Parameter value

     * @param pTechContactPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_MODIFY_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     *

     * @see NSIWholesaleAPI#ATTR_FIRST_NAME

     * @see NSIWholesaleAPI#ATTR_LAST_NAME

     * @see NSIWholesaleAPI#ATTR_ORGANIZATION

     * @see NSIWholesaleAPI#ATTR_ADDRESS1
				
				<dp n="d104"/>
     * @see NSIWholesaleAPI#ATTR_CITY

     * @see NSIWholesaleAPI#ATTR_STATE

     * @see NSIWholesaleAPI#ATTR_POSTAI_CODE

     * @see NSIWholesaleAPI#ATTR_COUNTRY_CODE

     * @see NSIWholesaleAPI#ATTR_PHONE

     * @see NSIWholesaleAPI#ATTR_FAX

     * @see NSIWholesaleAPI#ATTR_EMAIL

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#INVALID_VALUE

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse modifyTechnicalContact(

          String pTechContactId

          String pTechContactPassword,

          Properties optionalAttributes)

    throws NSIwholesaleException  {

          return modifyTechnicalContact(

                pTechContactId,

                pTechContactPassword,
                optionalAttributes,

                0);

    }

    protected WSPResponse modifyTechnicalContact(

          String pTechContactId,

          String pTechContactPassword,

          Properties optionaAttributes,

          int count)    

    throws NSIWholesaeException  {

          String methodName=className +″.modifyTechnicalContact(String,
String,Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {   

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();    

                //put optional attributes    

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_ID,pTechContactId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_PASSWORD,
pTechContactPassword);

                returnCode=
conn.makeRequest(COMBO_MODIFY_TECHNICAL_CONTACT,allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

               try {

                      pool.release(conn);
				
				<dp n="d105"/>
                  }

                  catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                 }

                 finally {

                        return modifyTechnicalContact 
                              pTechContactId,

                              pTechContactPassword,

                              optionalAttributes,

                              count+1);

                   }

          }

    } 

    /**

     * This method is used to modify/reset a customer′s account password.

     * <BR><PRE>

          Expected Major Result code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

    * @param aCustomerPassword the attribute value

     * @return the Wholesale Server Protocol  Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_PASSWORD

     * @see NSIWholesaleAPI#COMBO_MODIFY_PASSWORD

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */
    public WSPResponse modifyPassword(

          String pCustomerAccountId,

          String aCustomerPassword)

    throws NSIWholesaleException  {

          return modifyPassword(

                pCustomerAccountId,

                aCustomerPassword

                new Properties(),

                0);

    }

    /**

     * This method is used to modify/reseta customer′s account password

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

    * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param aCustomerPasswordthe attribute value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response
				
				<dp n="d106"/>
     * @exception nsi.wholesale.toolkit.javaapi.NSIwholesaleException when
unable to complete command    

     * @see NSIWholesaleAPI#COMMAND_MODIFY

     * @see NSIWholesaleAPI#CLASS_PASSWORD

     * @see NSIWholesaleAPI#COMBO_MODIFY_PASSWORD

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#ATTR_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     *

    */

    public WSPResponse modifyPassword(

          String pCustomerAccountId,

          String aCustomerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return modifyPassword(

                pCustomerACcountId 

                aCustomerPassword

                optionalAttributes,

                0);
    }

    protected WSPResponse modifyPassword (

          String pCustomerAccountId,

          String aCustomerPassword,

          Properties optionalAttributes,

          int count)    

    throws NSIWholesaleException {

          String methodName=className+″.modifyPassword(String,String,
Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName +″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(ATTR_CUSTOMER_PASSWORD,
aCustomerPassword);

                returnCode=conn.makeRequest(COMBO_MODIFY_PASSWORD,
allParmsAdAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {    

                      pool.release(conn);
				
				<dp n="d107"/>
                }    

                catch (ResourceException re)  {

                      System.err.println(methodName+″Caught
ResourceException″+ re);

                }

                finally  {

                      return modifyPassword(

                            pCustomerAccountId,

                            aCustomerPassword,

                            optionalAttributes,

                            count+1);

               }

          }

    }

    /**

     * This method is used to generate a list of available

     * domain names based on a specified list of keywords.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                DomainName0:

                DomainName1:

                DomainName2:

                DomainName3:

                ...etc...

     * </PRE><BR>

     * @param pKeyWords the parameter value
     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_GENERATE

     * @see NSIWholesaleAPI#CLASS_DOMAIN_NAME

     * @see NSIWholesaleAPI#COMBO_GENERATE_DOMAIN_NAME

     * @see NSIWholesaleAPI#PARM_KEY_WORDS

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNEU

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse generateDomainName(

          String pKeyWords)

    throws NSIWholesaleException  {

          return generateDomainName (

                pKeyWords,

                new Properties(),

                0);

      }

    /**

     * This method is used to generate a list of available

     * domain names based on a specified list of keywords.

     * <BR><PRE>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:
				
				<dp n="d108"/>
                DomainName0:

                DomainName1:

                DomainName2:

                DomainName3:

                ...etc...

     * </PRE><BR>

     * @param pKeyWords the parameter value
 
     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException whenunable to complete command

     * @see NSIWholesaleAPI#COMMAND_GENERATE

     * @see NSIWholesaleAPI#CLASS_DOMAIN_NAME

     * @see NSIWholesaleAPI#COMBO_GENERATE_DOMAIN_NAME

     * @see NSIWholesaleAPI#PARM_KEY_WORDS

     *

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse generateDomainName(

          String pKeyWords,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return generateDomainName(

                pKeyWords,

                optionalAttributes,

                0};

    }
    protected WSPResponse generateDomainName(

          String pKeyWords,

          Properties optionalAttributes,
          int count)

    throws NSIWholesaleException  {

          String methodName=className+″.generateDomaiName(String,
Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName+ ″Unable to
complete command″) ;

          }
          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                properties allParmsAndAttrs=new Properties();
                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_KEY_WORDS,pKeyords);

                returnCode=conn.makeRequest(COMBO_GENERATE_DOMAIN_NAME 
allParmsAndAttrs};

                pool.checkIn(conn);

                return returnCode;
				
				<dp n="d109"/>
          } catch (Exception e)  {

                try {

                        pool.release(conn);

                 }

                 catch (ResourceException re)  {

                       System.err.println(methodName+″Caught
ResourceExteption″+ re);  

                 }

                 finally {

                       return generateDomainName(

                             pKeyWords,

                             optionalAttributes,

                             count+1);

                   }

             }

    }    

    /**

     * Retrieves a list of all domain products owned by customer.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                DomainName1:

                DomainName2:

                DomainName3:

                ...etc...

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unableto complete command

     * @see NSIWbolesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CIASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupDomain(

          String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleException  {

          return lookupDomain(

                pCustomerAccountId,

                pustomerPassWord,

                new Properties(),

                0);

    }

   /**
				
				<dp n="d110"/>
     * Retrieves a list of all domain products owned by customer.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                DomainNamel:

                DomainName2: 
                DomainName3:

                ...etc...

     * </PRE>BR>

     * @param pCustomerAccountId the parameter value
     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to coplete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSlWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException{

          return lookupDomain (

                pCustomerAccountId,

                PCustomerPassword

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupDomain(

          String pustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {    

          String methodName=className + ″.lookupDomain(String,String,
Properties,int)″;    

          if(count>retry)  {

               throw new NSIWholesaleException(methodiName+″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndiAttrs=new Properties();
				
				<dp n="d111"/>
                //put optional attributes

                Propertiescat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);  

                returnCode=Conn.makeRequest(COMBO_LOOKUP_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                       pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+re);

               }

               finally {

                     return lookupDomain(

                           pCustomerAccountId,

                           pCustomerPassword,

                           optionalAttributes,

                           count+1);

               }

        }

    }

    /**

     * Retrieves detail information about a specific domain product

     * registered to a customer. This  form of the lookup domain

     * command will also retrieve the status of the domain while

     * it is being processed or after it has failed.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_DOMAIN_NAME

                ATTR_TECH_CONTACT_ID
                ATTR_HOST_NAME1

                ATTR_HOST_ADDR1

                ATTR_HOST_ID1

                ATTR_HOST_NAME2

                ATTR_HOST_ADDR2

                ATTR_HOST_ID2

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPasswordthe parameter value

     * @param pDomaihName the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.Wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP
				
				<dp n="d112"/>
     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEIN_RETURNED

     *

    */

    public WSPResponse lookupDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName)

    throws NSIWholesaleException  {

          return lookupDomain(

                pCustomerAccountId,

                pCustomerPassword,

                pDoma inName,

                new Properties(),

                0);

    }

    /**

     * Retrieves detail information about a specific domain product

     * regiitered to a customer. This form of the lookup domain

     * command will also retrieve the status of the domain while

     * it is being processed or after it has failed.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

         Expected Result Property Key(s) Returned:

                 ATTR_DOMAIN_NAME        

                 ATTR_TECH_CONTACT_ID

                 ATTR_HOST_NAME1

                 ATTR_HOST_ADDR1

                 ATTR_HOST_ID1

                 ATTR_HOST_NAME2

                 ATTR_HOST_ADDR2

                 ATTR_HOST_ID2

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter vaue

     * @param pDomainName the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     *
				
				<dp n="d113"/>
     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *@see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *

    */

    public WSPResponse lookupDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return lookupDomain(

                pCustomerAccountId,

                pCustomerPassword,

                pDomainName,

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupDomain(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className+″.lookupDomain(String,String,
String,Properties,int)″;

          if(count>retry)  {

               throw new NSIWholesaleException(methodName+″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                 conn=(NSIWholesaleConnection)pool.checkOut();

                 Properties allParmsAndAttrs=new Properties();

                 //put optional attributes

                 propertiesCat(allParmsAndAttrs,optionalAttributes);

                 allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUN_ID,
pCustomerAccountId);

                 allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                 allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                 returnCode=conn.makeRequest(COMBO_LOOKUP_DOMAIN,
allParmsAndAttrs);

                 pool.checkIn(conn);

                 return returnCode;

           } catch (Exception e)  {

                 try {

                       pool.release(conn);

                 }
				
				<dp n="d114"/>
               catch (ResourceException re)  {

                     System.err.println(methodName+ ″Caught
ResourceException″+re);

               }

               finally {

                     return lookupDomain(

                           pCustomerAccountId,

                           pCustomerPassword,

                           pDomainName,

                           optionalAttributes,

                           count+1);

               }

        }

    }

    /**

     * Retrieves a list of the customer′s domain products

     * for which the technical contact id is the technical contact.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                DomainName1:

                DomainName2:

                DomainName3:

                ...etc...

     * </PRE><BR>    

     * @param pCustomerAccountId the parameter value
     * @param pTechContactId the parameter value

     * @param pTechContactPassword the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see    
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *
    */

    public WSPResponse lookupDomainByTechContact(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword)

    throws NSIWholesaleException {

          return lookupDomainByTechContact(

                pCustomerAccountId,

                pTechContact Id,

                pTechContactPassword,

                new Properties(),
				
				<dp n="d115"/>
                  0);

    }

    /**

     * Retrieves a list of the customer′s domain products

     * for which the technical contact id is the technical contact.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key (s) Returned:

                DomainName1:

                DomainName2:

                DomainName3:

                ...etc...

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pTechContactId the parameter value

     * @param pTechContactPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID    

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     *    

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupDomainByTechContact(

          String pCustomerAccountId,

          String PTechContactId,

          String pTechContactPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException  {

          return lookupDomainByTechContact(

                pCustomerAccountId,

                pTechContactId ,

                pTechContactPassword,

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupDomainByTechContact (

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className+
″.lookupDomainByTechContact(String,String,String,Properties,int)″;

           if (count>retry)  {
				
				<dp n="d116"/>
                 throw new NSIWholesaleException (methodName+ ″Unable to
complete command″);

          }    

          NSIWholesaleConnection conn=null ;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_ID,pTechContactId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_PASSWORD,
pTechContactPassword);

                returnCode=conn.makeRequest(COMBO_LOOUP_DOMAIN,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                }

               catch (ResourceException re)  {

                     System.err.println(methodName+ ″Caught
ResourceException″+ re);

               }

               finally  {

                     return lookupDomainByTechContact(

                            pCustomerAccountId,

                            pTechContactId,

                            pTechContactPassword,

                            optionalAttributes,

                            count+1);

               }

        }

    }

    /**

     * Retrieves details of a specific domain product owned by customer,

     * for which the technical contact id is the technical contact for

     * the specific product.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_DOKAIN_NAME

                ATTR_TECH_CONTACT_ID

                ATTR_HOST_NAME1

                ATTR_HOST_ADDR1

                ATTR_HOST_ID1

                ATTR_HOST_NAME2
				
				<dp n="d117"/>
                  ATTR_HOST_ADDR2

                  ATTR_HOST_ID2

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pTechContactId the parameter value

     * @param pTechContactpassword the parameter value

     * @param pDomainName the parameter value

     * @return the Wholesale Server protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DOMAIN
     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *
    */

    public WSPResponse lookupDomainByTechContact(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName)

    throws NSIWholesaleException  {

          return lookupDomainByTechContact(

                pCustomerAccountId,

                pTechContactId,

                pTechContactPassword 

                pDomainName,

                new Properties(),

                0);

    }

    /**

     * Retrieves details of a specific domain product owned by customer,

     * for which the technical contact id is the technical contact for

     * the specific product

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_DOMAIN_NAME

                ATTR_TECH_CONTACT_ID

                ATTR_HOST_NAME1    

                ATTR_HOST_ADDR1

                ATTR_HOST_ID1

                ATTR_HOST_NAME2

                ATTR_HOST_ADDR2

                ATTR_HOST_ID2

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pTechContactId the parameter value
				
				<dp n="d118"/>
     * @param pTechContactPassword the parameter value

     * @param pDomainName the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DOMAIN

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DOMAIN

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

    * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *@see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *

    */

    public WSPResponse lookupDomainByTechContact(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupDomainByTechContact(

                pCustomerAccountId,

                pTechContactId,

                pTechContactPassword,

                pDomainName,

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupDomainByTechContact(

          String pCustomerAccountId,

          String pTechContactId,

          String pTechContactPassword,

          String pDomainName,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className +
″.lookupDomainByTechContact(StringX4,Properties,int)″;

          if (count>retry) {

                throw new NSIWholesaleException(methodName+ ″Unable to
complete command″);

          }
          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try{

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes
				
				<dp n="d119"/>
                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allparmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_ID,pTechContactId);

                allParmsAndAttrs.put(PARM_TECH_CONTACT_PASSWORD,
pTechContactPassword);    

                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);
                returnCode=conn.makeRequest(COMBO_LOOKUP_DOMAIN,
allparmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

         } catch (Exception e)  {

                try {

                     pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName+ ″Caught
ResourceException″+ re);

               }

               finally {

                     return lookupDomainByTechContact(

                           pCustomerAccountId,

                           pTechContactId,

                           pTechContactPassword,

                           pDomainName,

                           optionalAttributes,

                           count+1);

              }

       }

    }

    /**

     * Retrieves a list of all domain names associated with

     * DNS Hosting products owned by customer.
     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

          DomainName1:

          DomainName2:

          DomainName3:

          ...etc...

     * </PRE><BR>
     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value
     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DNS_HOSTING

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DNS_HOSTING

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *
				
				<dp n="d120"/>
     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleException {

          return lookupDnsHosting(

                pCustomerAccountId,

                pCustomerPassword,

               new Properties(),

                0);

    }

    /**

     * Retrieves a list of all domain names associated with

     * DNS Hosting products owned by customer.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

          DomainName1:

          DomainName2:

          DomainName3:

          ...etc...

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complste command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DNS_HOSTING

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DNS_HOSTING

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *
    */

    public WSPResponse lookupDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupDnsHosting(

                pCustomerAccountId,

                pCustomerPassword,

                optionalAttributes,

                0);

    }
				
				<dp n="d121"/>
    protected WSPResponse lookupDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className+″.lookupDnsHosting(String,String,
Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);    

          }

          NSIWholesaleConnection conn=null;
          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);    

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD
pCustomerPassword);

                returnCode=conn.makeRequest(COMBO_LOOKUP_DNS_HOSTING,
allParmsAndAttrs);
                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e) {

                try {

                      pool.release(conn);

                }

                catch (ResourceException re) {

                     System.err.println(methodName+″Caught
ResourceException″+ re);

                }

                finally {

                      return lookupDnsHosting(

                            pCustomerAccountId,

                            pCustomerPassword,

                            optionalAttributes,

                            count+1);

              }

        }

    }

    /**

     * Retrieves details of a specific

     * DNS Hosting product owned by customer.
     * Used to verify a domain name is part of a DNS Hosting Product

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED
				
				<dp n="d122"/>
           Expected Result Property Key(s) Returned:

                 ATTR_DOMAIN_NAME

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param pDomainName the parameter value

     * @return the Wholesale Server  Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DNS_HOSTING

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DNS_HOSTING

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND
     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *

    */

    public WSPResponse lookupDnsHosting(

          String pCustomerAccountId,

          String pstomerPassword,

          String pDomainName)    

    throws NSIWholesaleException {

          return lookupDnsHosting(

                pCustomerAccountId,

                pCustomerPassword,

                pDomainName,

                new Properties (),

                0);

    }

    /**

     * Retrieves details of a specific

     * DNS Hosting product owned by customer.

     * Used to verify a domain name is part of a DNS Hosting Product

     * <BR><PRE>    

          Epected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_DOMAIN_NAME

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param pDomainName the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_DNS_HOSTING

     * @see NSIWholesaleAPI#COMBO_LOOKUP_DNS_HOSTING

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD
				
				<dp n="d123"/>
     * @see NSIWholesaleAPI#PARM_DOMAIN_NAME

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see WSPResponse#OBJECT_NOT_FOUND

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *  @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *

    */

    public WSPResponse lookupDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          Properties optionalAttributes)

    throws NSIWholesaleException{

          return lookupDnsHosting(

                pCustomerAccountId,

                pCustomerPassword,

                pDomainName,

                optionalAttributes,

                0);

    }  

    protected WSPResponse lookupDnsHosting(

          String pCustomerAccountId,

          String pCustomerPassword,

          String pDomainName,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className+″.lookupDnsHosting(String,String,
String,Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methoName+″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                allParmsAndAttrs.put(PARM_DOMAIN_NAME,pDomainName);

                returnCode=conn.makeRequest(COMBO_LOOKUP_DNS_HOSTING,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e) {

                try {
				
				<dp n="d124"/>
                     pool.release(conn);

               }

               catch (ResourceException re)  {

                     System.err.println(methodName+″Caught
ResourceException″+re);    

               }

               finally {

                     return lookupDnsHosting(

                           pCustomerAccountId,

                           pCustomerPassword,

                           pDomainName,

                           optionalAttributes,

                          count+1);

              }

       }

    }

    /**

     * Retrieves a list of all individual accounts linked to a wholesaler.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                CustomerAccountId1:

                CustomerAccountId2:

                CustomerAccountId3:

                ...etc...

     * </PRE><BR>

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_INDIVIDUAL_ACCOUNT

     *  

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see    
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupIndividualAccount()

    throws NSIWholesaleException  {

          return lookupIndividualAccount(

                new Properties(),

                0);

    }

    /**

     * Retrieves a list of all individual accounts linked to a wholesaler.

     * <BR><PRE>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                CustomerAccountId1:

                CustomerAccountId2:

                CustomerAccountId3:

                ...etc...
				
				<dp n="d125"/>
     * </PRE><BR>

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CIASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_INDIVIDUAL_ACCOUNT

     *

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see    
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupIndividualAccount(

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupIndividualAccount(

                optionalAttributes,

               0);

    }

    protected WSPResponse lookupIndividualAccount(

          Properties optionalAttributes,
          int count)

    throws NSIWholesaleException {

          String methodName=className +
″.lookupIndividualAccount(Properties,int)″;

          if (count>retry)  {

                throw new NSIWholesaleException(methodName+ ″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try{

                conn=(NSIWholesaleConnection)pool.checkOut();
                Prperties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAnAttrs,optionalAttributes);

                returnCode=
conn.makeRequest(COMBO_LOOKUP_INDIVIDUAL_ACCOUNT,allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  { 

                try {

                       pool.release(conn);

                }    

                catch (ResourceException re)  {

                      System.err.println(methodName + ″Caught
ResourceException″+ re);

                }

                finally {

                      return lookupIndividualAccount(

                            optionalAttributes,

                            count+1);
				
				<dp n="d126"/>
                    }

          }

    }

    /**

     * Retrieves details of a specific individual customer account.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_FIRST_NAME

                ATTR_LAST_NAME

                ATTR_PHONE

                ATTR_AUTH_QUESTION

                ATTR_AUTH_ANSWER

                ATTR_FAX

                ATTR_EMAIL

                ATTR_ADDRESS1

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CIASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @See
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED
    *

    */
   public WSPResponse lookupIndividualAccount(

          String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleException {

          return lookupIndividualAccount(

                pCustomerAccountId,

                pCustomerPassword,

                new Properties (),

                0);

    }

    /**

     * Retrieves details of a specific individual customer account.

     * <BR><PRE>
				
				<dp n="d127"/>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_FIRST_NAME

                ATTR_LAST_NAME

                ATTR_PHONE

                ATTR_AUTH_QUESTION

                ATTR_AUTH_ANSWER

                ATTR_FAX

                ATTR_EMAIL

                ATTR_ADDRESS1

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE
                ATTR_COUNTRY_CODE

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_INDIVIDUAL_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupIndividualAccount(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupIndividualAccount(

                pCustomerAccountId,

                pCustomerPassword,

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupIndividualAccount(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {

          String methodName=className+″.lookupIndividualAccount(String,
String,Properties,int)″;

          if (count>retry)  {
				
				<dp n="d128"/>
                 throw new NSIWholesaleException(methodName+″Unable to
complete command″);

          }
          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allPamsAndAttrs,optionalAttributes)

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                returnCode=
conn.makeRequest(COMBO_LOOKUP_INDIVIDUAL_ACCOUNT,allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e) {

                try {

                       pool.release(conn);

                }    

                catch (ResourceException re)  {

                      System.err.println(methodName+″Caught
ResourceException″+ re);

                }

                finally {

                      return lookupIndividualAccount(

                            pCustomerAccountId,

                            pCustomerPassword,

                            optionaLAttributes,

                            count+1);

                }

         }

    }

    /**

     *Retrieves a list of all business customer accounts linked to
wholesaler.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned: 

                CustomerAccountId1:

                CustomerAccountId2:

                CustomerAccountId3:

                ...etc...

     * </PRE><BR>

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command
				
				<dp n="d129"/>
     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CIASS_BUSINESS_ACCOUNT

     * @see NSIWholesaIeAPI#COMBO_LOOKUP_BUSINESS_ACCOUNT

     *

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see    
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupBusinessAccount()

 throws NSIWholesaleException{

         return lookupBusinessAccount(

               new Properties(),

               0);

    }

    /**

     * Retrieves a list of all business customer accounts linked to
wholesaler.

     * <BR><PRE>

          Expected Major Result code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                CustomerAccountId1:    

                CustomerAccountId2:

                CustomerAccountId3:

                ...etc...

     * </PRE><BR>

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaIeException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_BUSINESS_ACCOUNT

     *

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupBusinessAccount(

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupBusinessAccount(

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupBusinessAccount(

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException{

          String methodName=className+
″.lookupBusinessAccount(Properties,int)″;

          if (count>retry) (    

                throw new NSIWholesaleException(methodName+″Unable to
complete command″);
          }
				
				<dp n="d130"/>
         NSIWholesaleConnection conn=null;

         WSPResponse returnCode;

         try{

               conn=(NSIWholesaleConnection)pool.checkOut();

               Properties allParmsAndAttrs=new Properties();

               //put optional attributes

               propertiesCat(allParmsAndAttrs,optionlalAttributes);

               returnCode=conn.makeRequest(COMBO_LOOKUP_BUSINESS_ACCOUNT,
allParmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

         } catch (Exception e)  {

               try {

                     pool.release(conn);

               }

               catch (ResourceException re)  {

                     System.err.println(methodName+″Caught
ResourceException″+ re);

              }

              finally {

                    return lookupBusinessAccount(

                          optionalAttributes,

                          count+1);

              }

     }    

    }

    /**

     * Retrieves qetails or a specitic business customer account.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Retured:

                ATTR_COMPANY_NAME

                ATTR_COMPANY_TYPE

                ATTR_EMAIL

                ATTR_PHONE

                ATTR_FAX

                ATTR_ADDRESS1

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_FIRST_NAME

                ATTR_LEGAL_CONTACT_LAST_NAME

                ATTR_LEGAL_CONTACT_PHONE

                ATTR_LEGAL_CONTACT_FAX

                ATTR_LEGAL_CONTACT_EMAIL

                ATTR_LEGAL_CONTACT_CITY
				
				<dp n="d131"/>
                ATTR_LEGAL_CONTACT_STATE

                ATTR_LEGAL_CONTACT_POSTAL_CODE

                ATTR_LEGAL_CONTACT_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_ADDRESS1

                ATTR_LEGAL_CONTACT_ADDRESS2

                ATTR_LEGAL_CONTACT_ADDRESS3

                ATTR_LEGAL_CONTACT_ADDRESS4

                ATTR_LEGAL_CONTACT_ADDRESS5

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @return the Wholesale Server Protocol Server response

    * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_BUSINESS_ACCOUNT

     * @see NSIWholesalaAPI#PARM_CUSTOMER_ACCOUNT_ID

     * @see NSIWholesaIeAPI#PARM_CUSTOMER_PASSWORD

     *

     * @see WSPResponse#GENERAL_ACCESS_DENIED     

     * @see
WSPResponse#COMMAND_EXECUTlON_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupBusinessAccount(

          String pCustomerAccountId,

          String pCustomerPassword)

    throws NSIWholesaleException {

         return lookupBusinessAccount(

                pCustomerAccourtId,

                pCustomerPassword,

                new Properties(),

                0);

    }

    /**

     * Retrieves details of a specific business customer account.

     * <BR><PRE>
          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_COMPANY_NAME

                ATTR_COMPANY_TYPE

                ATTR_EMAIL

                ATTR_PHONE

                ATTR_FAX

                ATTR_ADDRESS1

                ATTR_ADDRESS2

                ATTR_ADDRESS3

                ATTR_ADDRESS4

                ATTR_ADDRESS5

                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_FIRST_NAME

                ATTR_LEGAL_CONTACT_LAST_NAME
				
				<dp n="d132"/>
                ATTR_LEGAL_CONTACT_PHONE

                ATTR_LEGAL_CONTACT_FAX

                ATTR_LEGAL_CONTACT_EMAIL

                ATTR_LEGAL_CONTACT_CITY

                ATTR_LEGAL_CONTACT_STATE

                ATTR_LEGAL_CONTACT_POSTAL_CODE

                ATTR_LEGAL_CONTACT_COUNTRY_CODE

                ATTR_LEGAL_CONTACT_ADDRESS1

                ATTR_LEGAL_CONTACT_ADDRESS2

                ATTR_LEGAL_CONTACT_ADDRESS3

                ATTR_LEGAL_CONTACT_ADDRESS4

                ATTR_LEGAL_CONTACT_ADDRESS5

     * </PRE><BR>

     * @param pCustomerAccountId the parameter value

     * @param pCustomerPassword the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_BUSINESS_ACCOUNT

     * @see NSIWholesaleAPI#PARM_CUSTOMER_ACCOUT_ID

     * @see NSIWholesaleAPI#PARM_CUSTOMER_PASSWORD

     *

     *  @see WSPResponse#GENERAL_ACCESS_DENIED

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *
    */

    public WSPResponse lookupBusinessAccount(

          String pCustomerAccountId,

          String pCustomerPassword,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupBusinessAccount(

                pCustomerAccountId,

                pCustomerPassword,

                optionalAttributes,

                0);

    }    

    protected WSPResponse lookupBusinessAccount(

          String pCustomerAccountId,

          String pCustomerPassword 

          properties optionalAttributes,

          int count)

    throws NSIWholesaleException  {

          String methodName=className+″.lookupBusinessAccount(String,
String,Properties,int)″;    

          if (count>retry) {
                throw new NSIWholesaleException(methoName+″Unable to
complete command″);    

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {
				
				<dp n="d133"/>
                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties();

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAttrs.put(PARM_CUSTOMER_ACCOUNT_ID,
pCustomerAccountId);

                allParmsAndAttrs.put(PARM_CUSTOMER_PASSWORD,
pCustomerPassword);

                returnCode=conn.makeRequest(COMBO_LOOKUP_BUSINESS_ACCOUNT,
allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {    

                try {

                      pool.release(conn);

                }

                catch (ResourceException re) {

                      System.err.println(methodName+″Caught
ResourceException″+re);

                }

                finally {

                      return lookupBusinessAccount(

                            pCustomerAccountId,

                            pCustomerPassword,

                            optionalAttributes,

                            count+1);

                }

          }

    }

    /**

     * Retrieves details of a specific technical contact.

     * <BR><PRE>    

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s)Returned:

                ATTR_ORGANIZATION

                ATTR_PHONE

                ATTR_FAX

                ATTR_EMAIL

                ATTR_ADDRESS1

                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

     * </PRE><BR>

     * @param pTechContactId the parameter value
     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to  complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP
     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_TECHNICAL_CONTACT
				
				<dp n="d134"/>
     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     *

     * @see
WSPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupTechnicalContact(

          String pTechContactId)

    throws NSIWholesaleException {

          return lookupTechnicalContact(

                pTechContactId,  

                new Properties(),

                0);

    }

    /**

     * Retrieves details of a specific technical contact.

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

          Expected Result Property Key(s) Returned:

                ATTR_ORGANIZATION

                ATTR_PHONE

                ATTR_FAX
                ATTR_EMAIL

                ATTR_ADDRESS1

                ATTR_CITY

                ATTR_STATE

                ATTR_POSTAL_CODE

                ATTR_COUNTRY_CODE

     * </PRE><BR>

     * @param pTechContactId the parameter value

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see NSIWholesaleAPI#COMMAND_LOOKUP

     * @see NSIWholesaleAPI#CLASS_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#COMBO_LOOKUP_TECHNICAL_CONTACT

     * @see NSIWholesaleAPI#PARM_TECH_CONTACT_ID

     *

     * @see
WsPResponse#COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED

     *

    */

    public WSPResponse lookupTechnicalContact(

          String pTechContactId,

          Properties optionalAttributes)

    throws NSIWholesaleException {

          return lookupTechnicalContact (   

                pTechContactId,

                optionalAttributes,

                0);

    }

    protected WSPResponse lookupTechnicalContact(

          String pTechContactId,

          Properties optionalAttributes,

          int count)
				
				<dp n="d135"/>
    throws NSIWholesaleException {

          String methodName=className+″.lookupTechnicalContact(String,
Properties,int)  ″;

          if (count>retry) {

                throw new NSIWholesaleException(methodName+″Unable to
complete command″);

          }

          NSIWholesaleConnection conn=null;

          WSPResponse returnCode;

          try {

                conn=(NSIWholesaleConnection)pool.checkOut();

                Properties allParmsAndAttrs=new Properties():

                //put optional attributes

                propertiesCat(allParmsAndAttrs,optionalAttributes);

                allParmsAndAtrs.put(PARM_TECH_CONTACT_ID,pTechContactId);

                returnCode=    
conn.makeRequest(COMBO_LOOKUP_TECHNICAL_CONTACT,allParmsAndAttrs);

                pool.checkIn(conn);

                return returnCode;

          } catch (Exception e)  {

                try {

                      pool.release(conn);

                }

                catch (ResourceException re)  {

                      System.err.println(methodName+″Caught
ResourceException″+ re);

                }    

                finally {

                      return lookupTechnicalContact(

                            pTechContactId,

                            optionalAttributes,

                            count+1);

               }

         }
    }

    /**

     * This method returns basic information about the supported

     * protocol commands and classes.

     * <BR><PRE>

         Expected Major Result code:
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

         Expected Text Returned:

               ...The Help Text...

         Expected Result Property Key(s) Returned:

               text1:

               text2:

               text3:

               ...etc...

     * </PRE><BR>

     * @return the Wholesale Server Protocol  Server response
				
				<dp n="d136"/>
     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

     * @see WSPResponse#getProperties

     * @see NSIWholesaleAPI#COMMAND_HELP

     *
     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *

    */

    public WSPResponse help()

    throws NSIWholesaleException {

          return help 

                new Properties(),

                0);

    }

    /**

     * This method returns basic information about the supported

     * protocol commands and classes

     * <BR><PRE>

          Expected Major Result Code:
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

          Expected Text Returned:

                ...The Help Text...

          Expected Result Property Key(s) Returned:

                text1:

                text2:

                text3:

                ...etc...

     * </PRE><BR>

     * @param optionalAttributes a property list of optional attributes

     * @return the Wholesale Server Protocol Server response

     * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command
     * @see WSPResponse#getProperties

     * @see NSIWholesaleAPI#COMMAND_HELP
     *

     * @see WSPResponse#COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     *
    */

    public WSPResponse help(

          Properties optionalAttributes)

    throws NSIWholesaleException  {

         return help (

               optionalAttributes,

               0);    

    }

    protected WSPResponse help(

          Properties optionalAttributes,

          int count)

    throws NSIWholesaleException {    

          String methodName=className + ″.help(Properties,int) ″;

          if (count>retry) {

                throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

         }

        NSIWholesaleConnection conn=null;

        WSPResponse returnCode;
				
				<dp n="d137"/>
           try{

               conn=(NSIWholesaleConnection)pool.checkOut();

               Properties allParmsAndAttrs=new Properties();

               //put optional attributes

               propertiesCat(allParmsAndAttrs,optionalAttributes);

               returnCode=conn.makeRequest(COMMAND_HELP,
allParmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

               }catch (Exception e) {

                    try {

                           pool.release(conn);

                    }    

                    catch (ResourceException re)  {

                          System.err.println(methodName+″Caught
ResourceException″+ re);

                    }

                    finally {

                          return help {

                                optionalAttributes,

                                count+l);

                    }

           }

   }

   /**

    * This method terminates the wholesaler′s  access to session commands.

    * <BR><PRE>

         Expected Major Result Code:COMMAND_SUCCEEDED_CLOSING_CONNECTION

    * </PRE><BR>

    * @param optionalAttributes a property list of optional attributes

    * @return the Wholesale Server Protocol Server response

    * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

    * @see NSIWholesaleAPI#COMMAND_QUIT

    *

    * @see WSPResponse#COMMAND_SUCCEEDED_CLOSING_CONNECTION

    *

   */

   public WSPResponse quit()

   throws NSIWholesaleException {

         return quit {

               new Properties(),

               0); 

   }

   /**

    * This method terminates the wholesaler's access to session commands.

    * <BR><PRE>

         Expected Major Result Code:COMMAND_SUCCEEDED_CLOSING_CONNECTION

    * </PRE><BR>

    * @param optionalAttributes a property list of optional attributes

    * @return the Wholesale Server protocol Server response

    * @exception nsi.wholesale.toolkit.javaapi.NSIWholesaleException when
unable to complete command

    * @see NSIWholesaleAPI#COMMAND_QUIT
				
				<dp n="d138"/>
    *

    * @see WSPResponse#COMMAND_SUCCEEDED_CLOSING_CONNECTION

    *

   */

   public WSPResponse quit (

         Properties optionalAttributes )

   throws NSIWholesaleException {

         return quit (
               optionalAttributes,

               0);

   }
   protected WSPResponse quit(

         Properties optionalAttributes,

         int count)

   throws NSIWholesaleException {

         String methodName=className + ″.quit(Properties,int)″ ;

         if(count>retry) {

              throw new NSIWholesaleException(methodName + ″Unable to
complete command″);

         }

         NSIWholesaleConnection conn=null;

         WSPResponse returnCode;

         try {

               conn=(NSIWholesaleConnection)pool.checkOut();

               Properties allParmsAndAttrs=new Properties();

               // put optional attributes

               propertiesCat(allParmsAndAttrs,optionalAttributes);

               returnCode=conn.makeRequest(COMMAND_QUIT,
allParmsAndAttrs);

               pool.checkIn(conn);

               return returnCode;

         } catch (Exception e)  {

               try {

                      pool.release(conn);

               }

               catch (ResourceException re)  {

                     System.err.println(methodName+″Caught
ResourceException″+re);

               }

               finally {

                     return quit(

                           optionalAttributes,

                           count+l);

              }

         }

   }
//#-END API-----------------------------------------------------------

   /**

    * This method shutsdown the Wholesaler Services Protocol API.

    * @return void

    *

   */
				
				<dp n="d139"/>
  public void shutdown()  {

         System.out.println(″NSIWholesaleAPI.shutdown:″+

                ″Calling pool.shutdown()...″);

         //pool.shutdown();

         try {

               //pool.close();

               pool.close(60000,60000);

         }

         catch (ResourceException re)  {
               System.err.println(″Exception Caught:″+ re);

         }

         System.out.println(″NSIWholesaleAPI.shutdown:″ +

               ″pool.shutdown() returned!″);

    }
//**************************************************************
//Support Functions

   /**
    * This method parses the string argument as a signed decimal integer

    * @param valueString the string to be parsed as an int

    * @return an int representing the valueString

    * @see java.lang.Integer#parseInt

    *

   */

   protected static int parseInt(String valueString)  {

         try{

              return Integer.parseInt(valueString);

         }catch (NumberFormatException nfe) {

              return 0;

         }

   }

   /**

    * This method concatinates the source property list onto the end of the

    * target propery list.Filtering is done to remove properties
associated with

    * credit card charges.

    * @param target the target (destination) property list

    * @param source the source property list

    * @return void

    * @see java.util.Properties

    *

    */    

    protected static void propertiesCat(Properties target,Properties
source) {    

          String methodName=className+″.propertiesCat(Properties,
Properties)″;

          if ((target==null)||(source==null))  {

                return;

          }

          // concatinate source properties onto target properties

          if (source.isEmpty()==false)  {

                try{

                    String key;
				
				<dp n="d140"/>
                     String value;

                     Enumeration e=source.propertyNames ();

                     while (e.hasMoreElements())  {

                            key=(String)e.nextElement();

                            value=source.getProperty(key);

                                  target.put(key,value);

                      }

                }

                catch (NoSuchElement Exception nsee) {

                      System.err.println(methodName+

                           ″Invalid Properties″);

                      nsee.printStackTrace();

                 }

           }
           return;

    }    

    /**

    * This method concatinates the source property list onto the end of the

    * target propery list.

    * @param protocol client (your) protocol

    * @return true if your protocol matches wholesale services protocol,

    * otherwise false

    * @see NSIWholesaleAPI#ATTR_PROTOCOL

    * @see NSIWholesaleAPI#Describe

    *

    */

    protected boolean verifyConnectionProtocol(String protocol)

    throws NSIWholesaleException {    

          String methodName=className +″.verifyConnectionProtocol(String)

          WSPResponse wspResponse=describe(ATTR_PROTOCOL);

          if (wspResponse==null) {

               System.err.println(methodName + ″Unable to verify connection
protocol″+ protocol);
               return false;

          }

          if (wspResponse.getMajorResultCode()==
WSPResponse.COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED) {

                String wspProtocol=wspResponse.getProperty(ATTR_PROTOCOL);

                if (wspProtocol==null)  {

                      System.err.println(metbodName + ″Unable to verify
connection protocol ″+ protocol);

                      return false;

                }

                if (protocol.equals(wspProtocol)) {

                      System.out.println(methodName +″Successfully verified
connection protocol″ + protocol);

                      return true;

                }

                else {

                       System.err.println(methodName + ″Failed to verify
connection protocol:″ +

                              ″Your Protocol=<″+ protocol +″>while
Wholesale Services Protocol=<″+ wspProtocol + ″>″);

                      return false;
				
				<dp n="d141"/>
                       }

           }
           else {

                System.err.println(methodName + ″Unable to verify connection
protocol ″+ protocol);

                return false;

           }

    }
}
//--------------------------------------------------------------------
// End of  file NSIWholesaleAPI.java
//-------------- Copyright (c) 2000 Network Solutions.Inc-------------

    The calss definition for WSPResponse is as follows:
//--------------------------------------------------------------------
// Package
//--------------------------------------------------------------------
package nsi.wholesale.toolkit.javaapi;
//--------------------------------------------------------------------
// Imports...
//--------------------------------------------------------------------
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;
import java.util.Properties;
import java.text.*;
/**
 *------------ Copyright (c) 2000 Network Solutions,Inc------------<BR>
 * This class represents the various components of a
 * Wholesale Services Protocol (WSP) Response.
 * A WSP response will be returned for each request that is issued
 * throught the protocol. A response will describe,in as much detail
 * as possible,the outcome of the issued request,and will optionally
 * include any additional information that was generated by the request.
 * A result consists of a 'result code'followed by a descriptive
 * ′result message′. A′result code′consists of a major result code
 * followed.by a period(′.′),folloed by a minor result code.
 * The three-digit major result code provides a general indication of
 * the success or failure of an issued request.
 * In most cases,one or more result properties are returned. A result
 * property consists of a property key followed by a colon (′:′),
 * followed by a property value.
 * In other cases,plain text is returned(e.g. the inforation returned
 * from the Help command). Both of these cases are indicated by specific
 * result codes.
 *
 * @author            David A. Moston
 * @see                     MSIWholesaleAPI
				
				<dp n="d142"/>
  * @since       27 July 2000
  * @version     1.0
  *
  *
  *<BR>--------------------------------------------------------------<BR>
  *$Log$
  *<BR>--------------------------------------------------------------<BR>
  */
public class WSPResponse {
//--------------------------------------------------------------------
// Beginning of Required/Standard Fields
//-------------------------------------------------------------------
    /** Serial Version */

    static long serialVersion=1L;

    /** Release Version */

    static double version=1.0D;

    /** SCCS control ID */
    static final String sccsID=″@(#)wholesale-sdk_d1.12.1.3 08/04/00
10:27:15 WSPResponse.java NSI″;

    /** JDK Version */

    static String jdkVersion=″1.1.7″;

    // Static Accessor Method(s)...

    /** Static accessor method to get serial version */

    static public long getSerialVersion() { return serialVersion;}

    /** Static accessor method to get release version */

    static public double getVersion() { return version;}

    /** Static accessor method to get JDK version */

    static public String getJdkVersion() {return jdkVersion;}
//--------------------------------------------------------------------
// End of Required/Standard Fields 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
//class (static) variable(s)...    
//--------------------------------------------------------------------

    /** The name of this class  */

    private static final String className=″WSPResponse″;

    /** Ease-of-use constant for Major Result Code:Minimum.

    (Note:this is NOT a valid/supported major result code)

    All valid/supported major result codes will be

    greater than the minimum and less than the maximum,respectively */

    public static final int MAJOR_RESULT_CODE_MIN=99;

    /** Ease-of-use constant for Major Result Code[General Information]:
Minimum.

    (Note:this is NOT a valid/supported major result code)  */

    public static final int MAJOR_RESULT_CODE_GENERAL_INFORMATION_MIN=99;

    /** Ease-of-use constant for Major Result Code[General Information]:
General information  */
				
				<dp n="d143"/>
      public static final int GENERAL_INFORMATION=100;

    /** Ease-of-use constant for Major Result Code[General Information]:
Maximum.

    (Note:this is NOT a valid/supported major result code) */

    public static final int MAJOR_RESULT_CODE_GENERAL_INFORMATION_MAX=199;

    /** Ease-of-use constant for Major Result Code[Success]:Minimum

    (Note:this is NOT a valid/supported major result code)  */

    public static final int MAJOR_RESULT_CODE_SUCCESS_MIN=199;

    /** Ease-of-use constant for Major Result Code[Success]:Authentication
successful */

    public static final int AUTHENTICATION_SUCCESSFUL=210;
    /** Ease-of-use constant for Major Result Code[Success]:Session created
*/

    public static final int SESSION_CREATED=220;

    /** Ease-of-use constant for Major Result Code[Success]:Command
succeeded,closing connection */

    public static final int COMMAND SUCCEEDED_CLOSING_CONNECTION=221;

    /** Ease-of-use constant for Major Result Code[Success]:Command
accepted  now executing */

    public static final int COMMAND_ACCEPTED_NOW_EXECUTING=230;

    /** Ease-of-use constant for Major Result Code[Success]:Command not
available */    

    public static final int COMMAND_NOT_AVAILABLE=231;

    /** Ease-of-use constant for Major Result Code(Success]:Command
execution succeeded,no data being returned;Ok */

    public static final int
COMMAND_EXECUTION_SUCCEEDED_NO_DATA_BEING_RETURNED=240;

    /** Ease-of-use constant for Major Result Code[Success]:Command
execution succeeded,properties being returned */

    public static final int
COMMAND_EXECUTION_SUCCEEDED_PROPERTIES_BEING_RETURNED=241;

    /** Ease-of-use constant for Major Result Code[Success]:Command
execution succeeded,text being returned */

    public static final int COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETRNED
=242;    

    /** Ease-of-use constant for Major Result Code[Success]:Maximum

    (Note:this is NOT a valid/supported major result code)  */

    public static final int MAJOR_RESULT_CODE_SUCCESS_MAX=299;

    /** Ease-of-use constant for Major Result Code[Failure]:Minimum.

    (Note:this is NOT a valid/supported major result code)  */

    public static final int MAJOR_RESULT_CODE_FAILURE_MIN=299;

    /** Ease-of-use constant for Major Result Code[Failure]:Authentication
failed */

    public static final int AUTHENTICATION_FAILED=310;

    /** Ease-of-use constant for Major Result Code[Failure]:Too many
connections  */

    public static final int TOO_MANY_CONNECTIONS=320;

    /** Ease-of-use constant for Major Result Code[Failure]:Too many
connections from current wholesaler */

    public static final int TOO_MANY_CONNECTIONS_FROM_CURRENT_WHOLESSALER=
321;

    /** Ease-of-use constant for Major Result Code[Failure]:Wholesaler
account has been suspened  */    

    public static final int WHOLESALER_ACCOUNT_HAS_BEEN_SUSPENDED=322;
				
				<dp n="d144"/>
     /** Ease-of-use constant for Major Result Code[Failure]:Session timed
out */

     public static final int SESSION TIMED OUT=323;

     /** Ease-of-use constant for Major Result Code[Failure]:Server closing
connection-Command timed out */

     public static final int SERVER_CLOSING_CONNECTION=324;

     /** Ease-of-use constant for Major Result Code[Failure]:Invalid command
*/    

     public static final int INVALID_COMMAND=330;

    /** Ease-of-use constant for Major Result Code[Failure]:Invalid class
*/    

    public static final int INVALID_CLASS=331;

    /** Ease-of-use constant for Major Result Code[Failure]:Formatting
error*/

    public static final int FORMATTING_ERROR=332;

    /** Ease-of-use constant for Major Result Code[Failure]:Missing
required parameter  */

    public static final int MISSING_REQUIRED_PARAMETER=333;

    /** Ease-of-use constant for Major Result Code[Failure]:Invalid
attribute */

    public static final int INVALID_ATTRIBUTE=334;

    /** Ease-of-use constant for Major Result Code[Failure]:Invalid value
*/

    public static final int INVALID_VALUE=335;

    /** Ease-of-use constant for Major Result Code[Failure];Missing
required attribute*/

    public static final int MISSING_REQUIRED_ATTRIBUTE=336;

    /** Ease-of-use constant for Major Result Code[Failure]:Missing
required value*/

    public static final int MISSING_REQUIRED_VALUE=337;

    /** Ease-of-use constant for Major Result Code[Failure]:Missing
parameter */

    public static final int INVALID_PARAMETER=338;

    /** Ease-of-use constant for Major Result Code[Failure]:Command failed,
unknown error - Command failed,internal error */

    public static final int COMMAND_FAILED_UNKNOWN_ERROR=340;

    /** Ease-of-use constant for Major Result Code[Failure]:Object not
found */    

    public static final int OBJECT_NOT_FOUND=341;

    /** Ease-of-use constant for Major Result Code[Failure]:Command access
denied */    

    public static final int COMMAND_ACCESS_DENIED=342;

    /** Ease-of-use constant for Major Result Code[Failure]:General access
denied - Access to request denied */

    public static final int GENERAL_ACCESS_DENIED=343;

    /** Ease-of-use constant for Major Result Code[Failure]:Maximum

    (Note:this is NOT a valid/supported major result code)  */

    public static final int MAJOR_RESULT_CODE_FAILURE_MAX=399;

    /** Ease-of-use constant for Major Result Code:Maximum

    (Note:this is NOT a valid/supported major result code)

    All valid/supported major result codes will be    

    greater than the minimum and less than the maximum,respectively */

    public static final int MAJOR_RESULT_CODE_MAX=400;
//--------------------------------------------------------------------
				
				<dp n="d145"/>
//class (static) method(s) ...
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// static initializer block...
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// instance Variable(s)...    
//--------------------------------------------------------------------

    /**

     * WSP response result code (consisting of a major result code,

     * followed by a period(′.′),followed by a minor result code).

     */

     private String resultCode=null;

    /**

     * WSP response major result code

     */

     private int majorResultCode=0;

    /**

     * WSP response minor result code

     */

     private int minorResultCode=0;

    /**

     * The original WSP text response string used to instantiate object.

     * The raw WSP response consists of one or more<CRLF>delimited lines,

     * terminated by a line containing only a period (′.′),followed by
 <CRLF>,

     */

    private String rawResponse=null;

    /**

     * The result message extracted from the original WSP text response.

     */
    private String resultMessage=null;

    /**

    The WSP response attributes extracted from the original WSP

    text response.

    */

    private Hashtable attributes=null;
//--------------------------------------------------------------------
//Constructors
//--------------------------------------------------------------------

    /**

     *

     * Parses a WSP text response and extracts and stores the

     * various components.

     *

     * @param data the raw WSP response text
     *
				
				<dp n="d146"/>
     * @exception InvalidArgumentException  if<code>data</code> is null.

     * @exception InvalidResponseFormatException if <code>data</code> is

     *                                            not a properly formatted

     *                                            WSP response.

     */

    public WSPResponse (String data)

          throws InvalidArgumentException,InvalidResponseFormatException {

          if (data==null)  {

                throw new InvalidArgumentException(″null argument:data″);

          }

          parseRawResponse(data);

          setRawResponse(data);

    }

    /**

     * Create a new WSPResponse based on value inputs.

     *

     * @param majorCode the major code for the WSPResponse.

     * @param minorCode the minor code for the WSPResponse.

     * @param message   the text string associated with the message

     * @param assocProps the properties associated with this message.

     *

     *

     * @exception InvalidArgumentException if majorCode or minorCode is or

     *                                      not in the appropriate range.

     */

    public WSPResponse (int majorCode,int minorCode,

                        String message,Properties assocProps)

          throws InvalidArgumentException {

          if ((majorCode==null)||(minorCode==null)||

               (majorCode<MAJOR_RESULT_CODE_MIN)||(majorCode>
MAJOR_RESULT_CODE_MAX)||

               (minorCode<0)||(minorCode>999))  {

                throw new InvalidArgumentException(″null argument:data″);

          }

          majorResultCode=majorCode;

          minorResultCode=minorCode;

          resultMessage=new String(message);

          if (assocProps!=null)  {

                Enumeration enum=assocProps.propertyNames();

                while (enum.hasMoreElements())  {    

                      String prop_key=(String)enum.nextElement();

                      String value=prop.getProperty(prop_key);

                      addAttribute(prop_key,value);

                }

          }    

          DecimalFormat myFmt=new DecimalFormat();

          myFmt.setMinimumIntegerDigits(3);

          myFmt.setMaximumIntegerDigits(3);

          myFmt.setMaximumFractionDigits(3);

          myFmt.setMinimumFractionDigits(3);

          double x=majorCode+minorCode/1000.0;

          resultCode=myFmt.format(x);
				
				<dp n="d147"/>
         }
//--------------------------------------------------------------------
//Accessors and Mutators
//--------------------------------------------------------------------

    /**

     * Returns the original WSP text response string used to instantiate

     * object.

     * @return the original WSP text response

     */

    public String getRawResponse  ()  {

          return rawResponse;

    }

    /**

     * Returns the result message extracted from the original WSP

     * text response.

     * @return the WSP response result message.

     */    

    public String getResultMessage  ()  {

          return resultMessage;

    }

    /**

     * Returns any attributes,if applicable,extracted from the original

     * WSP text response.

     * @return response attributes if any exist,null otherwise.

     */

    Hashtable getAttributes  ()  {

          return attributes;

    } 

    /**

     * returns the result property value corresponding to the specified

     * result property key,if found,extracted from the original

     * WSP text response.

     *

     * @param resultPropertyKey a result property key

     * @return the corresponding result property value,otherwise null

     */

     public String getProperty(String resultPropetyKey){
           String resultPropertyValue=null;

           Hashtable attributes=getAttributes();

           if (attributes==null) {

                 return resultPropertyValue;

           }

           Vector vector=(Vector)attributes.get(resultPropertyKey);

           if(vector==null) {

                return resultPropertyValue;
				
				<dp n="d148"/>
    }

    for(int i=0;i<vector.size();i++){

         resultPropertyValue=(String)vector.elementAt(i);
    }

    return resultPropertyValue;

    }

    /**

     * Returns a property list containing all result property
specifications,

     * if applicable,extracted from the original WSP text response.

     * Note:when the major result code=
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED

     * text is being returned in the response,as opposed to result property
specifications.    

     * Since there are no defined result property keys for returned text,a
dummy    

     * result property key is generated for each line of text.

     * That dummy result property key will look like ′text#′, where#

     * is a number from 1 to N (N being the number of lines of text
returned).    

     * For example,the first dummy reslt property key will be′textl′.

     * For example,the tenth dummy result property key will be′textl0′.
     *

     * @return response attributes if any exist,null otherwise.

     * @see WSPResponse#getText

     */

    public Properties getProperties () {

          Properties props=new Properties();

          Hashtable attributes=getAttributes();

          if (attributes==null)  {

                return null;

          }

          Enumeration enum=attributes.keys();

          int lineNumber=0;

          while (enum.hasMoreElements())  {

                lineNumber++;

                String key=null;

                Vector vector=null;

                key=(String) enum.nextElement();

                // if Command execution scceeded;text being returned

                if (getMajorResultCode()==
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED) {

                      key=″text″+lineNumber;  // Create a ″dummy″key
for this line of text

                }

                vector=(Vector) attributes.get(key);

                for (int i=0;i<vector.size();i++)  {
				
				<dp n="d149"/>
                     props.put(key,(String)vector,elementAt(i));

               }

         }
         return props;

   }

    /**

    *Returns a property list containing all result property
specifications    

     * if applicable,extracted from the original WSP text response.

     * Nore:when the major result code=
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED 

     * text is being returned in the response,as opposed to result property
specifications.

     * Since there are no defined result property keys for returned text,a
dummy    

     * result property key is generated for each line of text.

     * That dummy result property key will look like ′text#′,where #

     * is a number.from i to N(N being the number of lines of text
returned)

     * For example,the first dummy result properry key will be′textl′.

     * For example,the tenth dummy result property key will be′textl0′.

     * @param wspResponse the WSP response

     * @return response attributes if any exist,null otherwise

     * @see WSPResponse#getText

     */    

    public static Properties getProperties(WSPResponse wspResponse) {

          return wspResponse.getProperties();

    }

    /**

     * returns a vector containing lines of text returned in the WSP
response.

     * Note:when the major result code is
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED,

     * text is being returned in the response,as opposed to result property
specifications.

     * There are no result property keys defined for text.

     * This method returns a vector of Strings. Each element(String) in
the vector is a line of text.

     * @param wspResponse the WSP response

     * @return a vector containing lines of text returned,otherwise null
     * @see WSPResponse#getProperties

     */

    public Vector getText() {

         Vector text=new Vector();

          // if not:Command execution succeeded;text being returned

          if(getMajorResultCode()!=    
COMMAND_EXECUTION_SUCCEEDED_TEXT_BEING_RETURNED) {

                 return null;

         }
				
				<dp n="d150"/>
  Hashtable attributes=getAttributes();

         if (attributes==null)  {

               return null;

         }

         Enumeration enum=attributes.keys();

         int lineNumber=0;

         while (enum.hasMoreElements())  {

               lineNumber++;

               String key=null;

               Vector vector=null;

               key=(String)enum.nextElement();

               //command execution succeeded;text being returned

               key=″text″+ lineNumber;    // Create a ″dummy″key for
this line of text

               vector=(Vector) attributes.get(key);

               for(int i=0;i<vector.size();i++)  {

                    text.addElement((String)vector.elementAt(i));

               }

         }

         return text;

     }

    /**

     * sets the raw response text

     *

     * @param aRawResponse the raw WSP response text

     * @return void

     */    

    private void setRawResponse (String aRawResponse) {

          rawResponse=aRawResponse;

    }

    /**

     * sets the response result code

     *

     * @param inResultCode the WSP response result code

     * @return void

     */

    private void setResultCode (String inResultCode)  {

          resultCode= inResultCode;

    }

    /**

     * returns the WSP response result code and result message

     *
     * @return the WSP response result code and result message

     */

    public String getResultCodeAndMessage  ()  {

          return (getResultCode() + ″ ″+ getResultMessage ());
				
				<dp n="d151"/>
    }

    /**

     * returns the WSP response result code

     * @return the WSP response result code

     */

    public String getResultCode () {

          return resultCode;

    }

    /**

     * returns the WSP response major result code

     * @return the WSP response major result code

     */

    public int getMajorResultCode () {

          parseResultCode();

          return majorResultCode;

    }

    /**

     * returns the WSP response minor result code
     *

     * @return the WSP response minor result code

     */

    public int getMinorResultCode () {

          parseResultCode();

          return minorResultCode;

    }

    /**

     * sets the WSP response result message

     * @param aResultMessage the WSP response result message

     * @return void

     */    

    private void setResultMessage (String aResultMessage)  {

           resultMessage=aResultMessage;

    }

    /**

     * sets the WSP response attributes

     * @param hash the WSP response attributes

     * @return void

    pvate void setAttributes (Hashtable hash)  {
        attributes=hash;

    }
//-------------------------------------------------------------------
// General Methods
//-------------------------------------------------------------------
				
				<dp n="d152"/>
    /**

     * parses the current result code into major and minor result  codes.

     *

     * @return true if result code is successfully parsed,otherwise false

     */

    private boolean parseResultCode  ()  {

          boolean rc=true;

          String methodName=className + ″.parseResultCode()″;

          String sResultCode=getResultCode();

          String sMajorResultCode=null;

          String sMinorResultCode=null;

          int iMajorResultCode=0;

          int iMinorResultCode=0;

          try {

                StringTokenizer st=new StringTokenizer(sResultCode,″.″) ;

                sMajorResultCode=st.nextToken();

                sMinorResultCode=st.nextToken();
                iMajorResultCode=Integer.parseInt(sMajorResultCode);

                iMinorResultCode=Integer.parseInt(sMinorResultCode);

          }

          catch(NosuchElementException nsee)  {

                System.err.println(methodName + ″Unable to parse result code

                      + sResultCode +  ″>″);

                nsee.printStackTrace();

          }

          catch(NumberFormatException nfe)  {

                System.err.println(methodName +″Invalid result code<″

                       + sResultCode +″>″);

                nfe.printStackTrace();

          }

          finally {

                if (iMajorResultCode<=0)  {

                      rc=false;

                }

                else {

                      majorResultCode=iMajorResultCode;

                      minorResultCode=iMinorResultCode;

               }

          }

          return rc;

    }

    /**

     * prints debug-type representation or tne WSP Response to standard
output

     *

     * @param response a WSP resonse

     * @return void

     */

    public static void displayResponse(WSPResponse response)  {

          System.out.println(″Result Code:″+ response.getResultCode());
				
				<dp n="d153"/>
          System.out.println(″Major Result Code:″ +

               response.getMajorResultCode());

          System.out.println(″Minor Result Code:″ +

                response.getMinorResultCode());

          System.out.println(″Result Message:″+
response.getResul tMessage());    

          Hashtable attributes=response.getAttributes();

          if (attributes==null)  {

                System.out.println(Result Properties:NONE″);

                return;

          }

          System.out.println(″Result Properties:″);

          Enumeration enum=attributes.keys();

          while (enum.hasMoreElements())  {

                String key=null;

                Vector vector=null;

                key=(String) enum.nextElement();

                vector=(Vector)attributes.get(key);

                for(int i=0;i<vector.size();i++)  {

                     System.out.println(key + ″:″+
(String)vector.elementAt(i));    
                }

          }

    }

    /**
     * returns the raw WSP response

     *

     * @return a string representing the raw WSP response

     */

    public String toString  ()  {

          if (rawResponse!=null)  {

                return rawResponse ;

          }

          if (responseCode==null}  {

                fabricatedResponse=new String(″001.001″);

          } else {

                fabricatedResponse=new String(responseCode);

          }

          if (resultMessage==null)  {

                fabricatedResponse=new
String(fabricatedResponse+″<<Message is null>>\r\n″);

          } else {

                fabricatedResponse=new
String(fabricatedResponse+resultMessage +″\r\n″);

          }

          if (attributes!=null)  {

                Enumeration enum=attributes.keys();
				
				<dp n="d154"/>
                while (enum.hasMoreElements())  {

                      String key=null;

                      Vector vector=null;

                      key=(String)enum.nextElement();

                      vector=(Vector)attributes.get(key);

                      for (int i=0;i<vector.size();i++)  {

                             fabricatedResponse=new
String(fabricatedResponse+ key +

                                                     ″:″  +

    (String)vector.elementAt(i) +

                                                     ″\r\n″);

                        }

                  }

          }

          fabricatedResponse=new String(fabricatedResponse+″.\r\n):

          return fabricatedResponse;

    }

    /**

     * Parse raw WSP text response and extract and store all components
     *

     * @param data the raw WSP text response

     * @return void

     * @exception InvalidResponseFormatException upon detection of an
invalid response format

     */

     private void parseRawResponse (String data)

           throws InvalidResponseFormatException  {

           String methodName=className+″.parseRawResponse(String)″;
           //

           // Split data by<CRLF>

           //

           StringTokenizer st=new StringTokenizer(data,″\r\n″);

           //

           // Get the first line of the response

           //

           String responseLine= ″″;

           try {

                 responseLine=st.nextToken();

           } catch (NoSuchElementException e)  {

                 throw new InvalidResponseFormatException(″Missing first
line″);    

           }

           //

           // Extract″result code″and″result message″from first line

           // of response.
				
				<dp n="d155"/>
              //

              int spaceIndex=responseLine.indexOf(′′);

              //

              // If there is no space in the string,then the format is invalid.

              // First line must be″code message″

              //   

              if (spaceIndex==-1)  {

                    throw new InvalidResponseFormatException(

                    ″missing/invalid code and message″);

              }

              //

              // The code is comprised of the set of characters spanning the

              // the first character to the space

              //

              String myresultCode=responseLine.substring(0,spaceIndex);
              //

              // trim any whitespace from both ends of code

              //

              myresultCode=myresultCode.trim();

              //
              // Attempt to convert the string result code to an integer
              //

              setResultCode(myresultCode);

              //

              // Extract the result message now

              //

              String desc=null;

              //

              // The resultmessage is comprised of all characters spanning from

              // the first character after the space to the end of the entire
string

              //

              desc=responseLine.substring(spaceIndex +1,
responseLine.length());

              //

              // trim any whitespace from both ends of code

              //

              desc=desc.trim();

              if(desc.length()== 0) {

                   throw new InvalidResponseFormatException(

                         ″Missing result message″);

              }

              setResultMessage(desc);
				
				<dp n="d156"/>
           String value;

          int colonIndex=0;

          //if Command execution succeeded;text being returned

          if (getMajorResultCode()==
COMMAND_ExECUTION_SUCCEEDED_TExT_BEING_RETURNED) {

                int lineNumber=0;

                try {

                      while (st.hasMoreTokens() )  {

                            lineNumber++;

                            //

                            // Create a ″dummy″key for this line of text

                            //

                            key =″text″+lineNumber;

                            //

                            // Get the next line from the response

                            //

                            value=st.nextToken();

                            //

                            //Break from the loop if we hit the response
terminator

                            //

                            if (value.trim().equa/s(″.″))  {

                                  break;
                            }    

                            //

                            // Save attribute

                            //

                            // addAttribute(key.toLowerCase(),value);

                            adAttribute(key,value);

                       }    // end while

                  }    // end try

                  catch (NoSuchElementException e)  {

                       throw new InvalidResponseFormatException(

                             ″Error splitting response by′\r\n′″,  e);

                  }    //end catch

            }

            else

            {

                  //

                  // Iterate through the rest of the response,searching for

                  // attributes.Break from the loop when we encounter the

                  // response terminator

                  //

                  try {

                        while (st.hasMoreTokens()  )  {

                              //

                              // Get the next line from the response

                              //
				
				<dp n="d157"/>
                           responseLine=st.nextToken();

                           //

                           // Try to find the colon (′:′)in the string

                           //

                           colonIndex=responseLine.indexOf(′:′);

                           //

                           // If the colon is missing,then check to see if
we′ve

                           // encountered the response terminator.If we
haven′t,

                           // then the response is formatted improperly

                           //

                           if (colonIndex==-1)  {

                                 responseLine=responseLine.trim();

                                 //

                                 // Break from the loop if we hit the
response terminator

                                 //

                                 if(responseLine.equals(″.″))  {

                                         break;

                                 }

                                 else {

                                        throw new
InvalidResponseFormatException(

                                               ″Invalid attribute key-value
pair″);

                                 }

                            }

                            //

                            // The attribute key is everything before the
colon

                            //    

                             key=responseLine.substring(0,colonIndex);

                             key = key.trim();

                             //

                             // The attribute value is everything after the
colon

                             //

                             value=responseLine.substring(colonIndex +1);

                             value=value.trim();

                             //

                             // Save attribute

                             //

                             // addAttribute(key.toLowerCase(),value);

                             addAttribute(key,value);

                        }    // end while

                  }    // end try

                  catch (NoSuchElementException e)  {

                        throw new InvalidResponseFormatException(
				
				<dp n="d158"/>
                        ″Error splitting response by ′\r\n′″,e);

             }    //end catch

         }

   }//parseRawRespose

   /**    

    * Attributes are stored in a hashtable.  Since  there  can be multiple

    * values  for the same key,we store all values in vectors.Everytime

    * a value is added for a key that already exists,we just add that

    * value to that key′s vector.If a key does not yet exist,then

    * we create a new vector and add the value to it.

     *

     * @param key a result property key

     * @param value a result property value

     * @return void

     */

     private void addAttribute  (String key, String value}  {

           Hashtable hash=getAttributes();

           if (hash==null)  {

                 hash=new Hashtable();

                 setAttributes(hash);

           }

           Vector vector=(Vector) hash.get(key);

           if (vector==null)  {

                 vector=new Vector(1);

                 hash.put(key,vector);

           }

           vector.addElement(value);

      }
}
//-------------------------------------------------------------------
// End of file WSPResponse.java
// ------------ Copyright (c) 2000 Network Solutions,Inc------------

Claims (9)

1、一种用于将用户应用程序与系统连接以处理与管理因特网域名关联的事务的方法,其特征在于,所述方法包括下述步骤:
在应用程序接口中从所述应用程序接收请求以便在因特网上建立所述用户和系统之间的会话;
验证所述用户的权利以处理与管理因特网域名关联的事务;
在所述应用程序接口和系统中建立安全套接层;
在所述应用程序接口中从所述应用程序接收请求以始发在这种验证之后的事务处理;以及
从所述应用程序接口发送完成所述事务的命令给系统。
2、如权利要求1所述的方法,其特征在于,进一步包括下述步骤:
告知应用程序有关命令处理的状态。
3、如权利要求2所述的方法,其特征在于:
所述告知步骤包括将含有指示该事务是否已经完成的语句的响应返回给所述应用程序的步骤。
4、如权利要求3所述的方法,其特征在于:
所述语句包括含有ASCII文本部分的消息,后跟一个定界符部分。
5、如权利要求4所述的方法,其特征在于:
所述ASCII文本部分是从预定的语句字典中选取。
6、如权利要求1所述的方法,其特征在于:
对用户的验证是通过因特网协议地址、安全套接层加密以及所述应用程序提供的用户名和口命来确定。
7、如权利要求1所述的方法,其特征在于:
所述验证步骤包括在第一次失败尝试后至少进行一次附加尝试以验证用户的步骤。
8、如权利要求7所述的方法,其特征在于:
如果所述至少一次附加尝试失败,
在所述至少进行一次附加尝试以验证用户后拒绝进一步去尝试要被验证。
9、用于将用户应用程序与系统连接以处理与管理因特网域名关联的事务的设备,其特征在于,包括:
用于从所述应用程序中接收请求的部件,以便在因特网上建立所述用户和系统之间的会话;
用于验证所述用户的权利的部件,以便执行与管理因特网域名关联的事务;
用于在设备中建立安全套接层的部件;
在这种验证之后,并且在从所述应用程序接收请求之后用于始发事务处理的部件;以及
通过所述安全套接层发送完成所述事务的命令给所述系统。
CN00815699A 1999-09-15 2000-09-15 用于建立和维护因特网域名注册的方法和设备 Pending CN1390416A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15396099P 1999-09-15 1999-09-15
US60/153,960 1999-09-15

Publications (1)

Publication Number Publication Date
CN1390416A true CN1390416A (zh) 2003-01-08

Family

ID=22549429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN00815699A Pending CN1390416A (zh) 1999-09-15 2000-09-15 用于建立和维护因特网域名注册的方法和设备

Country Status (11)

Country Link
EP (1) EP1222790A2 (zh)
JP (1) JP2003523650A (zh)
KR (1) KR20020042834A (zh)
CN (1) CN1390416A (zh)
AU (1) AU7490500A (zh)
BR (1) BR0013989A (zh)
CA (1) CA2384834A1 (zh)
IL (1) IL148628A0 (zh)
MX (1) MXPA02002789A (zh)
NO (1) NO20021259L (zh)
WO (1) WO2001020484A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311399B2 (en) 1999-09-07 2016-04-12 C. Douglass Thomas System and method for providing an updating on-line forms and registrations
US7747592B2 (en) 1999-09-07 2010-06-29 Thomas C Douglass Method and system for monitoring domain name registrations
US7991851B2 (en) 2002-02-28 2011-08-02 International Business Machines Corporation Remote user substitution at ODBC/CLI level and stored procedure authorization
CN100373903C (zh) * 2002-10-31 2008-03-05 华为技术有限公司 一种可按照域名进行端口批发的方法
US7320073B2 (en) 2003-04-07 2008-01-15 Aol Llc Secure method for roaming keys and certificates

Also Published As

Publication number Publication date
KR20020042834A (ko) 2002-06-07
WO2001020484A2 (en) 2001-03-22
BR0013989A (pt) 2002-07-30
JP2003523650A (ja) 2003-08-05
CA2384834A1 (en) 2001-03-22
AU7490500A (en) 2001-04-17
NO20021259D0 (no) 2002-03-13
NO20021259L (no) 2002-05-15
WO2001020484A3 (en) 2001-12-27
MXPA02002789A (es) 2003-10-14
WO2001020484B1 (en) 2002-04-11
EP1222790A2 (en) 2002-07-17
IL148628A0 (en) 2002-09-12

Similar Documents

Publication Publication Date Title
US7743093B2 (en) Message based network configuration of domain name purchase
US8589528B2 (en) Automated provisioning system
US20040199608A1 (en) Method for gathering domain name registration information from a registrant via a Registrar&#39;s web site
US20040199520A1 (en) Method for checking the availability of a domain name
US20060088026A1 (en) Message based network configuration of domain name services
EP2362340A1 (en) Methods and apparatus for gifting over a data network
US20060075020A1 (en) Context administrator
US20020183080A1 (en) System and method for proxy-enabling a wireless device to an existing IP-based service
US20040133481A1 (en) Interface for generating business partners
US20060059240A1 (en) Method for multi-identifier login of an instant messaging system
US20040199620A1 (en) Method for transfering a registered domain name from a first registrar to a second registrar
CN101529399B (zh) 代理服务器和代理方法
JP2003527672A (ja) インターネットホストサーバを介してポータブルデバイスの安全な認証を提供するための方法および装置
JP2006526843A (ja) クライアントリダイレクトによるプライベートネットワークへの安全なアクセス提供方法およびシステム
CN1628449A (zh) 传送计费信息的方法、系统和设备
CN1553741A (zh) 为用户提供网络漫游的方法和系统
CN1874226A (zh) 终端接入方法及系统
US7093019B1 (en) Method and apparatus for providing an automated login process
CN1694405A (zh) 远程计算机服务的系统及方法
AU2007325944B2 (en) Apparatus and method for automated inventory tracking and authentication
WO2013170613A1 (zh) Ip地址管理方法、设备及系统
CN1390416A (zh) 用于建立和维护因特网域名注册的方法和设备
US8073971B2 (en) Message based network configuration of dynamic domain name services
CN101051900A (zh) 一种通过网络修改登录信息的方法
CN113126970B (zh) 一种仲裁案件业务系统开放接口的设计方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication