001/* 002 * The MIT License 003 * Copyright (c) 2012 Microsoft Corporation 004 * 005 * Permission is hereby granted, free of charge, to any person obtaining a copy 006 * of this software and associated documentation files (the "Software"), to deal 007 * in the Software without restriction, including without limitation the rights 008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 009 * copies of the Software, and to permit persons to whom the Software is 010 * furnished to do so, subject to the following conditions: 011 * 012 * The above copyright notice and this permission notice shall be included in 013 * all copies or substantial portions of the Software. 014 * 015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 021 * THE SOFTWARE. 022 */ 023 024package microsoft.exchange.webservices.data.dns; 025 026import microsoft.exchange.webservices.data.core.exception.dns.DnsException; 027 028import java.util.NoSuchElementException; 029import java.util.StringTokenizer; 030 031/** 032 * Represents a DNS SRV Record. 033 */ 034public class DnsSrvRecord extends DnsRecord { 035 /* 036 * The string representing the target host 037 */ 038 /** 039 * The target. 040 */ 041 private String target; 042 043 /* 044 * priority of the target host specified in the owner name. 045 */ 046 /** 047 * The priority. 048 */ 049 private int priority; 050 /* 051 * weight of the target host 052 */ 053 /** 054 * The weight. 055 */ 056 private int weight; 057 /* 058 * port used on the target for the service 059 */ 060 /** 061 * The port. 062 */ 063 private int port; 064 065 /** 066 * Retrieves the value of the target property. 067 * 068 * @return target 069 */ 070 public String getNameTarget() { 071 return this.target; 072 } 073 074 /** 075 * Retrieves the value of the priority property. 076 * 077 * @return priority 078 */ 079 public int getPriority() { 080 return priority; 081 } 082 083 /** 084 * Retrieves the value of the weight property. 085 * 086 * @return weight 087 */ 088 public int getWeight() { 089 return weight; 090 } 091 092 /** 093 * Retrieves the value of the port property. 094 * 095 * @return port 096 */ 097 public int getPort() { 098 return port; 099 } 100 101 /** 102 * Initializes a new instance of the DnsSrvRecord class. 103 * 104 * @param srvRecord srvRecord that is fetched from JNDI 105 * @throws DnsException the dns exception 106 */ 107 protected void load(String srvRecord) throws DnsException { 108 super.load(null); 109 StringTokenizer strTokens = new StringTokenizer(srvRecord); 110 try { 111 while (strTokens.hasMoreTokens()) { 112 String priority = strTokens.nextToken(); 113 this.priority = Integer.parseInt(priority); 114 115 String weight = strTokens.nextToken(); 116 this.weight = Integer.parseInt(weight); 117 118 String port = strTokens.nextToken(); 119 this.port = Integer.parseInt(port); 120 121 String target = strTokens.nextToken(); 122 this.target = target; 123 } 124 } catch (NumberFormatException ne) { 125 throw new DnsException("NumberFormatException " + ne.getMessage()); 126 } catch (NoSuchElementException ne) { 127 throw new DnsException("NoSuchElementException " + ne.getMessage()); 128 } 129 130 } 131}