001/*
002 *  Licensed to the Apache Software Foundation (ASF) under one
003 *  or more contributor license agreements.  See the NOTICE file
004 *  distributed with this work for additional information
005 *  regarding copyright ownership.  The ASF licenses this file
006 *  to you under the Apache License, Version 2.0 (the
007 *  "License"); you may not use this file except in compliance
008 *  with the License.  You may obtain a copy of the License at
009 *  
010 *    http://www.apache.org/licenses/LICENSE-2.0
011 *  
012 *  Unless required by applicable law or agreed to in writing,
013 *  software distributed under the License is distributed on an
014 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 *  KIND, either express or implied.  See the License for the
016 *  specific language governing permissions and limitations
017 *  under the License. 
018 *  
019 */
020
021package org.apache.directory.server.dns.io.encoder;
022
023
024import java.net.InetAddress;
025import java.net.UnknownHostException;
026
027import org.apache.directory.server.dns.messages.ResourceRecord;
028import org.apache.directory.server.dns.store.DnsAttribute;
029import org.apache.mina.core.buffer.IoBuffer;
030
031
032/**
033 * 3.4.1. A RDATA format
034 * 
035 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
036 *  |                    ADDRESS                    |
037 *  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
038 * 
039 * where:
040 * 
041 * ADDRESS         A 32 bit Internet address.
042 * 
043 * Hosts that have multiple Internet addresses will have multiple A
044 * records.
045 * 
046 * A records cause no additional section processing.  The RDATA section of
047 * an A line in a master file is an Internet address expressed as four
048 * decimal numbers separated by dots without any imbedded spaces (e.g.,
049 * "10.2.0.52" or "192.0.5.6").
050 * 
051 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
052 */
053public class AddressRecordEncoder extends ResourceRecordEncoder
054{
055    // This will suppress PMD.EmptyCatchBlock warnings in this method
056    @SuppressWarnings("PMD.EmptyCatchBlock")
057    protected void putResourceRecordData( IoBuffer byteBuffer, ResourceRecord record )
058    {
059        String ipAddress = record.get( DnsAttribute.IP_ADDRESS );
060
061        try
062        {
063            byteBuffer.put( InetAddress.getByName( ipAddress ).getAddress() );
064        }
065        catch ( UnknownHostException uhe )
066        {
067        }
068    }
069}