mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-17 04:32:04 +01:00
Enforce jingle s5b transport invariants.
There can only either be one info element or multiple candidates, but not both. Enforced this in the JingleS5BTransportBuilder
This commit is contained in:
parent
541c9ecfdd
commit
bae840ebf7
1 changed files with 12 additions and 1 deletions
|
@ -93,7 +93,7 @@ public class JingleS5BTransport extends JingleContentTransport {
|
||||||
private String streamId;
|
private String streamId;
|
||||||
private String dstAddr;
|
private String dstAddr;
|
||||||
private Bytestream.Mode mode;
|
private Bytestream.Mode mode;
|
||||||
private ArrayList<JingleContentTransportCandidate> candidates = new ArrayList<>();
|
private final ArrayList<JingleContentTransportCandidate> candidates = new ArrayList<>();
|
||||||
private JingleContentTransportInfo info;
|
private JingleContentTransportInfo info;
|
||||||
|
|
||||||
public Builder setStreamId(String sid) {
|
public Builder setStreamId(String sid) {
|
||||||
|
@ -112,11 +112,22 @@ public class JingleS5BTransport extends JingleContentTransport {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder addTransportCandidate(JingleS5BTransportCandidate candidate) {
|
public Builder addTransportCandidate(JingleS5BTransportCandidate candidate) {
|
||||||
|
if (info != null) {
|
||||||
|
throw new IllegalStateException("Builder has already an info set. " +
|
||||||
|
"The transport can only have either an info or transport candidates, not both.");
|
||||||
|
}
|
||||||
this.candidates.add(candidate);
|
this.candidates.add(candidate);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setTransportInfo(JingleContentTransportInfo info) {
|
public Builder setTransportInfo(JingleContentTransportInfo info) {
|
||||||
|
if (!candidates.isEmpty()) {
|
||||||
|
throw new IllegalStateException("Builder has already at least one candidate set. " +
|
||||||
|
"The transport can only have either an info or transport candidates, not both.");
|
||||||
|
}
|
||||||
|
if (this.info != null) {
|
||||||
|
throw new IllegalStateException("Builder has already an info set.");
|
||||||
|
}
|
||||||
this.info = info;
|
this.info = info;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue