Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * http://glassfish.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.jersey.core.header;
 
 
 import java.util.List;
 import java.util.Map;

Common media types and functionality.

Author(s):
Paul.Sandoz@Sun.Com
 
 public class MediaTypes {
     private MediaTypes() { }
 
     public final static MediaType WADL =
             MediaType.valueOf("application/vnd.sun.wadl+xml");
 
     public final static MediaType FAST_INFOSET =
             MediaType.valueOf("application/fastinfoset");
 
     public final static boolean typeEquals(MediaType m1MediaType m2) {
         if (m1 == null || m2 == null)
             return false;
 
         return m1.getSubtype().equalsIgnoreCase(m2.getSubtype()) && m1.getType().equalsIgnoreCase(m2.getType());
     }
 
     public final static boolean intersects(List<? extends MediaTypeml1List<? extends MediaTypeml2) {
         for (MediaType m1ml1) {
             for (MediaType m2 : ml2) {
                 if (MediaTypes.typeEquals(m1m2))
                     return true;
             }
         }
         return false;
     }

    
Comparator for media types.

x/y < x/* < *\\/*

 
     public static final Comparator<MediaTypeMEDIA_TYPE_COMPARATOR = new Comparator<MediaType>() {
         public int compare(MediaType o1MediaType o2) {
             if (o1.getType().equals("*") && !o2.getType().equals("*")) {
                 return 1;
             }
 
             if (o2.getType().equals("*") && !o1.getType().equals("*")) {
                 return -1;
            }
            if (o1.getSubtype().equals("*") && !o2.getSubtype().equals("*")) {
                return 1;
            }
            if (o2.getSubtype().equals("*") && !o1.getSubtype().equals("*")) {
                return -1;
            }
            return 0;
        }
    };

    
Get the most specific media type from a pair of media types. The most specific media type is the media type from the pair that has least wild cards present.

Parameters:
m1 the first media type
m2 the second media type
Returns:
the most specific media type. If the media types are equally specific then the first media type is returned.
    public static final MediaType mostSpecific(MediaType m1MediaType m2) {
        if (m1.isWildcardSubtype() && !m2.isWildcardSubtype())
            return m2;
        if (m1.isWildcardType() && !m2.isWildcardType())
            return m2;
        return m1;
    }

    
Comparator for lists of media types.

The least specific content type of each list is obtained and then compared using MEDIA_TYPE_COMPARATOR.

Assumes each list is already ordered according to MEDIA_TYPE_COMPARATOR and therefore the least specific media type is at the end of the list.

    public static final Comparator<List<? extends MediaType>> MEDIA_TYPE_LIST_COMPARATOR =
            new Comparator<List<? extends MediaType>>() {
                public int compare(List<? extends MediaTypeo1List<? extends MediaTypeo2) {
                    return .compare(getLeastSpecific(o1), getLeastSpecific(o2));
                }
                public MediaType getLeastSpecific(List<? extends MediaTypel) {
                    return l.get(l.size() - 1);
                }
            };

    
The general media type corresponding to *\\/*.
    public static final MediaType GENERAL_MEDIA_TYPE = new MediaType("*""*");

    
A singleton list containing the general media type.
    public static final List<MediaTypeGENERAL_MEDIA_TYPE_LIST =
            createMediaTypeList();
    private static List<MediaTypecreateMediaTypeList() {
        return Collections.singletonList();
    }


    
The general acceptable media type corresponding to *\\/*.
    public static final AcceptableMediaType GENERAL_ACCEPT_MEDIA_TYPE =
            new AcceptableMediaType("*""*");

    
A singleton list containing the general acceptable media type.
    public static final List<AcceptableMediaTypeGENERAL_ACCEPT_MEDIA_TYPE_LIST =
            createAcceptMediaTypeList();
    private static List<AcceptableMediaTypecreateAcceptMediaTypeList() {
        return Collections.singletonList();
    }

    
Create a list of media type from the javax.ws.rs.Consumes annotation.

Parameters:
mime the Consumes annotation.
Returns:
the list of javax.ws.rs.core.MediaType, ordered according to MEDIA_TYPE_COMPARATOR.
    public static List<MediaTypecreateMediaTypes(Consumes mime) {
        if (mime == null) {
            return ;
        }
        return createMediaTypes(mime.value());
    }

    
Create a list of media type from the Produces annotation.

Parameters:
mime the Produces annotation.
Returns:
the list of javax.ws.rs.core.MediaType, ordered according to MEDIA_TYPE_COMPARATOR.
    public static List<MediaTypecreateMediaTypes(Produces mime) {
        if (mime == null) {
            return ;
        }
        return createMediaTypes(mime.value());
    }

    
Create a list of media type from an array of media types.

Parameters:
mediaTypes the array of meda types.
Returns:
the list of javax.ws.rs.core.MediaType, ordered according to MEDIA_TYPE_COMPARATOR.
    public static List<MediaTypecreateMediaTypes(String[] mediaTypes) {
        List<MediaTypel = new ArrayList<MediaType>();
        try {
            for (String mediaType : mediaTypes) {
                HttpHeaderReader.readMediaTypes(lmediaType);
            }
            Collections.sort(l);
            return l;
        } catch (ParseException ex) {
            throw new IllegalArgumentException(ex);
        }
    }

    
Comparator for lists of quality source media types.
            = new Comparator<QualitySourceMediaType>() {
        public int compare(QualitySourceMediaType o1QualitySourceMediaType o2) {
            int i = o2.getQualitySource() - o1.getQualitySource();
            if (i != 0)
                return i;
            return ..compare(o1o2);
        }
    };

    
A singleton list containing the general media type.
    public static final List<MediaTypeGENERAL_QUALITY_SOURCE_MEDIA_TYPE_LIST =
            createQualitySourceMediaTypeList();
    private static List<MediaTypecreateQualitySourceMediaTypeList() {
        return Collections.<MediaType>singletonList(new QualitySourceMediaType("*""*"));
    }

    
Create a list of quality source media type from the Produces annotation.

Parameters:
mime the Produces annotation.
Returns:
the list of QualitySourceMediaType, ordered according to QUALITY_SOURCE_MEDIA_TYPE_COMPARATOR.
    public static List<MediaTypecreateQualitySourceMediaTypes(Produces mime) {
        if (mime == null || mime.value().length == 0) {
            return ;
        }
        return new ArrayList<MediaType>(createQualitySourceMediaTypes(mime.value()));
    }

    
Create a list of quality source media type from an array of media types.

Parameters:
mediaTypes the array of meda types.
Returns:
the list of QualitySourceMediaType, ordered according to the quality source as the primary key and MEDIA_TYPE_COMPARATOR as the secondary key.
    public static List<QualitySourceMediaTypecreateQualitySourceMediaTypes(String[] mediaTypes) {
        try {
            return HttpHeaderReader.readQualitySourceMediaType(mediaTypes);
        } catch (ParseException ex) {
            throw new IllegalArgumentException(ex);
        }
    }
    private static Map<StringMediaTypemediaTypeCache = new HashMap<StringMediaType>() {
        {
            put("application"new MediaType("application".));
            put("multipart"new MediaType("multipart".));
            put("text"new MediaType("text".));
        }
    };

    
Returns MediaType with wildcard in subtype.

Parameters:
mediaType original MediaType.
Returns:
MediaType with wildcard in subtype.
    public static MediaType getTypeWildCart(MediaType mediaType) {
        MediaType mt = .get(mediaType.getType());
        if(mt == null) {
            mt = new MediaType(mediaType.getType(), .);
        }
        return mt;
    }
New to GrepCode? Check out our FAQ X