001    package org.apache.myfaces.tobago.util;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one or more
005     * contributor license agreements.  See the NOTICE file distributed with
006     * this work for additional information regarding copyright ownership.
007     * The ASF licenses this file to You under the Apache License, Version 2.0
008     * (the "License"); you may not use this file except in compliance with
009     * the License.  You may obtain a copy of the License at
010     *
011     *      http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing, software
014     * distributed under the License is distributed on an "AS IS" BASIS,
015     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    /*
021     * Created by IntelliJ IDEA.
022     * User: bommel
023     * Date: Oct 30, 2006
024     * Time: 10:26:27 PM
025     */
026    public class ContentType {
027      private String primaryType;
028      private String subType;
029    
030      public ContentType(String contentType) {
031        parse(contentType);
032      }
033    
034      private void parse(String contentType) {
035        // TODO parse Parameter
036        String[] values = contentType.split("/");
037        if (values.length == 2) {
038          primaryType = values[0];
039          subType = values[1];
040        } else {
041          throw new IllegalArgumentException("ContentType '" + contentType + "' not recognized.");
042        }
043      }
044    
045      public String getPrimaryType() {
046        return primaryType;
047      }
048    
049      public String getSubType() {
050        return subType;
051      }
052    
053      public boolean match(ContentType contentType) {
054        return primaryType.equalsIgnoreCase(contentType.getPrimaryType())
055            && ("*".equals(subType) || subType.equalsIgnoreCase(contentType.getSubType()));
056      }
057    
058      public String toString() {
059        return primaryType+"/"+subType;
060      }
061    
062      public static ContentType valueOf(String s) {
063        return new ContentType(s);
064      }
065    }