/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.tuscany.sca.domain.model.xml; import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import org.apache.tuscany.sca.assembly.AssemblyFactory; import org.apache.tuscany.sca.assembly.Binding; import org.apache.tuscany.sca.assembly.Callback; import org.apache.tuscany.sca.assembly.Component; import org.apache.tuscany.sca.assembly.ComponentProperty; import org.apache.tuscany.sca.assembly.ComponentReference; import org.apache.tuscany.sca.assembly.ComponentService; import org.apache.tuscany.sca.assembly.Composite; import org.apache.tuscany.sca.assembly.CompositeReference; import org.apache.tuscany.sca.assembly.CompositeService; import org.apache.tuscany.sca.assembly.ConfiguredOperation; import org.apache.tuscany.sca.assembly.ConstrainingType; import org.apache.tuscany.sca.assembly.Contract; import org.apache.tuscany.sca.assembly.Implementation; import org.apache.tuscany.sca.assembly.OperationsConfigurator; import org.apache.tuscany.sca.assembly.Property; import org.apache.tuscany.sca.assembly.Reference; import org.apache.tuscany.sca.assembly.Service; import org.apache.tuscany.sca.assembly.Wire; import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.ContributionFactory; import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.service.ContributionReadException; import org.apache.tuscany.sca.contribution.service.ContributionResolveException; import org.apache.tuscany.sca.contribution.service.ContributionWriteException; import org.apache.tuscany.sca.domain.model.Contribution; import org.apache.tuscany.sca.domain.model.Domain; import org.apache.tuscany.sca.domain.model.DomainFactory; import org.apache.tuscany.sca.domain.model.Node; import org.apache.tuscany.sca.domain.model.impl.DomainlFactoryImpl; import org.apache.tuscany.sca.interfacedef.InterfaceContract; import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper; import org.apache.tuscany.sca.policy.Intent; import org.apache.tuscany.sca.policy.IntentAttachPointType; import org.apache.tuscany.sca.policy.PolicyFactory; import org.apache.tuscany.sca.policy.PolicySet; import org.apache.tuscany.sca.policy.PolicySetAttachPoint; import org.w3c.dom.Document; /** * A domain processor. * * @version $Rev: 615632 $ $Date: 2008-01-27 19:14:25 +0000 (Sun, 27 Jan 2008) $ */ public class DomainProcessor extends BaseStAXArtifactProcessor implements Constants, StAXArtifactProcessor { DomainFactory domainFactory; /** * Construct a new domain processor * * @param extensionProcessor */ public DomainProcessor(StAXArtifactProcessor extensionProcessor) { domainFactory = new DomainlFactoryImpl(); } /** * Read and XML stream and Construct a new domain * * @param reader the input XML stream */ public Domain read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { Domain domain = null; Node node = null; Contribution contribution = null; QName name; // Read the composite document while (reader.hasNext()) { int event = reader.getEventType(); switch (event) { case START_ELEMENT: name = reader.getName(); if (DOMAIN_QNAME.equals(name)) { // Read a domain = domainFactory.createDomain(); domain.setDomainURI(getString(reader, org.apache.tuscany.sca.assembly.xml.Constants.URI)); } else if (NODE_QNAME.equals(name)) { // Read a node = domainFactory.createNode(); node.setNodeURI(getString(reader, org.apache.tuscany.sca.assembly.xml.Constants.URI)); domain.getNodes().add(node); } else if (COMPOSITE_QNAME.equals(name)) { // Read a QName compositeQName = getQName(reader, org.apache.tuscany.sca.assembly.xml.Constants.NAME); node.setCompositeName(compositeQName); } else if (CONTRIBUTION_QNAME.equals(name)) { // Read a contribution = domainFactory.createContribution(); contribution.setContributionName(getString(reader, org.apache.tuscany.sca.assembly.xml.Constants.NAME)); domain.getContributions().add(contribution); } break; case XMLStreamConstants.CHARACTERS: break; case END_ELEMENT: name = reader.getName(); // Clear current state when reading end element if (NODE_QNAME.equals(name)) { node = null; } else if (CONTRIBUTION_QNAME.equals(name)) { contribution = null; } break; } // Read the next element if (reader.hasNext()) { reader.next(); } } return domain; } public void write(Domain domain, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { } public void resolve(Domain domain, ModelResolver resolver) throws ContributionResolveException { } public QName getArtifactType() { return DOMAIN_QNAME; } public Class getModelType() { return Domain.class; } }