1600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
2600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/*******************************************************************************
3600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
4600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*******************************************************************************/
5600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
6600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpackage gov.nist.javax.sip.header.extensions;
7600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
8600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport java.text.ParseException;
9600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
10600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport javax.sip.header.ExtensionHeader;
11600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.header.*;
12600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
13600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangimport gov.nist.javax.sip.address.*;
14600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/*
15600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang* This code has been contributed by the author to the public domain.
16600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang*/
17600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
18600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/**
19600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * ReferredBy SIP Header. RFC 3892
20600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
21600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @version JAIN-SIP-1.2
22600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
23600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * @author Peter Musgrave.
24600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
25600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
26600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */
27600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wangpublic final class ReferredBy
28600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    extends AddressParametersHeader implements ExtensionHeader, ReferredByHeader {
29600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
30600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    // TODO: Need a unique UID
31600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    private static final long serialVersionUID = 3134344915465784267L;
32600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
33600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    // TODO: When the MinSEHeader is added to javax - move this there...pmusgrave
34600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public static final String NAME = "Referred-By";
35600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
36600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /** default Constructor.
37600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
38600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public ReferredBy() {
39600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        super(NAME);
40600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
41600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
42600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    public void setValue(String value) throws ParseException {
43600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        // not implemented.
44600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        throw new ParseException(value,0);
45600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
46600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
47600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
48600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    /**
49600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * Encode the header content into a String.
50600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     * @return String
51600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang     */
52600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    protected String encodeBody() {
53600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (address == null)
54600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            return null;
55600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        String retval = "";
56600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (address.getAddressType() == AddressImpl.ADDRESS_SPEC) {
57600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            retval += LESS_THAN;
58600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
59600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        retval += address.encode();
60600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (address.getAddressType() == AddressImpl.ADDRESS_SPEC) {
61600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            retval += GREATER_THAN;
62600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
63600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
64600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        if (!parameters.isEmpty()) {
65600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang            retval += SEMICOLON + parameters.encode();
66600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        }
67600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang        return retval;
68600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang    }
69600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang}
70600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang/*
71600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * $Log: ReferredBy.java,v $
72600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Revision 1.3  2009/07/17 18:57:42  emcho
73600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Converts indentation tabs to spaces so that we have a uniform indentation policy in the whole project.
74600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
75600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Revision 1.2  2006/10/27 20:58:31  mranga
76600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Issue number:
77600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Obtained from:
78600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Submitted by:
79600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Reviewed by:   mranga
80600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * doc fixups
81600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: ----------------------------------------------------------------------
82600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Issue number:
83600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If this change addresses one or more issues,
84600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   then enter the issue number(s) here.
85600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Obtained from:
86600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If this change has been taken from another system,
87600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   then name the system in this line, otherwise delete it.
88600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Submitted by:
89600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If this code has been contributed to the project by someone else; i.e.,
90600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   they sent us a patch or a set of diffs, then include their name/email
91600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   address here. If this is your work then delete this line.
92600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Reviewed by:
93600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If we are doing pre-commit code reviews and someone else has
94600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   reviewed your changes, include their name(s) here.
95600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If you have not had it reviewed then delete this line.
96600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
97600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Revision 1.1  2006/10/12 11:57:52  pmusgrave
98600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Issue number:  79, 80
99600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Submitted by:  pmusgrave@newheights.com
100600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Reviewed by:   mranga
101600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
102600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Revision 1.2  2006/03/20 20:52:03  pmusgrave
103600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Add RefferedBy to header factory
104600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Correct implements statement in ReferredBy
105600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
106600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Revision 1.1.1.1  2006/03/15 16:00:07  pmusgrave
107600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Source with additions
108600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
109600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Revision 1.3  2004/01/22 13:26:29  sverker
110600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Issue number:
111600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Obtained from:
112600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Submitted by:  sverker
113600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Reviewed by:   mranga
114600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
115600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * Major reformat of code to conform with style guide. Resolved compiler and javadoc warnings. Added CVS tags.
116600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
117600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: ----------------------------------------------------------------------
118600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Issue number:
119600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If this change addresses one or more issues,
120600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   then enter the issue number(s) here.
121600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Obtained from:
122600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If this change has been taken from another system,
123600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   then name the system in this line, otherwise delete it.
124600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Submitted by:
125600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If this code has been contributed to the project by someone else; i.e.,
126600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   they sent us a patch or a set of diffs, then include their name/email
127600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   address here. If this is your work then delete this line.
128600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS: Reviewed by:
129600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If we are doing pre-commit code reviews and someone else has
130600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   reviewed your changes, include their name(s) here.
131600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang * CVS:   If you have not had it reviewed then delete this line.
132600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang *
133600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang */
134600c7a4bbc7348167293eac928192e695b4ad5baChung-yih Wang
135