16e45e10b03bafdc125c46a4864ba802c24d6bc7duke/* 2f3d11f63158c54533cba0c17f4d5a4b02ebf0de6lana * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 36e45e10b03bafdc125c46a4864ba802c24d6bc7duke * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 46e45e10b03bafdc125c46a4864ba802c24d6bc7duke * 56e45e10b03bafdc125c46a4864ba802c24d6bc7duke * This code is free software; you can redistribute it and/or modify it 66e45e10b03bafdc125c46a4864ba802c24d6bc7duke * under the terms of the GNU General Public License version 2 only, as 72283b9d1d8f03fea8fa192c248b58726a66a6eafohair * published by the Free Software Foundation. Oracle designates this 86e45e10b03bafdc125c46a4864ba802c24d6bc7duke * particular file as subject to the "Classpath" exception as provided 92283b9d1d8f03fea8fa192c248b58726a66a6eafohair * by Oracle in the LICENSE file that accompanied this code. 106e45e10b03bafdc125c46a4864ba802c24d6bc7duke * 116e45e10b03bafdc125c46a4864ba802c24d6bc7duke * This code is distributed in the hope that it will be useful, but WITHOUT 126e45e10b03bafdc125c46a4864ba802c24d6bc7duke * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 136e45e10b03bafdc125c46a4864ba802c24d6bc7duke * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 146e45e10b03bafdc125c46a4864ba802c24d6bc7duke * version 2 for more details (a copy is included in the LICENSE file that 156e45e10b03bafdc125c46a4864ba802c24d6bc7duke * accompanied this code). 166e45e10b03bafdc125c46a4864ba802c24d6bc7duke * 176e45e10b03bafdc125c46a4864ba802c24d6bc7duke * You should have received a copy of the GNU General Public License version 186e45e10b03bafdc125c46a4864ba802c24d6bc7duke * 2 along with this work; if not, write to the Free Software Foundation, 196e45e10b03bafdc125c46a4864ba802c24d6bc7duke * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 206e45e10b03bafdc125c46a4864ba802c24d6bc7duke * 212283b9d1d8f03fea8fa192c248b58726a66a6eafohair * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 222283b9d1d8f03fea8fa192c248b58726a66a6eafohair * or visit www.oracle.com if you need additional information or have any 232283b9d1d8f03fea8fa192c248b58726a66a6eafohair * questions. 246e45e10b03bafdc125c46a4864ba802c24d6bc7duke */ 256e45e10b03bafdc125c46a4864ba802c24d6bc7duke 266e45e10b03bafdc125c46a4864ba802c24d6bc7dukepackage build.tools.jdwpgen; 276e45e10b03bafdc125c46a4864ba802c24d6bc7duke 286e45e10b03bafdc125c46a4864ba802c24d6bc7dukeimport java.util.*; 296e45e10b03bafdc125c46a4864ba802c24d6bc7dukeimport java.io.*; 306e45e10b03bafdc125c46a4864ba802c24d6bc7duke 316e45e10b03bafdc125c46a4864ba802c24d6bc7dukeclass CommandNode extends AbstractCommandNode { 326e45e10b03bafdc125c46a4864ba802c24d6bc7duke 336e45e10b03bafdc125c46a4864ba802c24d6bc7duke void constrain(Context ctx) { 346e45e10b03bafdc125c46a4864ba802c24d6bc7duke if (components.size() == 3) { 35fe1b0a51d18fde0a0a69441aff0e6afc3eb5b1d2martin Node out = components.get(0); 36fe1b0a51d18fde0a0a69441aff0e6afc3eb5b1d2martin Node reply = components.get(1); 37fe1b0a51d18fde0a0a69441aff0e6afc3eb5b1d2martin Node error = components.get(2); 386e45e10b03bafdc125c46a4864ba802c24d6bc7duke if (!(out instanceof OutNode)) { 396e45e10b03bafdc125c46a4864ba802c24d6bc7duke error("Expected 'Out' item, got: " + out); 406e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 416e45e10b03bafdc125c46a4864ba802c24d6bc7duke if (!(reply instanceof ReplyNode)) { 426e45e10b03bafdc125c46a4864ba802c24d6bc7duke error("Expected 'Reply' item, got: " + reply); 436e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 446e45e10b03bafdc125c46a4864ba802c24d6bc7duke if (!(error instanceof ErrorSetNode)) { 456e45e10b03bafdc125c46a4864ba802c24d6bc7duke error("Expected 'ErrorSet' item, got: " + error); 466e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 476e45e10b03bafdc125c46a4864ba802c24d6bc7duke } else if (components.size() == 1) { 48fe1b0a51d18fde0a0a69441aff0e6afc3eb5b1d2martin Node evt = components.get(0); 496e45e10b03bafdc125c46a4864ba802c24d6bc7duke if (!(evt instanceof EventNode)) { 506e45e10b03bafdc125c46a4864ba802c24d6bc7duke error("Expected 'Event' item, got: " + evt); 516e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 526e45e10b03bafdc125c46a4864ba802c24d6bc7duke } else { 536e45e10b03bafdc125c46a4864ba802c24d6bc7duke error("Command must have Out and Reply items or ErrorSet item"); 546e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 556e45e10b03bafdc125c46a4864ba802c24d6bc7duke super.constrain(ctx); 566e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 576e45e10b03bafdc125c46a4864ba802c24d6bc7duke 586e45e10b03bafdc125c46a4864ba802c24d6bc7duke void genJavaClassSpecifics(PrintWriter writer, int depth) { 596e45e10b03bafdc125c46a4864ba802c24d6bc7duke indent(writer, depth); 606e45e10b03bafdc125c46a4864ba802c24d6bc7duke writer.println("static final int COMMAND = " + 616e45e10b03bafdc125c46a4864ba802c24d6bc7duke nameNode.value() + ";"); 626e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 636e45e10b03bafdc125c46a4864ba802c24d6bc7duke 646e45e10b03bafdc125c46a4864ba802c24d6bc7duke void genJava(PrintWriter writer, int depth) { 656e45e10b03bafdc125c46a4864ba802c24d6bc7duke genJavaClass(writer, depth); 666e45e10b03bafdc125c46a4864ba802c24d6bc7duke } 676e45e10b03bafdc125c46a4864ba802c24d6bc7duke} 68