summaryrefslogtreecommitdiffstats
path: root/simple/simple-http/src/main/java/org/simpleframework/http/ContentType.java
diff options
context:
space:
mode:
Diffstat (limited to 'simple/simple-http/src/main/java/org/simpleframework/http/ContentType.java')
-rw-r--r--simple/simple-http/src/main/java/org/simpleframework/http/ContentType.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/simple/simple-http/src/main/java/org/simpleframework/http/ContentType.java b/simple/simple-http/src/main/java/org/simpleframework/http/ContentType.java
new file mode 100644
index 0000000..c62687d
--- /dev/null
+++ b/simple/simple-http/src/main/java/org/simpleframework/http/ContentType.java
@@ -0,0 +1,142 @@
+/*
+ * ContentType.java February 2001
+ *
+ * Copyright (C) 2001, Niall Gallagher <niallg@users.sf.net>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+package org.simpleframework.http;
+
+/**
+ * This provides access to the MIME type parts, that is the primary
+ * type, the secondary type and an optional character set parameter.
+ * The <code>charset</code> parameter is one of many parameters that
+ * can be associated with a MIME type. This however this exposes this
+ * parameter with a typed method.
+ * <p>
+ * The <code>getCharset</code> will return the character encoding the
+ * content type is encoded within. This allows the user of the content
+ * to decode it correctly. Other parameters can be acquired from this
+ * by simply providing the name of the parameter.
+ *
+ * @author Niall Gallagher
+ */
+public interface ContentType {
+
+ /**
+ * This method is used to get the primary and secondary parts
+ * joined together with a "/". This is typically how a content
+ * type is examined. Here convenience is most important, we can
+ * easily compare content types without any parameters.
+ *
+ * @return this returns the primary and secondary types
+ */
+ String getType();
+
+ /**
+ * This sets the primary type to whatever value is in the string
+ * provided is. If the string is null then this will contain a
+ * null string for the primary type of the parameter, which is
+ * likely invalid in most cases.
+ *
+ * @param type the type to set for the primary type of this
+ */
+ void setPrimary(String type);
+
+ /**
+ * This is used to retrieve the primary type of this MIME type. The
+ * primary type part within the MIME type defines the generic type.
+ * For example <code>text/plain; charset=UTF-8</code>. This will
+ * return the text value. If there is no primary type then this
+ * will return <code>null</code> otherwise the string value.
+ *
+ * @return the primary type part of this MIME type
+ */
+ String getPrimary();
+
+ /**
+ * This sets the secondary type to whatever value is in the string
+ * provided is. If the string is null then this will contain a
+ * null string for the secondary type of the parameter, which is
+ * likely invalid in most cases.
+ *
+ * @param type the type to set for the primary type of this
+ */
+ void setSecondary(String type);
+
+ /**
+ * This is used to retrieve the secondary type of this MIME type.
+ * The secondary type part within the MIME type defines the generic
+ * type. For example <code>text/html; charset=UTF-8</code>. This
+ * will return the HTML value. If there is no secondary type then
+ * this will return <code>null</code> otherwise the string value.
+ *
+ * @return the primary type part of this MIME type
+ */
+ String getSecondary();
+
+ /**
+ * This will set the <code>charset</code> to whatever value the
+ * string contains. If the string is null then this will not set
+ * the parameter to any value and the <code>toString</code> method
+ * will not contain any details of the parameter.
+ *
+ * @param charset parameter value to add to the MIME type
+ */
+ void setCharset(String charset);
+
+ /**
+ * This is used to retrieve the <code>charset</code> of this MIME
+ * type. This is a special parameter associated with the type, if
+ * the parameter is not contained within the type then this will
+ * return null, which typically means the default of ISO-8859-1.
+ *
+ * @return the value that this parameter contains
+ */
+ String getCharset();
+
+ /**
+ * This is used to retrieve an arbitrary parameter from the MIME
+ * type header. This ensures that values for <code>boundary</code>
+ * or other such parameters are not lost when the header is parsed.
+ * This will return the value, unquoted if required, as a string.
+ *
+ * @param name this is the name of the parameter to be retrieved
+ *
+ * @return this is the value for the parameter, or null if empty
+ */
+ String getParameter(String name);
+
+ /**
+ * This will add a named parameter to the content type header. If
+ * a parameter of the specified name has already been added to the
+ * header then that value will be replaced by the new value given.
+ * Parameters such as the <code>boundary</code> as well as other
+ * common parameters can be set with this method.
+ *
+ * @param name this is the name of the parameter to be added
+ * @param value this is the value to associate with the name
+ */
+ void setParameter(String name, String value);
+
+ /**
+ * This will return the value of the MIME type as a string. This
+ * will concatenate the primary and secondary type values and
+ * add the <code>charset</code> parameter to the type which will
+ * recreate the content type.
+ *
+ * @return this returns the string representation of the type
+ */
+ String toString();
+}