1 /* 2 * ==================================================================== 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * ==================================================================== 20 * 21 * This software consists of voluntary contributions made by many 22 * individuals on behalf of the Apache Software Foundation. For more 23 * information on the Apache Software Foundation, please see 24 * <http://www.apache.org/>. 25 * 26 */ 27 28 package ch.boye.httpclientandroidlib.entity.mime.content; 29 30 import java.nio.charset.Charset; 31 32 import ch.boye.httpclientandroidlib.entity.ContentType; 33 import ch.boye.httpclientandroidlib.util.Args; 34 35 /** 36 * 37 * @since 4.0 38 */ 39 public abstract class AbstractContentBody implements ContentBody { 40 41 private final ContentType contentType; 42 43 /** 44 * @since 4.3 45 */ AbstractContentBody(final ContentType contentType)46 public AbstractContentBody(final ContentType contentType) { 47 super(); 48 Args.notNull(contentType, "Content type"); 49 this.contentType = contentType; 50 } 51 52 /** 53 * @deprecated (4.3) use {@link AbstractContentBody#AbstractContentBody(ContentType)} 54 */ 55 @Deprecated AbstractContentBody(final String mimeType)56 public AbstractContentBody(final String mimeType) { 57 this(ContentType.parse(mimeType)); 58 } 59 60 /** 61 * @since 4.3 62 */ getContentType()63 public ContentType getContentType() { 64 return this.contentType; 65 } 66 getMimeType()67 public String getMimeType() { 68 return this.contentType.getMimeType(); 69 } 70 getMediaType()71 public String getMediaType() { 72 final String mimeType = this.contentType.getMimeType(); 73 final int i = mimeType.indexOf('/'); 74 if (i != -1) { 75 return mimeType.substring(0, i); 76 } else { 77 return mimeType; 78 } 79 } 80 getSubType()81 public String getSubType() { 82 final String mimeType = this.contentType.getMimeType(); 83 final int i = mimeType.indexOf('/'); 84 if (i != -1) { 85 return mimeType.substring(i + 1); 86 } else { 87 return null; 88 } 89 } 90 getCharset()91 public String getCharset() { 92 final Charset charset = this.contentType.getCharset(); 93 return charset != null ? charset.name() : null; 94 } 95 96 } 97