import javax.management.openmbean.CompositeData; import javax.management.openmbean.CompositeDataSupport; import javax.management.openmbean.CompositeType; import javax.management.openmbean.OpenDataException; import sun.management.LazyCompositeData; import sun.management.MappedMXBeanType; public class NameCompositeData extends LazyCompositeData { private final Name name; public NameCompositeData(Name name) { this.name = name; } public Name getName() { return name; } public static CompositeData toCompositeData(Name name) { NameCompositeData namecd = new NameCompositeData(name); return namecd.getCompositeData(); } protected CompositeData getCompositeData() { final Object[] nameItemValues = { new String(name.getFirstName()), new String(name.getLastName()) }; try { return new CompositeDataSupport(nameCompositeType, nameItemNames, nameItemValues); } catch (OpenDataException ex) { InternalError e1 = new InternalError(ex.getMessage()); e1.initCause(ex); throw e1; } } private static final CompositeType nameCompositeType; static { try { nameCompositeType = (CompositeType)MappedMXBeanType.toOpenType(Name.class); } catch (OpenDataException ex) { InternalError e1 = new InternalError(ex.getMessage()); e1.initCause(ex); throw e1; } } static CompositeType getNameCompositeType() { return nameCompositeType; } private static final String FIRST = "first"; private static final String LAST = "last"; private static final String[] nameItemNames = { FIRST, LAST, }; public static String getFirst(CompositeData cd) { return (String)cd.get(FIRST); } public static String getLast(CompositeData cd) { return (String)cd.get(LAST); } public static void validateCompositeData(CompositeData cd) { if (cd == null) { throw new NullPointerException("Null CompositeData"); } if (!isTypeMatched(nameCompositeType, cd.getCompositeType())) { throw new IllegalArgumentException( "Unexpected composite type for Name"); } } }