001    /** 
002     * 
003     * Copyright 2004 Protique Ltd
004     * 
005     * Licensed under the Apache License, Version 2.0 (the "License"); 
006     * you may not use this file except in compliance with the License. 
007     * You may obtain a copy of the License at 
008     * 
009     * http://www.apache.org/licenses/LICENSE-2.0
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS, 
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
014     * See the License for the specific language governing permissions and 
015     * limitations under the License. 
016     * 
017     **/
018    package org.codehaus.activesoap;
019    
020    import org.codehaus.activesoap.handler.SoapHandler;
021    import org.codehaus.activesoap.handler.Policy;
022    import org.codehaus.activesoap.handler.DefaultHandlerRegistry;
023    import org.codehaus.activesoap.soap.Soap12;
024    import org.codehaus.activesoap.soap.SoapVersion;
025    
026    import java.util.Collections;
027    import java.util.HashSet;
028    import java.util.Set;
029    
030    /**
031     * This class represents a SOAP service which is capable of handling
032     * multiple concurrent requests from arbitrary transports.
033     * This service can be configured in strict mode, to handle one exact version of SOAP
034     * or in a more relaxed mode where a best effort will be made to handle any SOAP version
035     * or even pure REST services.
036     *
037     * @version $Revision: 1.11 $
038     */
039    public class SoapService extends RestService {
040    
041        private SoapVersion soapVersion;
042        private Set roles = Collections.synchronizedSet(new HashSet());
043        private Set encodingStyles = Collections.synchronizedSet(new HashSet());
044        private boolean intermediary;
045    
046        public SoapService() {
047            this(Soap12.getInstance());
048        }
049    
050        public SoapService(HandlerRegistry handlerRegistry) {
051            this(handlerRegistry, Soap12.getInstance());
052        }
053    
054        public SoapService(HandlerRegistry handlerRegistry, SoapVersion soapVersion) {
055            super(handlerRegistry);
056            this.soapVersion = soapVersion;
057            init();
058        }
059    
060        public SoapService(SoapVersion soapVersion) {
061            this.soapVersion = soapVersion;
062            init();
063        }
064    
065        private void init() {
066            // register the default SOAP handler
067            setRootHandler(new SoapHandler(soapVersion));
068    
069            // lets auto-default the SOAP-encoding style
070            encodingStyles.add(soapVersion.getSoapEncodingStyle());
071        }
072    
073        /**
074         * Return true if this SOAP node has the given role
075         */
076        public boolean hasRole(String role) {
077            return roles.contains(role);
078        }
079    
080        // Properties
081        //-------------------------------------------------------------------------
082        public boolean isIntermediary() {
083            return intermediary;
084        }
085    
086        public void setIntermediary(boolean intermediary) {
087            this.intermediary = intermediary;
088        }
089    
090        public SoapVersion getSoapVersion() {
091            return soapVersion;
092        }
093    
094        public void setSoapVersion(SoapVersion soapVersion) {
095            this.soapVersion = soapVersion;
096        }
097    
098        public Set getRoles() {
099            return roles;
100        }
101    
102        public void setRoles(Set roles) {
103            this.roles = roles;
104        }
105    
106        public Set getEncodingStyles() {
107            return encodingStyles;
108        }
109    
110        public void setEncodingStyles(Set encodingStyles) {
111            this.encodingStyles = encodingStyles;
112        }
113    
114    }