--- old/test/testlibrary/whitebox/Makefile 2014-12-12 13:01:27.818428858 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,63 +0,0 @@ -# -# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# -# - -ifneq "x$(ALT_BOOTDIR)" "x" - BOOTDIR := $(ALT_BOOTDIR) -endif - -ifeq "x$(BOOTDIR)" "x" - JDK_HOME := $(shell dirname $(shell which java))/.. -else - JDK_HOME := $(BOOTDIR) -endif - -SRC_DIR = ./ -BUILD_DIR = build -OUTPUT_DIR = $(BUILD_DIR)/classes - -JAVAC = $(JDK_HOME)/bin/javac -JAR = $(JDK_HOME)/bin/jar - -SRC_FILES = $(shell find $(SRC_DIR) -name '*.java') - -.PHONY: filelist clean cleantmp - -all: wb.jar cleantmp - -wb.jar: filelist - @mkdir -p $(OUTPUT_DIR) - $(JAVAC) -sourcepath $(SRC_DIR) -d $(OUTPUT_DIR) -cp $(OUTPUT_DIR) @filelist - $(JAR) cf wb.jar -C $(OUTPUT_DIR) . - @rm -rf $(OUTPUT_DIR) - -filelist: $(SRC_FILES) - @rm -f $@ - @echo $(SRC_FILES) > $@ - -clean: cleantmp - @rm -rf wb.jar - -cleantmp: - @rm -rf filelist - @rm -rf $(BUILD_DIR) --- old/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java 2014-12-12 13:01:27.994428863 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,251 +0,0 @@ -/* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -package sun.hotspot; - -import java.lang.reflect.Executable; -import java.util.Arrays; -import java.util.List; -import java.util.function.Function; -import java.util.stream.Stream; -import java.security.BasicPermission; - -import sun.hotspot.parser.DiagnosticCommand; - -public class WhiteBox { - - @SuppressWarnings("serial") - public static class WhiteBoxPermission extends BasicPermission { - public WhiteBoxPermission(String s) { - super(s); - } - } - - private WhiteBox() {} - private static final WhiteBox instance = new WhiteBox(); - private static native void registerNatives(); - - /** - * Returns the singleton WhiteBox instance. - * - * The returned WhiteBox object should be carefully guarded - * by the caller, since it can be used to read and write data - * at arbitrary memory addresses. It must never be passed to - * untrusted code. - */ - public synchronized static WhiteBox getWhiteBox() { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new WhiteBoxPermission("getInstance")); - } - return instance; - } - - static { - registerNatives(); - } - - // Get the maximum heap size supporting COOPs - public native long getCompressedOopsMaxHeapSize(); - // Arguments - public native void printHeapSizes(); - - // Memory - public native long getObjectAddress(Object o); - public native int getHeapOopSize(); - public native int getVMPageSize(); - public native boolean isObjectInOldGen(Object o); - public native long getObjectSize(Object o); - - // Runtime - // Make sure class name is in the correct format - public boolean isClassAlive(String name) { - return isClassAlive0(name.replace('.', '/')); - } - private native boolean isClassAlive0(String name); - - // JVMTI - public native void addToBootstrapClassLoaderSearch(String segment); - public native void addToSystemClassLoaderSearch(String segment); - - // G1 - public native boolean g1InConcurrentMark(); - public native boolean g1IsHumongous(Object o); - public native long g1NumFreeRegions(); - public native int g1RegionSize(); - public native Object[] parseCommandLine(String commandline, char delim, DiagnosticCommand[] args); - - // NMT - public native long NMTMalloc(long size); - public native void NMTFree(long mem); - public native long NMTReserveMemory(long size); - public native void NMTCommitMemory(long addr, long size); - public native void NMTUncommitMemory(long addr, long size); - public native void NMTReleaseMemory(long addr, long size); - public native long NMTMallocWithPseudoStack(long size, int index); - public native boolean NMTIsDetailSupported(); - public native boolean NMTChangeTrackingLevel(); - public native int NMTGetHashSize(); - - // Compiler - public native void deoptimizeAll(); - public boolean isMethodCompiled(Executable method) { - return isMethodCompiled(method, false /*not osr*/); - } - public native boolean isMethodCompiled(Executable method, boolean isOsr); - public boolean isMethodCompilable(Executable method) { - return isMethodCompilable(method, -1 /*any*/); - } - public boolean isMethodCompilable(Executable method, int compLevel) { - return isMethodCompilable(method, compLevel, false /*not osr*/); - } - public native boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr); - public native boolean isMethodQueuedForCompilation(Executable method); - public int deoptimizeMethod(Executable method) { - return deoptimizeMethod(method, false /*not osr*/); - } - public native int deoptimizeMethod(Executable method, boolean isOsr); - public void makeMethodNotCompilable(Executable method) { - makeMethodNotCompilable(method, -1 /*any*/); - } - public void makeMethodNotCompilable(Executable method, int compLevel) { - makeMethodNotCompilable(method, compLevel, false /*not osr*/); - } - public native void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr); - public int getMethodCompilationLevel(Executable method) { - return getMethodCompilationLevel(method, false /*not ost*/); - } - public native int getMethodCompilationLevel(Executable method, boolean isOsr); - public native boolean testSetDontInlineMethod(Executable method, boolean value); - public int getCompileQueuesSize() { - return getCompileQueueSize(-1 /*any*/); - } - public native int getCompileQueueSize(int compLevel); - public native boolean testSetForceInlineMethod(Executable method, boolean value); - public boolean enqueueMethodForCompilation(Executable method, int compLevel) { - return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/); - } - public native boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci); - public native void clearMethodState(Executable method); - public native void lockCompilation(); - public native void unlockCompilation(); - public native int getMethodEntryBci(Executable method); - public native Object[] getNMethod(Executable method, boolean isOsr); - public native long allocateCodeBlob(int size, int type); - public long allocateCodeBlob(long size, int type) { - int intSize = (int) size; - if ((long) intSize != size || size < 0) { - throw new IllegalArgumentException( - "size argument has illegal value " + size); - } - return allocateCodeBlob( intSize, type); - } - public native void freeCodeBlob(long addr); - public void forceNMethodSweep() { - try { - forceNMethodSweep0().join(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - } - public native Thread forceNMethodSweep0(); - public native Object[] getCodeHeapEntries(int type); - public native int getCompilationActivityMode(); - public native Object[] getCodeBlob(long addr); - - // Intered strings - public native boolean isInStringTable(String str); - - // Memory - public native void readReservedMemory(); - public native long allocateMetaspace(ClassLoader classLoader, long size); - public native void freeMetaspace(ClassLoader classLoader, long addr, long size); - public native long incMetaspaceCapacityUntilGC(long increment); - public native long metaspaceCapacityUntilGC(); - - // Force Young GC - public native void youngGC(); - - // Force Full GC - public native void fullGC(); - - // Method tries to start concurrent mark cycle. - // It returns false if CM Thread is always in concurrent cycle. - public native boolean g1StartConcMarkCycle(); - - // Tests on ReservedSpace/VirtualSpace classes - public native int stressVirtualSpaceResize(long reservedSpaceSize, long magnitude, long iterations); - public native void runMemoryUnitTests(); - public native void readFromNoaccessArea(); - public native long getThreadStackSize(); - public native long getThreadRemainingStackSize(); - - // CPU features - public native String getCPUFeatures(); - - // Native extensions - public native long getHeapUsageForContext(int context); - public native long getHeapRegionCountForContext(int context); - public native int getContextForObject(Object obj); - public native void printRegionInfo(int context); - - // VM flags - public native boolean isConstantVMFlag(String name); - public native boolean isLockedVMFlag(String name); - public native void setBooleanVMFlag(String name, boolean value); - public native void setIntxVMFlag(String name, long value); - public native void setUintxVMFlag(String name, long value); - public native void setUint64VMFlag(String name, long value); - public native void setSizeTVMFlag(String name, long value); - public native void setStringVMFlag(String name, String value); - public native void setDoubleVMFlag(String name, double value); - public native Boolean getBooleanVMFlag(String name); - public native Long getIntxVMFlag(String name); - public native Long getUintxVMFlag(String name); - public native Long getUint64VMFlag(String name); - public native Long getSizeTVMFlag(String name); - public native String getStringVMFlag(String name); - public native Double getDoubleVMFlag(String name); - private final List> flagsGetters = Arrays.asList( - this::getBooleanVMFlag, this::getIntxVMFlag, this::getUintxVMFlag, - this::getUint64VMFlag, this::getSizeTVMFlag, this::getStringVMFlag, - this::getDoubleVMFlag); - - public Object getVMFlag(String name) { - return flagsGetters.stream() - .map(f -> f.apply(name)) - .filter(x -> x != null) - .findAny() - .orElse(null); - } - public native int getOffsetForName0(String name); - public int getOffsetForName(String name) throws Exception { - int offset = getOffsetForName0(name); - if (offset == -1) { - throw new RuntimeException(name + " not found"); - } - return offset; - } - -} --- old/test/testlibrary/whitebox/sun/hotspot/code/BlobType.java 2014-12-12 13:01:28.162428868 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -package sun.hotspot.code; - -import java.lang.management.ManagementFactory; -import java.lang.management.MemoryPoolMXBean; -import java.util.EnumSet; - -import sun.hotspot.WhiteBox; - -public enum BlobType { - // Execution level 1 and 4 (non-profiled) nmethods (including native nmethods) - MethodNonProfiled(0, "CodeHeap 'non-profiled nmethods'"), - // Execution level 2 and 3 (profiled) nmethods - MethodProfiled(1, "CodeHeap 'profiled nmethods'"), - // Non-nmethods like Buffers, Adapters and Runtime Stubs - NonNMethod(2, "CodeHeap 'non-nmethods'") { - @Override - public boolean allowTypeWhenOverflow(BlobType type) { - return super.allowTypeWhenOverflow(type) - || type == BlobType.MethodNonProfiled; - } - }, - // All types (No code cache segmentation) - All(3, "CodeCache"); - - public final int id; - private final String beanName; - - private BlobType(int id, String beanName) { - this.id = id; - this.beanName = beanName; - } - - public MemoryPoolMXBean getMemoryPool() { - for (MemoryPoolMXBean bean : ManagementFactory.getMemoryPoolMXBeans()) { - String name = bean.getName(); - if (beanName.equals(name)) { - return bean; - } - } - return null; - } - - public boolean allowTypeWhenOverflow(BlobType type) { - return type == this; - } - - public static EnumSet getAvailable() { - WhiteBox whiteBox = WhiteBox.getWhiteBox(); - if (!whiteBox.getBooleanVMFlag("SegmentedCodeCache")) { - // only All for non segmented world - return EnumSet.of(All); - } - if (System.getProperty("java.vm.info").startsWith("interpreted ")) { - // only NonNMethod for -Xint - return EnumSet.of(NonNMethod); - } - - EnumSet result = EnumSet.complementOf(EnumSet.of(All)); - if (!whiteBox.getBooleanVMFlag("TieredCompilation") - || whiteBox.getIntxVMFlag("TieredStopAtLevel") <= 1) { - // there is no MethodProfiled in non tiered world or pure C1 - result.remove(MethodProfiled); - } - return result; - } -} --- old/test/testlibrary/whitebox/sun/hotspot/code/CodeBlob.java 2014-12-12 13:01:28.334428873 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -package sun.hotspot.code; - -import sun.hotspot.WhiteBox; - -public class CodeBlob { - private static final WhiteBox WB = WhiteBox.getWhiteBox(); - public static CodeBlob[] getCodeBlobs(BlobType type) { - Object[] obj = WB.getCodeHeapEntries(type.id); - if (obj == null) { - return null; - } - CodeBlob[] result = new CodeBlob[obj.length]; - for (int i = 0, n = result.length; i < n; ++i) { - result[i] = new CodeBlob((Object[]) obj[i]); - } - return result; - } - public static CodeBlob getCodeBlob(long addr) { - Object[] obj = WB.getCodeBlob(addr); - if (obj == null) { - return null; - } - return new CodeBlob(obj); - } - protected CodeBlob(Object[] obj) { - assert obj.length == 3; - name = (String) obj[0]; - size = (Integer) obj[1]; - code_blob_type = BlobType.values()[(Integer) obj[2]]; - assert code_blob_type.id == (Integer) obj[2]; - } - public final String name; - public final int size; - public final BlobType code_blob_type; - - @Override - public String toString() { - return "CodeBlob{" - + "name=" + name - + ", size=" + size - + ", code_blob_type=" + code_blob_type - + '}'; - } -} --- old/test/testlibrary/whitebox/sun/hotspot/code/NMethod.java 2014-12-12 13:01:28.506428878 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -package sun.hotspot.code; - -import java.lang.reflect.Executable; -import sun.hotspot.WhiteBox; - -public class NMethod extends CodeBlob { - private static final WhiteBox wb = WhiteBox.getWhiteBox(); - public static NMethod get(Executable method, boolean isOsr) { - Object[] obj = wb.getNMethod(method, isOsr); - return obj == null ? null : new NMethod(obj); - } - private NMethod(Object[] obj) { - super((Object[])obj[0]); - assert obj.length == 4; - comp_level = (Integer) obj[1]; - insts = (byte[]) obj[2]; - compile_id = (Integer) obj[3]; - } - public final byte[] insts; - public final int comp_level; - public final int compile_id; - - @Override - public String toString() { - return "NMethod{" - + super.toString() - + ", insts=" + insts - + ", comp_level=" + comp_level - + ", compile_id=" + compile_id - + '}'; - } -} --- old/test/testlibrary/whitebox/sun/hotspot/cpuinfo/CPUInfo.java 2014-12-12 13:01:28.678428883 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -package sun.hotspot.cpuinfo; - -import java.util.List; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.regex.Pattern; -import java.util.regex.Matcher; - -import sun.hotspot.WhiteBox; - -/** - * Information about CPU on test box. - * - * CPUInfo uses WhiteBox to gather information, - * so WhiteBox class should be added to bootclasspath - * and option -XX:+WhiteBoxAPI should expclicetly - * specified on command line. - */ -public class CPUInfo { - - private static final List features; - private static final String additionalCPUInfo; - - static { - WhiteBox wb = WhiteBox.getWhiteBox(); - - Pattern additionalCPUInfoRE = - Pattern.compile("([^(]*\\([^)]*\\)[^,]*),\\s*"); - - String cpuFeaturesString = wb.getCPUFeatures(); - Matcher matcher = additionalCPUInfoRE.matcher(cpuFeaturesString); - if (matcher.find()) { - additionalCPUInfo = matcher.group(1); - } else { - additionalCPUInfo = ""; - } - String splittedFeatures[] = matcher.replaceAll("").split("(, )| "); - - features = Collections.unmodifiableList(Arrays. - asList(splittedFeatures)); - } - - /** - * Get additional information about CPU. - * For example, on X86 in will be family/model/stepping - * and number of cores. - * - * @return additional CPU info - */ - public static String getAdditionalCPUInfo() { - return additionalCPUInfo; - } - - /** - * Get all known features supported by CPU. - * - * @return unmodifiable list with names of all known features - * supported by CPU. - */ - public static List getFeatures() { - return features; - } - - /** - * Check if some feature is supported by CPU. - * - * @param feature Name of feature to be tested. - * @return true if tested feature is supported by CPU. - */ - public static boolean hasFeature(String feature) { - return features.contains(feature.toLowerCase()); - } -} --- old/test/testlibrary/whitebox/sun/hotspot/parser/DiagnosticCommand.java 2014-12-12 13:01:28.866428889 +0100 +++ /dev/null 2014-12-12 08:51:07.786332012 +0100 @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sun.hotspot.parser; - -public class DiagnosticCommand { - - public enum DiagnosticArgumentType { - JLONG, BOOLEAN, STRING, NANOTIME, STRINGARRAY, MEMORYSIZE - } - - private String name; - private String desc; - private DiagnosticArgumentType type; - private boolean mandatory; - private String defaultValue; - private boolean argument; - - public DiagnosticCommand(String name, String desc, DiagnosticArgumentType type, - boolean mandatory, String defaultValue) { - this(name, desc, type, false, mandatory, defaultValue); - } - - public DiagnosticCommand(String name, String desc, DiagnosticArgumentType type, - boolean argument, boolean mandatory, String defaultValue) { - this.name = name; - this.desc = desc; - this.type = type; - this.mandatory = mandatory; - this.defaultValue = defaultValue; - this.argument = argument; - } - - public String getName() { - return name; - } - - public String getDesc() { - return desc; - } - - public DiagnosticArgumentType getType() { - return type; - } - - public boolean isMandatory() { - return mandatory; - } - - public boolean isArgument() { - return argument; - } - - public String getDefaultValue() { - return defaultValue; - } -}