/*
* Copyright 2012 JBoss Inc
*
* Licensed 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.artificer.common.visitors;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Actor;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.AttributeDeclaration;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Binding;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BindingOperation;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BindingOperationFault;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BindingOperationInput;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BindingOperationOutput;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Choreography;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ChoreographyProcess;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Collaboration;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.CollaborationProcess;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ComplexTypeDeclaration;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Composition;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Document;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Effect;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Element;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ElementDeclaration;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Event;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ExtendedArtifactType;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ExtendedDocument;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Fault;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.InformationType;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Message;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Operation;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.OperationInput;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.OperationOutput;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Orchestration;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.OrchestrationProcess;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Organization;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Part;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Policy;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.PolicyAttachment;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.PolicyDocument;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.PolicyExpression;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.PolicySubject;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Port;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.PortType;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Service;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ServiceComposition;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ServiceContract;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ServiceEndpoint;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ServiceInstance;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ServiceInterface;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.ServiceOperation;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.SimpleTypeDeclaration;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.SoapAddress;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.SoapBinding;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Task;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.WsdlDocument;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.WsdlExtension;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.WsdlService;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.XmlDocument;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.XsdDocument;
/**
* An interface for visiting an S-RAMP artifact. This interface contains a visit method
* for each type of artifact defined by S-RAMP.
*
* @author eric.wittmann@redhat.com
*/
public interface ArtifactVisitor {
// Core
public void visit(Document artifact);
public void visit(XmlDocument artifact);
// XSD
public void visit(XsdDocument artifact);
public void visit(AttributeDeclaration artifact);
public void visit(ElementDeclaration artifact);
public void visit(SimpleTypeDeclaration artifact);
public void visit(ComplexTypeDeclaration artifact);
// Policy
public void visit(PolicyDocument artifact);
public void visit(PolicyExpression artifact);
public void visit(PolicyAttachment artifact);
// SOAP WSDL
public void visit(SoapAddress artifact);
public void visit(SoapBinding artifact);
// WSDL
public void visit(WsdlDocument artifact);
public void visit(WsdlService artifact);
public void visit(Port artifact);
public void visit(WsdlExtension artifact);
public void visit(Part artifact);
public void visit(Message artifact);
public void visit(Fault artifact);
public void visit(PortType artifact);
public void visit(Operation artifact);
public void visit(OperationInput artifact);
public void visit(OperationOutput artifact);
public void visit(Binding artifact);
public void visit(BindingOperation artifact);
public void visit(BindingOperationInput artifact);
public void visit(BindingOperationOutput artifact);
public void visit(BindingOperationFault artifact);
// Service Implementation
public void visit(Organization artifact);
public void visit(ServiceEndpoint artifact);
public void visit(ServiceInstance artifact);
public void visit(ServiceOperation artifact);
// Extended
public void visit(ExtendedArtifactType artifact);
public void visit(ExtendedDocument artifact);
// SOA
public void visit(Actor artifact);
public void visit(Choreography artifact);
public void visit(ChoreographyProcess artifact);
public void visit(Collaboration artifact);
public void visit(CollaborationProcess artifact);
public void visit(Composition artifact);
public void visit(Effect artifact);
public void visit(Element artifact);
public void visit(Event artifact);
public void visit(InformationType artifact);
public void visit(Orchestration artifact);
public void visit(OrchestrationProcess artifact);
public void visit(Policy artifact);
public void visit(PolicySubject artifact);
public void visit(org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Process artifact);
public void visit(Service artifact);
public void visit(ServiceContract artifact);
public void visit(ServiceComposition artifact);
public void visit(ServiceInterface artifact);
public void visit(org.oasis_open.docs.s_ramp.ns.s_ramp_v1.System artifact);
public void visit(Task artifact);
}