1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /*
23 * ident "%Z%%M% %I% %E% SMI"
24 *
25 * Copyright 1999-2002 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
27 */
28
29 package com.sun.dhcpmgr.data;
30
31 import java.util.Vector;
32 import java.util.Enumeration;
33
34 /**
35 * This class provides a way for us to handle errors in the dhcptab which
36 * may have been introduced through the command line or direct editing of
37 * the table. The idea is for the OptionValueFactory to trap bad option
38 * names or values and store them in an instance of this class so that the
39 * user can then be told about the error and allowed to fix it.
40 */
41 public class BogusOptionValue extends OptionValue {
42 private String name;
43 private String value;
44
45 // Serialization id for this class
46 static final long serialVersionUID = 8573418100554161901L;
47
48 protected BogusOptionValue(String name) {
49 this.name = name;
50 value = null;
51 }
52
53 protected BogusOptionValue(String name, Object value) {
54 this.name = name;
55 setValue(value);
56 }
57
58 public String getName() {
59 return name;
60 }
61
62 public String getValue() {
63 return value;
64 }
65
66 public void setValue(Object value) {
67 if (value instanceof Vector) {
68 /*
69 * We generate the value by creating a blank-separated list of
70 * tokens; each token is the product of a toString() on the
71 * vector's elements.
72 */
73 StringBuffer b = new StringBuffer();
74 Enumeration en = ((Vector)value).elements();
75 while (en.hasMoreElements()) {
76 if (b.length() != 0) {
77 b.append(' ');
78 }
79 b.append(en.nextElement().toString());
80 }
81 setValue(b.toString());
82 } else if (value instanceof String) {
83 this.value = (String)value;
84 } else {
85 // Anything else should just tell us what it looks like as a string.
86 setValue(value.toString());
87 }
88 }
89
90 public String toString() {
91 return (getName() + "=\"" + getValue() + "\"");
92 }
93
94 public boolean isValid() {
95 // This kind of option is never valid
96 return false;
97 }
98
99 public Object clone() {
100 return new BogusOptionValue(name, value);
101 }
102 }