/** * This file is part of ObjectFabric (http://objectfabric.org). * * ObjectFabric is licensed under the Apache License, Version 2.0, the terms * of which may be found at http://www.apache.org/licenses/LICENSE-2.0.html. * * Copyright ObjectFabric Inc. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ package org.objectfabric; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @XmlType(name = "Method") public class MethodDef extends ValueSetDef { @XmlElement(name = "Argument") public java.util.List<ArgumentDef> Arguments = new java.util.ArrayList<ArgumentDef>(); public ReturnValueDef ReturnValue = new ReturnValueDef(); private int _index = -1; public MethodDef() { this(null, null); } public MethodDef(String name, String description) { super(name, description); ReturnValue.Type = "void"; } int indexInClass() { return _index; } void setIndexInClass(int value) { Debug.assertAlways(_index == -1 || value == _index); _index = value; } @Override String actualName(ObjectModelDef model) { return "Method" + model.allMethods().indexOf(this); } String nameWithRightCaps(GeneratorBase gen) { return gen.isJava() ? Utils.getWithFirstLetterDown(Name) : Utils.getWithFirstLetterUp(Name); } @Override TypeDef parent() { return null; } @Override ClassDef parentGeneratedClass(ObjectModelDef model) { return null; } String fullType(GeneratorBase generator) { String model = generator.objectModel().fullNameNonAbstract(); int globalIndex = generator.objectModel().allMethods().indexOf(this); return model + ".Method" + globalIndex; } @Override List<ValueDef> createValues() { List<ValueDef> values = new List<ValueDef>(); for (int i = 0; i < Arguments.size(); i++) values.add(Arguments.get(i)); if (ReturnValue.type().otherClass() != Platform.get().voidClass()) values.add(ReturnValue); values.add(new ValueDef(new TypeDef(Platform.get().stringClass()), "_error", "")); return values; } }