/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 1999 by Sun Microsystems, Inc.
* All rights reserved.
*
*/
// ServerAttribute.java: Attribute created on the server side only.
// Author: James Kempf
// Created On: Thu Apr 23 08:53:49 1998
// Last Modified By: James Kempf
// Last Modified On: Fri May 1 10:35:22 1998
// Update Count: 9
//
package com.sun.slp;
import java.util.*;
import java.io.*;
/**
* The ServerAttribute class models attributes on the server side.
* The primary difference is that values substitute AttributeString
* objects for String objects, so attributes compare according to the
* rules of SLP matching rather than by string equality. Also,
* an AttributeString object for the id is included, for pattern
* matching against the id.
*
* @author James Kempf
*/
class ServerAttribute extends ServiceLocationAttribute {
// The id as an attribute string.
AttributeString idPattern = null;
// Construct a new ServerAttribute object. Substitute AttributeString
// objects for strings.
ServerAttribute(String id_in, Vector values_in, Locale locale)
throws IllegalArgumentException {
super(id_in, values_in);
idPattern = new AttributeString(id, locale);
// Substitute for string values.
if (values != null) {
Object o = values.elementAt(0);
if (o instanceof String) {
int i, n = values.size();
for (i = 0; i < n; i++) {
String s = (String)values.elementAt(i);
AttributeString as = new AttributeString(s, locale);
values.setElementAt(as, i);
}
}
}
}
// Construct a ServerAttribute object from a ServiceLocationAttribute
// object.
ServerAttribute(ServiceLocationAttribute attr, Locale locale) {
this(attr.id, attr.getValues(), locale);
}
// Get values by changing the attribute string objects into strings.
public Vector getValues() {
Vector v = super.getValues();
if ((v != null) &&
(v.elementAt(0) instanceof AttributeString)) {
int i, n = v.size();
for (i = 0; i < n; i++) {
v.setElementAt(v.elementAt(i).toString(), i);
}
}
return v;
}
}