01: /*
02: * SNMP Package
03: *
04: * Copyright (C) 2004, Jonathan Sevy <jsevy@mcs.drexel.edu>
05: *
06: * This is free software. Redistribution and use in source and binary forms, with
07: * or without modification, are permitted provided that the following conditions
08: * are met:
09: *
10: * 1. Redistributions of source code must retain the above copyright notice, this
11: * list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright notice,
13: * this list of conditions and the following disclaimer in the documentation
14: * and/or other materials provided with the distribution.
15: * 3. The name of the author may not be used to endorse or promote products
16: * derived from this software without specific prior written permission.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
19: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
21: * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
23: * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
25: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27: *
28: */
29:
30: package snmp;
31:
32: import java.io.*;
33:
34: /**
35: * Used when an unknown SNMP object type is encountered. Just takes a byte array
36: * for its constructor, and uses this as raw bytes.
37: */
38:
39: public class SNMPUnknownObject extends SNMPObject {
40: private byte[] data;
41:
42: protected byte tag = SNMPBERCodec.SNMPUNKNOWNOBJECT;
43:
44: /**
45: * Just takes a byte array, and uses this as raw bytes.
46: */
47: public SNMPUnknownObject(byte[] enc) {
48: data = enc;
49: }
50:
51: /**
52: * Return a byte array containing the raw bytes supplied.
53: */
54: public Object getValue() {
55: return data;
56: }
57:
58: /**
59: * Takes a byte array containing the raw bytes stored as the value.
60: */
61:
62: public void setValue(Object data) throws SNMPBadValueException {
63: if (data instanceof byte[])
64: this .data = (byte[]) data;
65: else
66: throw new SNMPBadValueException(
67: " Unknown Object: bad object supplied to set value ");
68: }
69:
70: /**
71: * Return the BER encoding of this object.
72: */
73:
74: protected byte[] getBEREncoding() {
75:
76: ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
77:
78: byte type = SNMPBERCodec.SNMPUNKNOWNOBJECT;
79:
80: // calculate encoding for length of data
81: byte[] len = SNMPBERCodec.encodeLength(data.length);
82:
83: // encode T,L,V info
84: outBytes.write(type);
85: outBytes.write(len, 0, len.length);
86: outBytes.write(data, 0, data.length);
87:
88: return outBytes.toByteArray();
89: }
90:
91: /**
92: * Return String created from raw bytes of this object.
93: */
94:
95: public String toString() {
96: return new String(data);
97: }
98:
99: }
|