public static JsonNode buildBeanForInput()

in taverna-wsdl-activity/src/main/java/org/apache/taverna/activities/wsdl/xmlsplitter/XMLSplitterConfigurationBeanBuilder.java [62:121]


	public static JsonNode buildBeanForInput(Element element) throws JDOMException, IOException {
		ObjectNode bean = JSON_NODE_FACTORY.objectNode();
		ArrayNode inputDefinitions = bean.arrayNode();
		bean.put("inputPorts", inputDefinitions);
		ArrayNode outputDefinitions = bean.arrayNode();
		bean.put("outputPorts", outputDefinitions);

		TypeDescriptor descriptor = XMLSplitterSerialisationHelper
				.extensionXMLToTypeDescriptor(element);
		ObjectNode outBean = outputDefinitions.addObject();
		outBean.put("name", "output");
		outBean.put("mimeType", "'text/xml'");
		outBean.put("depth", 0);
		outBean.put("granularDepth", 0);

		if (descriptor instanceof ComplexTypeDescriptor) {
			List<TypeDescriptor> elements = ((ComplexTypeDescriptor) descriptor).getElements();
			String[] names = new String[elements.size()];
			Class<?>[] types = new Class<?>[elements.size()];
			TypeDescriptor.retrieveSignature(elements, names, types);
			for (int i = 0; i < names.length; i++) {
				ObjectNode portBean = inputDefinitions.addObject();
				portBean.put("name", names[i]);
				portBean.put("mimeType", TypeDescriptor.translateJavaType(types[i]));
				portBean.put("depth", depthForDescriptor(elements.get(i)));
			}

			List<TypeDescriptor> attributes = ((ComplexTypeDescriptor) descriptor).getAttributes();
			String[] elementNames = Arrays.copyOf(names, names.length);
			Arrays.sort(elementNames);
			String[] attributeNames = new String[attributes.size()];
			Class<?>[] attributeTypes = new Class<?>[attributes.size()];
			TypeDescriptor.retrieveSignature(attributes, attributeNames, attributeTypes);
			for (int i = 0; i < attributeNames.length; i++) {
				ObjectNode portBean = inputDefinitions.addObject();
				if (Arrays.binarySearch(elementNames, attributeNames[i]) < 0) {
					portBean.put("name", attributeNames[i]);
				} else {
					portBean.put("name", "1" + attributeNames[i]);
				}
				portBean.put("mimeType", TypeDescriptor.translateJavaType(attributeTypes[i]));
				portBean.put("depth", depthForDescriptor(attributes.get(i)));
			}
		} else if (descriptor instanceof ArrayTypeDescriptor) {
			ObjectNode portBean = inputDefinitions.addObject();
			portBean.put("name", descriptor.getName());

			if (((ArrayTypeDescriptor) descriptor).getElementType() instanceof BaseTypeDescriptor) {
				portBean.put("mimeType", "l('text/plain')");
			} else {
				portBean.put("mimeType", "l('text/xml')");
			}
			portBean.put("depth", 1);
		}

		String wrappedType = new XMLOutputter().outputString(element);
		bean.put("wrappedType", wrappedType);

		return bean;
	}