OptionOutputFormatter.java revision 2362
a72f7ea693101cc48bafbb4db6bb437d828011c4ql/*
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * This code is free software; you can redistribute it and/or modify it
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * under the terms of the GNU General Public License version 2 only, as
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * published by the Free Software Foundation. Oracle designates this
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * particular file as subject to the "Classpath" exception as provided
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * by Oracle in the LICENSE file that accompanied this code.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * This code is distributed in the hope that it will be useful, but WITHOUT
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * version 2 for more details (a copy is included in the LICENSE file that
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * accompanied this code).
a72f7ea693101cc48bafbb4db6bb437d828011c4ql *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * You should have received a copy of the GNU General Public License version
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * 2 along with this work; if not, write to the Free Software Foundation,
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * or visit www.oracle.com if you need additional information or have any
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * questions.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql */
a72f7ea693101cc48bafbb4db6bb437d828011c4ql
a72f7ea693101cc48bafbb4db6bb437d828011c4qlpackage sun.tools.jstat;
a72f7ea693101cc48bafbb4db6bb437d828011c4ql
a72f7ea693101cc48bafbb4db6bb437d828011c4qlimport sun.jvmstat.monitor.*;
a72f7ea693101cc48bafbb4db6bb437d828011c4ql
a72f7ea693101cc48bafbb4db6bb437d828011c4ql/**
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * A class for applying an OptionFormat to a particular context, the context
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * of the available Instrumentation for a monitorable Java Virtual Machine.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * @author Brian Doherty
a72f7ea693101cc48bafbb4db6bb437d828011c4ql * @since 1.5
9aa73b6813b3fd35e78fcc44fd17535e765e504cQin Michael Li */
a72f7ea693101cc48bafbb4db6bb437d828011c4qlpublic class OptionOutputFormatter implements OutputFormatter {
9aa73b6813b3fd35e78fcc44fd17535e765e504cQin Michael Li private OptionFormat format;
a72f7ea693101cc48bafbb4db6bb437d828011c4ql private String header;
9aa73b6813b3fd35e78fcc44fd17535e765e504cQin Michael Li private MonitoredVm vm;
9aa73b6813b3fd35e78fcc44fd17535e765e504cQin Michael Li
a72f7ea693101cc48bafbb4db6bb437d828011c4ql public OptionOutputFormatter(MonitoredVm vm, OptionFormat format)
9aa73b6813b3fd35e78fcc44fd17535e765e504cQin Michael Li throws MonitorException {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer this.vm = vm;
a72f7ea693101cc48bafbb4db6bb437d828011c4ql this.format = format;
a72f7ea693101cc48bafbb4db6bb437d828011c4ql resolve();
a72f7ea693101cc48bafbb4db6bb437d828011c4ql }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql
a72f7ea693101cc48bafbb4db6bb437d828011c4ql private void resolve() throws MonitorException {
a72f7ea693101cc48bafbb4db6bb437d828011c4ql ExpressionEvaluator ee = new ExpressionResolver(vm);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql SymbolResolutionClosure ec = new SymbolResolutionClosure(ee);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql format.apply(ec);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql
a72f7ea693101cc48bafbb4db6bb437d828011c4ql public String getHeader() throws MonitorException {
a72f7ea693101cc48bafbb4db6bb437d828011c4ql if (header == null) {
a72f7ea693101cc48bafbb4db6bb437d828011c4ql HeaderClosure hc = new HeaderClosure();
a72f7ea693101cc48bafbb4db6bb437d828011c4ql format.apply(hc);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql header = hc.getHeader();
a72f7ea693101cc48bafbb4db6bb437d828011c4ql }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql return header;
a72f7ea693101cc48bafbb4db6bb437d828011c4ql }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql
a72f7ea693101cc48bafbb4db6bb437d828011c4ql public String getRow() throws MonitorException {
a72f7ea693101cc48bafbb4db6bb437d828011c4ql RowClosure rc = new RowClosure(vm);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql format.apply(rc);
a72f7ea693101cc48bafbb4db6bb437d828011c4ql return rc.getRow();
a72f7ea693101cc48bafbb4db6bb437d828011c4ql }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql