001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements. See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership. The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License. You may obtain a copy of the License at
009     *
010     * http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing,
013     * software distributed under the License is distributed on an
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     * KIND, either express or implied. See the License for the
016     * specific language governing permissions and limitations
017     * under the License.
018     */
019    
020    package javax.xml.ws.soap;
021    
022    import javax.xml.ws.WebServiceException;
023    import javax.xml.ws.WebServiceFeature;
024    
025    public final class MTOMFeature extends WebServiceFeature {
026        public static final String ID = "http://www.w3.org/2004/08/soap/features/http-optimization";
027        
028        protected int threshold;
029        
030        public MTOMFeature() {
031            this(true, 0);
032        }
033        
034        public MTOMFeature(boolean enabled) {
035            this(enabled, 0);
036        }
037        
038        public MTOMFeature(int threshold) {
039            this(true, threshold);
040        }
041        
042        public MTOMFeature(boolean enabled, int threshold) {
043            super();
044            
045            //TODO NLS enable
046            if (threshold < 0)
047                throw new WebServiceException("MTOM threshold size cannot be less than zero. It was " + threshold);
048            
049            this.enabled   = enabled;
050            this.threshold = threshold;
051        }
052    
053        public int getThreshold() {
054            return threshold;
055        }
056        
057        @Override
058        public String getID() {
059            return ID;
060        }
061    }