/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (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 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * */ package com.sun.solaris.service.pools; /** * The Component class represents a configuration * resource component. */ public class Component extends Element { /** * The type of the component. */ private final String type; /** * The system id of the component. */ private final long sys_id; /** * The key of the component. */ private final String key; /** * Constructor * * @param conf The configuration to which this component belongs * @param comp The pointer to the native component * @throws PoolsException If accessing the proxy fails. */ Component(Configuration conf, long comp) throws PoolsException { _conf = conf; Value val = getProperty("type", comp); type = val.getString(); val.close(); val = getProperty(type + ".sys_id", comp); sys_id = val.getLong(); val.close(); key = type + "." + sys_id; } /** * Return the pointer to the component represented by this object. * * @return conf the pointer to the component represented by this object * @throws PoolsException If the component cannot be located. */ long getComponent() throws PoolsException { return (_conf.checkComponent(type, sys_id)); } /** * Returns a descriptive string which describes the component. * * @param deep Whether the information should contain information about * all contained elements. * @throws PoolsException If the component cannot be located. * @return a descriptive string which describes the component. */ public String getInformation(int deep) throws PoolsException { return (PoolInternal.pool_component_info(_conf.getConf(), getComponent(), deep)); } /** * Returns a string representation of this component. * * @return a string representation of this component. */ public String toString() { StringBuffer buf = new StringBuffer(); buf.append(type); buf.append(" "); buf.append(sys_id); return (buf.toString()); } /** * Indicates whether some other Component is "equal to this one. * @param o the reference object with which to compare. * @return true if this object is the same as the * o argument; false otherwise. * @see #hashCode() */ public boolean equals(Object o) { if (o == this) return (true); if (!(o instanceof Component)) return (false); Component other = (Component) o; if (type.compareTo(other.getType()) != 0 || sys_id != other.getSysId()) return (false); return (true); } /** * Returns a hash code value for the object. This method is * supported for the benefit of hashtables such as those provided by * java.util.Hashtable. * * @return a hash code value for this object. * @see #equals(java.lang.Object) * @see java.util.Hashtable */ public int hashCode() { return (type.hashCode() + (int) sys_id); } /** * Return the pointer to this component as an element. * * @return The pointer to the native component which this object wraps. * @throws PoolsException If there is an error converting the native * component pointer to a native elem pointer. */ protected long getElem() throws PoolsException { long elem; if ((elem = PoolInternal.pool_component_to_elem(_conf.getConf(), getComponent())) == 0) throw new PoolsException(); return (elem); } /** * Return the type of the component */ String getType() { return (type); } /** * Return the system id of the component. */ long getSysId() { return (sys_id); } /** * Return the key of the component. */ String getKey() { return (key); } }