/** @param node */ public RemoteMethodArg(Node node) throws GrpcException { this.mode = NgParamTypes.getModeVal(XMLUtil.getAttributeValue(node, attrIOMode)); try { this.type = NgParamTypes.getTypeVal(XMLUtil.getAttributeValue(node, attrType)); } catch (NumberFormatException e) { throw new NgXMLReadException(e); } // number of dimension this.nDims = XMLUtil.countChildNode(node, namespaceURI, RemoteMethodArgSubScript.elemSubscript); if (this.nDims == 0) { this.argSubScript = null; // no dimensions } else { // set for dimensions this.argSubScript = new RemoteMethodArgSubScript[this.nDims]; // read information of subscript for (int i = 0; i < this.nDims; i++) { Node subscriptNode = XMLUtil.getChildNode(node, namespaceURI, RemoteMethodArgSubScript.elemSubscript, i); this.argSubScript[i] = new RemoteMethodArgSubScript(subscriptNode); } } // create RemoteMethodInfo for callback if (this.type == NgParamTypes.NG_TYPE_CALLBACK) { this.callbackInfo = new RemoteMethodInfo( XMLUtil.getChildNode(node, namespaceURI, RemoteMethodInfo.elemMethod)); } }