📄 changes.html
字号:
in the case of auth-headers:
WWW-Authenticate: Digest realm="atlanta.com",
domain="sip:boxesbybob.com", qop="auth",
nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="",
stale=FALSE, algorithm=MD5
- getValue() will return only the auth-scheme without parameters.
In the previous example it will return only "Digest"
- getHeaderValue() returns full header value like before e.g.
Digest realm="atlanta.com",
domain="sip:boxesbybob.com", qop="auth",
nonce="f84f1cec41e6cbe5aea9c8e88d359", opaque="",
stale=FALSE, algorithm=MD5
- auth-params are accessible with normal get/set/removeParameters()
- <b>Annex A</b>
- further clarified permission issues
- Connector.open("sip:5070;application=x-game");
- MIDlet gets only requests to the port 5070 which are tagged
with application = x-game. Other requests will be discarded
by the system.
</pre>
<h2>Changes from version 0.4</h2>
<pre>
- <b>SipConnection</b>
- corrected text:
"UNKNOWN_TYPE Content-Type header not set."
- Exception clarifications
send()
IOException: (e.g. port reserved) removed.
SipException: INVALID_STATE instead of MESSAGE_NOT_INITIALIZED
setHeader(), addHeader(), removeHeader()
SipException: "API" reword to "system",
MESSAGE_NOT_INITIALIZED removed, enough to
check the state.
openContentInputStream(), openContentOutputStream()
SipException: INVALID_STATE instead of MESSAGE_NOT_INITIALIZED
- simplify all get-methods to return null
if the information is not available
remove all Exceptions thrown.
- change: public void removeHeader(String name) throws SipException;
removed return value String being not very useful here
- <b>SipClientConnection</b>
- removed text from setRequestURI()
"MESSAGE_NOT_INITIALIZED if no message has been initialized or received."
- add getHeader() to state lists
- receive() signature changed to
public boolean receive(long timeout)
throws SipException, java.io.IOException
- throw SipException(INVALID_STATE) in wrong state
- throw IOException in case of another IOException
- returns boolean to indicate if response was really received
reasoning:
- should not throw Exception if user gives timeout and that time is elapsed
- using InterruptedIOException and SipException(NO_RESPONSE)
was not unambiguous
- setListener() throws IOException if connection is closed otherwise successful
- setRefresh() throws INVALID_STATE if called in wrong state
- setCredentials() throws INVALID_STATE if called in wrong state
- clarified method access list in each state
- <b>SipConnectionNotifier</b>
- Removed SipException NOT_AVAILABLE from
getLocalAddress() and getLocalPort()
returns null or 0 respectively if the information is not available.
- setListener() throws IOException if connection is closed otherwise successful
- <b>SipServerConnection</b>
- "MESSAGE_NOT_INITIALIZED" removed from both
initResponse() setReasonPhrase()
not used because this can be handled with INVALID_STATE
- added getHeader() to state lists
- added send() to Initialized state
- clarified method access list in each state
- <b>SipHeader</b>
- removeParameter() if parameter found in this header
- set/getParameter() clarifications
- SipHeader parses every header with generic parser
- parser syntax BNF added:
header = header-name ":" header-value *(";" generic-param)
header-name = token
generic-param = token [ EQUAL gen-value ]
gen-value = token / host / quoted-string
header-value = 1*(chars) / name-addr
chars = %x20-3A / "=" / %x3F-7E
; any visible character except ";" "<" ">"
- <b>SipAddress</b>
- does not escape address
- "host name" term changed to "host part"
- "user name" term changed to "user part"
- get/setURI() accesses URI part without parameters
- ignores headers part of SIP-URI
- clarified getPort() comment
- getParameterNames() returns String array, return
null if the address does not have ny parameters.
- accept schemes = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
- removed constructor
public SipAddress(String displayName, String user, String host,
String port)
- <b>SipException</b>
- Changed to extend SipException from IOException
this allows calling send() from OutputStream.close()
- INVALID_STATE
"Method call not allowed, because of illegal state"
-> "...of wrong state..."
- removed unuseful errors
NO_RESPONSE, MESSAGE_NOT_INITIALIZED and NOT_AVAILABLE
- <b>SipRefreshHelper</b>
- updated SipRefreshHelper text
- <b>SipDialog</b>
- added more explanations
- getNewClientConnection() throws SipException(INVALID_STATE)
if called illegal dialog state.
- getDialogID(), getCallID() returns null if dialog terminated.
- isSameDialog(SipConnection) returns "false" if dialog is terminated
- removed COMPLETED state
<br>
</pre>
<h2>Changes from version 0.3</h2>
<pre>
- JCP (2.1) version added package.html
- Class Diagram updated; package.html
- Removed garbage from Notation table; package.html
- use "application" instead of "MIDlet" SipClientConnection
- setCredentials() NullPointerException
- rephrased acceptAndOpen() definition in SipConnectionNotifier
- Fixed SipConnectionNotifier example code
- SipServerConnection getRequestURI added to "Request Received" state
- getDialog added to SipServerConnection method access list
- get/setScheme() added in SipAddress
- get/setUser() renamed in SipAddress
- public String getHeader(String name) added in SipClientConnection
example codes aligned to this new method
- SipExceptions: More comments, some references to methods added
- OTHER_ERROR -> GENERAL_ERROR
- NOT_ALLOWED split to INVALID_STATE and INVALID_OPERATION
- UNKOWN_CONTENT_TYPE/LENGTH generalized to UNKNOWN_TYPE/LENGTH
- DIALOG_NOT_INITIALIZED generalized to DIALOG_UNAVAILABLE
- CAN_NOT_OPEN_NEW_TRANSACTION generalized to TRANSACTION_UNAVAILABLE
- fixed SipHeader.setValue() example String comment refined
- Fixed generating javadoc using only CLDC core classes
</pre>
<h2>Changes from version 0.2</h2>
<pre>
- added reading MESSAGE content with InputStream in server connection example package.html
- corrected RFC3261 number in references package.html
- // handle other responses , in sendTextMessage() example package.html
- RefreshHelper -> SipRefreshHelper
- RefreshListener -> SipRefreshListener
- SipClientConnection state diagram fixed
- SipClientConnection.initCancel() only in Proceeding state
- more explanation in SipClientConnection.initRequest()
- throw SipException if initCancel() not allowed because of state or
other not applicable to current method. Corrected doc text.
- SipClientConnection.setListener() input parametr sccl documented
- getRefreshID() and setRefresh() corrected comments
- setCredentials() IllegalArgumentException text changed
- slightly clarified setHeader() commnet text. Header access discussion ongoing.
- clarified getRequestURI() text
- openContentInput/OutputStream "implementation..." sentence removed.
- SipDialog updated, equals() removed, can be compared with DialogIDs
- openContentInputStream() comment clarified. Added notes about
Content-Length and Content-Type
- added MESSAGE content reading in SipServerConnection example code
- initResponse() IllegalArgumentException valid status code range specified
- SipRefreshHelper explanation clarified
- code example fixed
- SipRefreshHelper cancel() cancelAll() methods renamed. update() method
changed to return OutputStream to fill the content.
- comments updated
- "boolean parameter" -> "parameter without value" SipAddress, SipHeader
- SipAddress.getPort() specified
- SipAddress.setParameter() IllegalArgumentException RFC reference
- SipAddress.getParameterNames() return String[]
- SipHeader.setValue() IllegalArgumentException more explaned
- SipException.NOT_ALLOWED explained
- INVALID_CONTENT_LENGTH removed IllegalArgumentException instead if needed
- INVALID_CONTENT_TYPE removed IllegalArgumentException instead if needed
- UNKNOWN_CONTENT_LENGTH explained
- UNKNOWN_CONTENT_TYPE added
- CAN_NOT_OPEN_NEW_TRANSACTION added to Connector.open() see SipConnection
and in SipConnectionNotifier
- sips:alice@company.com:5060;transport=udp fixed
- SipServerConnectionListener
notifyRequest(SipConnectionNotifier scn)
- Added InterruptedIOException, IOException to SipClientConnection
- added IllegalArgumentException, SipException MESSAGE_NOT_INITIALIZED in
SipServerConnection.initResponse()
</pre>
<h2>Changes from version 0.1</h2>
<pre>
- changed package name to javax.microedition.sip
Package description added
- Preface
- Overview
- How to use the SIP API for J2ME
- SIP (Session Initiation Protocol) Overview
- Glossary, Notation, References
Connector
- Connector.open() functionality with "sip" and "sips"
URLs specified in SipConnection
SipConnection
- setHeader(), addHeader(), removeHeader() semantics updated
- getHeaders() return value specified
- "Content-Length" MUST be set before calling open getContentOutputStream
- send() semantics specified
- OutputStream.close() actually informs the stack to send the message
- added Exceptions
- getMethod() valid for both response and request
SipClientConnection
- description rewritten
- state chart and method access list added
- example code
- only single listener in response notification interface
- header initialization and functionality defined in methods: initRequest()
initAck()
initCancel() // returns now SipClientConnection
SipConnectionNotifier
- description rewritten
- accept() changed to acceptAndOpen()
- only single listener in request notification interface
- added Exceptions
- example code
SipServerConnection
- description rewritten
- state chart and method access list added
- added Exceptions
- example code
- header initialization and functionality defined in method
initResponse()
SipDialog
- added getLocalTag getRemoteTag getCallID
RefreshHelper
- updated comments and example code
RefreshListener
- one method callback refreshEvent(...)
SipAddress
- get/setDisplayName() added
- added IllegalArgumentExceptions
- getParameter() specified
SipHeader
- getHeaderValue() added (differs from getValue() and toString())
- Exceptions added
- getParameter() specified
SipException
- first list of SIP error codes
- throws SipException added to some methods
</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -