KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > snmp4j > agent > mo > snmp > TDomainAddressFactoryImpl


1 /*_############################################################################
2   _##
3   _## SNMP4J-Agent - TDomainAddressFactoryImpl.java
4   _##
5   _## Copyright (C) 2005-2007 Frank Fock (SNMP4J.org)
6   _##
7   _## Licensed under the Apache License, Version 2.0 (the "License");
8   _## you may not use this file except in compliance with the License.
9   _## You may obtain a copy of the License at
10   _##
11   _## http://www.apache.org/licenses/LICENSE-2.0
12   _##
13   _## Unless required by applicable law or agreed to in writing, software
14   _## distributed under the License is distributed on an "AS IS" BASIS,
15   _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   _## See the License for the specific language governing permissions and
17   _## limitations under the License.
18   _##
19   _##########################################################################*/

20
21 package org.snmp4j.agent.mo.snmp;
22
23 import org.snmp4j.smi.OID;
24 import java.net.Inet4Address JavaDoc;
25 import org.snmp4j.smi.UdpAddress;
26 import java.net.Inet6Address JavaDoc;
27 import org.snmp4j.smi.OctetString;
28 import org.snmp4j.smi.Address;
29 import org.snmp4j.smi.TransportIpAddress;
30 import org.snmp4j.smi.TcpAddress;
31 import org.snmp4j.log.LogFactory;
32 import org.snmp4j.log.LogAdapter;
33
34 public class TDomainAddressFactoryImpl implements TDomainAddressFactory {
35
36   private static final LogAdapter logger =
37       LogFactory.getLogger(TDomainAddressFactoryImpl.class);
38
39   public TDomainAddressFactoryImpl() {
40   }
41
42   public Address JavaDoc createAddress(OID transportDomain, OctetString address) {
43     if (TransportDomains.snmpUDPDomain.equals(transportDomain) ||
44         TransportDomains.transportDomainUdpIpv4.equals(transportDomain) ||
45         TransportDomains.transportDomainTcpIpv4.equals(transportDomain) ||
46         TransportDomains.transportDomainUdpIpv6.equals(transportDomain) ||
47         TransportDomains.transportDomainTcpIpv6.equals(transportDomain)) {
48       TransportIpAddress transportIpAddress;
49       if (TransportDomains.transportDomainTcpIpv4.equals(transportDomain) ||
50           TransportDomains.transportDomainTcpIpv6.equals(transportDomain)) {
51         transportIpAddress = new TcpAddress();
52       }
53       else {
54         transportIpAddress = new UdpAddress();
55       }
56       try {
57         transportIpAddress.setTransportAddress(address);
58       }
59       catch (Exception JavaDoc ex) {
60         logger.debug("Invalid TransportAddress format '" + address +
61                      "' for domain " + transportDomain);
62         return null;
63       }
64       return transportIpAddress;
65     }
66     return null;
67   }
68
69   public boolean isValidAddress(OID transportDomain, OctetString address) {
70     try {
71       Address JavaDoc addr = createAddress(transportDomain, address);
72       if (addr != null) {
73         return true;
74       }
75     }
76     catch (Exception JavaDoc ex) {
77       logger.debug("Address is not valid TDomain address: " + address+
78                    "; details: "+ex.getMessage());
79     }
80     return false;
81   }
82
83   public OID getTransportDomain(Address JavaDoc address) {
84     if (address instanceof TransportIpAddress) {
85       TransportIpAddress tipaddr = (TransportIpAddress) address;
86       if (tipaddr.getInetAddress() instanceof Inet4Address JavaDoc) {
87         if (address instanceof UdpAddress) {
88           return TransportDomains.transportDomainUdpIpv4;
89         }
90         else if (address instanceof TcpAddress) {
91           return TransportDomains.transportDomainTcpIpv4;
92         }
93       }
94       else if (tipaddr.getInetAddress() instanceof Inet6Address JavaDoc) {
95         if (address instanceof UdpAddress) {
96           return TransportDomains.transportDomainUdpIpv6;
97         }
98         else if (address instanceof TcpAddress) {
99           return TransportDomains.transportDomainTcpIpv6;
100         }
101       }
102     }
103     return null;
104   }
105
106   public OctetString getAddress(Address JavaDoc address) {
107     if (address instanceof TransportIpAddress) {
108       TransportIpAddress tipaddr = (TransportIpAddress) address;
109       byte[] addrBytes = tipaddr.getInetAddress().getAddress();
110       OctetString addr = new OctetString(addrBytes);
111       addr.append((byte) (tipaddr.getPort() >> 16));
112       addr.append((byte) (tipaddr.getPort() & 0xFF));
113       return addr;
114     }
115     return null;
116   }
117
118 }
119
Popular Tags