diff options
author | Shuyi Chen <shuyichen@google.com> | 2013-05-22 14:51:55 -0700 |
---|---|---|
committer | Shuyi Chen <shuyichen@google.com> | 2013-05-22 17:19:30 -0700 |
commit | d7955ce24d294fb2014c59d11fca184471056f44 (patch) | |
tree | e260500b0b7639127038495d46a0ad6dcbb6d96c /src/org/xbill/DNS/SetResponse.java | |
parent | 8f4ce9ea0de51fee918bffe19c434612d6bbb2d7 (diff) | |
download | smack-lollipop-mr1-cts-release.tar.gz |
Add android smack source.HEADandroid-wear-5.0.0_r1android-sdk-4.4.2_r1.0.1android-sdk-4.4.2_r1android-l-preview_r2android-cts-5.1_r9android-cts-5.1_r8android-cts-5.1_r7android-cts-5.1_r6android-cts-5.1_r5android-cts-5.1_r4android-cts-5.1_r3android-cts-5.1_r28android-cts-5.1_r27android-cts-5.1_r26android-cts-5.1_r25android-cts-5.1_r24android-cts-5.1_r23android-cts-5.1_r22android-cts-5.1_r21android-cts-5.1_r20android-cts-5.1_r2android-cts-5.1_r19android-cts-5.1_r18android-cts-5.1_r17android-cts-5.1_r16android-cts-5.1_r15android-cts-5.1_r14android-cts-5.1_r13android-cts-5.1_r10android-cts-5.1_r1android-cts-5.0_r9android-cts-5.0_r8android-cts-5.0_r7android-cts-5.0_r6android-cts-5.0_r5android-cts-5.0_r4android-cts-5.0_r3android-cts-4.4_r4android-cts-4.4_r1android-5.1.1_r9android-5.1.1_r8android-5.1.1_r7android-5.1.1_r6android-5.1.1_r5android-5.1.1_r4android-5.1.1_r38android-5.1.1_r37android-5.1.1_r36android-5.1.1_r35android-5.1.1_r34android-5.1.1_r33android-5.1.1_r30android-5.1.1_r3android-5.1.1_r29android-5.1.1_r28android-5.1.1_r26android-5.1.1_r25android-5.1.1_r24android-5.1.1_r23android-5.1.1_r22android-5.1.1_r20android-5.1.1_r2android-5.1.1_r19android-5.1.1_r18android-5.1.1_r17android-5.1.1_r16android-5.1.1_r15android-5.1.1_r14android-5.1.1_r13android-5.1.1_r12android-5.1.1_r10android-5.1.1_r1android-5.1.0_r5android-5.1.0_r4android-5.1.0_r3android-5.1.0_r1android-5.0.2_r3android-5.0.2_r1android-5.0.1_r1android-5.0.0_r7android-5.0.0_r6android-5.0.0_r5.1android-5.0.0_r5android-5.0.0_r4android-5.0.0_r3android-5.0.0_r2android-5.0.0_r1android-4.4w_r1android-4.4_r1.2.0.1android-4.4_r1.2android-4.4_r1.1.0.1android-4.4_r1.1android-4.4_r1.0.1android-4.4_r1android-4.4_r0.9android-4.4_r0.8android-4.4_r0.7android-4.4.4_r2.0.1android-4.4.4_r2android-4.4.4_r1.0.1android-4.4.4_r1android-4.4.3_r1.1.0.1android-4.4.3_r1.1android-4.4.3_r1.0.1android-4.4.3_r1android-4.4.2_r2.0.1android-4.4.2_r2android-4.4.2_r1.0.1android-4.4.2_r1android-4.4.1_r1.0.1android-4.4.1_r1android-4.3_r3.1android-4.3_r3android-4.3_r2.3android-4.3_r2.2android-4.3_r2.1android-4.3_r2android-4.3_r1.1android-4.3_r1android-4.3_r0.9.1android-4.3_r0.9android-4.3.1_r1tools_r22.2mastermainlollipop-wear-releaselollipop-releaselollipop-mr1-wfc-releaselollipop-mr1-releaselollipop-mr1-fi-releaselollipop-mr1-devlollipop-mr1-cts-releaselollipop-devlollipop-cts-releasel-previewkitkat-wearkitkat-releasekitkat-mr2.2-releasekitkat-mr2.1-releasekitkat-mr2-releasekitkat-mr1.1-releasekitkat-mr1-releasekitkat-devkitkat-cts-releasekitkat-cts-devjb-mr2.0.0-releasejb-mr2.0-releasejb-mr2-releasejb-mr2-devidea133-weekly-releaseidea133
Change-Id: I49ce97136c17173c4ae3965c694af6e7bc49897d
Diffstat (limited to 'src/org/xbill/DNS/SetResponse.java')
-rw-r--r-- | src/org/xbill/DNS/SetResponse.java | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/SetResponse.java b/src/org/xbill/DNS/SetResponse.java new file mode 100644 index 0000000..05d9f32 --- /dev/null +++ b/src/org/xbill/DNS/SetResponse.java @@ -0,0 +1,202 @@ +// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) + +package org.xbill.DNS; + +import java.util.*; + +/** + * The Response from a query to Cache.lookupRecords() or Zone.findRecords() + * @see Cache + * @see Zone + * + * @author Brian Wellington + */ + +public class SetResponse { + +/** + * The Cache contains no information about the requested name/type + */ +static final int UNKNOWN = 0; + +/** + * The Zone does not contain the requested name, or the Cache has + * determined that the name does not exist. + */ +static final int NXDOMAIN = 1; + +/** + * The Zone contains the name, but no data of the requested type, + * or the Cache has determined that the name exists and has no data + * of the requested type. + */ +static final int NXRRSET = 2; + +/** + * A delegation enclosing the requested name was found. + */ +static final int DELEGATION = 3; + +/** + * The Cache/Zone found a CNAME when looking for the name. + * @see CNAMERecord + */ +static final int CNAME = 4; + +/** + * The Cache/Zone found a DNAME when looking for the name. + * @see DNAMERecord + */ +static final int DNAME = 5; + +/** + * The Cache/Zone has successfully answered the question for the + * requested name/type/class. + */ +static final int SUCCESSFUL = 6; + +private static final SetResponse unknown = new SetResponse(UNKNOWN); +private static final SetResponse nxdomain = new SetResponse(NXDOMAIN); +private static final SetResponse nxrrset = new SetResponse(NXRRSET); + +private int type; +private Object data; + +private +SetResponse() {} + +SetResponse(int type, RRset rrset) { + if (type < 0 || type > 6) + throw new IllegalArgumentException("invalid type"); + this.type = type; + this.data = rrset; +} + +SetResponse(int type) { + if (type < 0 || type > 6) + throw new IllegalArgumentException("invalid type"); + this.type = type; + this.data = null; +} + +static SetResponse +ofType(int type) { + switch (type) { + case UNKNOWN: + return unknown; + case NXDOMAIN: + return nxdomain; + case NXRRSET: + return nxrrset; + case DELEGATION: + case CNAME: + case DNAME: + case SUCCESSFUL: + SetResponse sr = new SetResponse(); + sr.type = type; + sr.data = null; + return sr; + default: + throw new IllegalArgumentException("invalid type"); + } +} + +void +addRRset(RRset rrset) { + if (data == null) + data = new ArrayList(); + List l = (List) data; + l.add(rrset); +} + +/** Is the answer to the query unknown? */ +public boolean +isUnknown() { + return (type == UNKNOWN); +} + +/** Is the answer to the query that the name does not exist? */ +public boolean +isNXDOMAIN() { + return (type == NXDOMAIN); +} + +/** Is the answer to the query that the name exists, but the type does not? */ +public boolean +isNXRRSET() { + return (type == NXRRSET); +} + +/** Is the result of the lookup that the name is below a delegation? */ +public boolean +isDelegation() { + return (type == DELEGATION); +} + +/** Is the result of the lookup a CNAME? */ +public boolean +isCNAME() { + return (type == CNAME); +} + +/** Is the result of the lookup a DNAME? */ +public boolean +isDNAME() { + return (type == DNAME); +} + +/** Was the query successful? */ +public boolean +isSuccessful() { + return (type == SUCCESSFUL); +} + +/** If the query was successful, return the answers */ +public RRset [] +answers() { + if (type != SUCCESSFUL) + return null; + List l = (List) data; + return (RRset []) l.toArray(new RRset[l.size()]); +} + +/** + * If the query encountered a CNAME, return it. + */ +public CNAMERecord +getCNAME() { + return (CNAMERecord)((RRset)data).first(); +} + +/** + * If the query encountered a DNAME, return it. + */ +public DNAMERecord +getDNAME() { + return (DNAMERecord)((RRset)data).first(); +} + +/** + * If the query hit a delegation point, return the NS set. + */ +public RRset +getNS() { + return (RRset)data; +} + +/** Prints the value of the SetResponse */ +public String +toString() { + switch (type) { + case UNKNOWN: return "unknown"; + case NXDOMAIN: return "NXDOMAIN"; + case NXRRSET: return "NXRRSET"; + case DELEGATION: return "delegation: " + data; + case CNAME: return "CNAME: " + data; + case DNAME: return "DNAME: " + data; + case SUCCESSFUL: return "successful"; + default: throw new IllegalStateException(); + } +} + +} |