adaptation of old eclipse code to Intellij
This commit is contained in:
102
src/peers/sip/syntaxencoding/SipHeaders.java
Normal file
102
src/peers/sip/syntaxencoding/SipHeaders.java
Normal file
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
This file is part of Peers, a java SIP softphone.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2007, 2008, 2009, 2010 Yohann Martineau
|
||||
*/
|
||||
|
||||
package peers.sip.syntaxencoding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import peers.sip.RFC3261;
|
||||
|
||||
|
||||
|
||||
public class SipHeaders {
|
||||
|
||||
private ArrayList<SipHeader> headers;
|
||||
|
||||
public SipHeaders() {
|
||||
headers = new ArrayList<SipHeader>();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param name
|
||||
* @param value
|
||||
* @param index -1 to add at the end
|
||||
*/
|
||||
public void add(SipHeaderFieldName name, SipHeaderFieldValue value, int index) {
|
||||
SipHeader header = new SipHeader(name, value);
|
||||
if (headers.contains(header)) {
|
||||
header = headers.get(headers.indexOf(header));
|
||||
SipHeaderFieldValue oldValue = header.getValue();
|
||||
//TODO check is header can be multi valued
|
||||
if (oldValue instanceof SipHeaderFieldMultiValue) {
|
||||
SipHeaderFieldMultiValue oldMultiVal = (SipHeaderFieldMultiValue) oldValue;
|
||||
oldMultiVal.getValues().add(value);
|
||||
} else {
|
||||
ArrayList<SipHeaderFieldValue> arr = new ArrayList<SipHeaderFieldValue>();
|
||||
arr.add(oldValue);
|
||||
arr.add(value);
|
||||
header.setValue(new SipHeaderFieldMultiValue(arr));
|
||||
}
|
||||
} else {
|
||||
if (index == -1) {
|
||||
headers.add(header);
|
||||
} else {
|
||||
headers.add(index, header);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void add(SipHeaderFieldName name, SipHeaderFieldValue value) {
|
||||
add(name, value, -1);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unlikely-arg-type")
|
||||
public void remove(SipHeaderFieldName name) {
|
||||
headers.remove(name);
|
||||
}
|
||||
|
||||
public boolean contains(SipHeaderFieldName name) {
|
||||
return headers.contains(new SipHeader(name, null));
|
||||
}
|
||||
|
||||
public SipHeaderFieldValue get(SipHeaderFieldName name) {
|
||||
int index = headers.indexOf(new SipHeader(name, null));
|
||||
if (index < 0) {
|
||||
return null;
|
||||
}
|
||||
return headers.get(index).getValue();
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return headers.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (SipHeader header : headers) {
|
||||
buf.append(header.getName().toString());
|
||||
buf.append(": ");
|
||||
buf.append(header.getValue());
|
||||
buf.append(RFC3261.CRLF);
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user