001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 019 package org.apache.commons.modeler; 020 021 022 import java.io.Serializable; 023 024 import javax.management.MBeanParameterInfo; 025 026 027 /** 028 * <p>Internal configuration information for a <code>Parameter</code> 029 * descriptor.</p> 030 * 031 * @author Craig R. McClanahan 032 * @version $Revision: 480402 $ $Date: 2006-11-29 05:43:23 +0100 (Wed, 29 Nov 2006) $ 033 */ 034 035 public class ParameterInfo extends FeatureInfo implements Serializable { 036 static final long serialVersionUID = 2222796006787664020L; 037 // ----------------------------------------------------------- Constructors 038 039 040 /** 041 * Standard zero-arguments constructor. 042 */ 043 public ParameterInfo() { 044 045 super(); 046 047 } 048 049 050 /** 051 * Special constructor for setting up parameters programatically. 052 * 053 * @param name Name of this parameter 054 * @param type Java class of this parameter 055 * @param description Description of this parameter 056 */ 057 public ParameterInfo(String name, String type, String description) { 058 059 super(); 060 setName(name); 061 setType(type); 062 setDescription(description); 063 064 } 065 066 067 // ----------------------------------------------------- Instance Variables 068 069 070 /** 071 * The <code>MBeanParameterInfo</code> object that corresponds 072 * to this <code>ParameterInfo</code> instance. 073 */ 074 transient MBeanParameterInfo info = null; 075 protected String type = null; 076 077 // ------------------------------------------------------------- Properties 078 079 080 /** 081 * Override the <code>description</code> property setter. 082 * 083 * @param description The new description 084 */ 085 public void setDescription(String description) { 086 super.setDescription(description); 087 this.info = null; 088 } 089 090 091 /** 092 * Override the <code>name</code> property setter. 093 * 094 * @param name The new name 095 */ 096 public void setName(String name) { 097 super.setName(name); 098 this.info = null; 099 } 100 101 102 /** 103 * The fully qualified Java class name of this parameter. 104 */ 105 public String getType() { 106 return (this.type); 107 } 108 109 public void setType(String type) { 110 this.type = type; 111 this.info = null; 112 } 113 114 115 // --------------------------------------------------------- Public Methods 116 117 118 /** 119 * Create and return a <code>MBeanParameterInfo</code> object that 120 * corresponds to the parameter described by this instance. 121 */ 122 public MBeanParameterInfo createParameterInfo() { 123 124 // Return our cached information (if any) 125 if (info != null) 126 return (info); 127 128 // Create and return a new information object 129 info = new MBeanParameterInfo 130 (getName(), getType(), getDescription()); 131 return (info); 132 133 } 134 135 136 /** 137 * Return a string representation of this parameter descriptor. 138 */ 139 public String toString() { 140 141 StringBuffer sb = new StringBuffer("ParameterInfo["); 142 sb.append("name="); 143 sb.append(name); 144 sb.append(", description="); 145 sb.append(description); 146 sb.append(", type="); 147 sb.append(type); 148 sb.append("]"); 149 return (sb.toString()); 150 151 } 152 }