<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_26) on Thu May 03 15:25:49 PDT 2012 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
AtomContent (Apache Wink 1.2.0-incubating API)
</TITLE>

<META NAME="date" CONTENT="2012-05-03">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="AtomContent (Apache Wink 1.2.0-incubating API)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AtomContent.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../../org/apache/wink/common/model/atom/AtomConstants.html" title="class in org.apache.wink.common.model.atom"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../../org/apache/wink/common/model/atom/AtomEntry.html" title="class in org.apache.wink.common.model.atom"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../../index.html?org/apache/wink/common/model/atom/AtomContent.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AtomContent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.wink.common.model.atom</FONT>
<BR>
Class AtomContent</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html" title="class in org.apache.wink.common.model.atom">org.apache.wink.common.model.atom.AtomCommonAttributes</A>
      <IMG SRC="../../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.wink.common.model.atom.AtomContent</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>AtomContent</B><DT>extends <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html" title="class in org.apache.wink.common.model.atom">AtomCommonAttributes</A></DL>
</PRE>

<P>
The &quot;atom:content&quot; element Per RFC4287
 
 <pre>
 The &quot;atom:content&quot; element either contains or links to the content of the entry. The content of atom:content is Language-Sensitive.
 
 atomInlineTextContent =
    element atom:content {
       atomCommonAttributes,
       attribute type { &quot;text&quot; | &quot;html&quot; }?,
       (text)*
    }
 
 atomInlineXHTMLContent =
    element atom:content {
       atomCommonAttributes,
       attribute type { &quot;xhtml&quot; },
       xhtmlDiv
    }
 
 atomInlineOtherContent =
    element atom:content {
       atomCommonAttributes,
       attribute type { atomMediaType }?,
       (text|anyElement)*
    }
 
 atomOutOfLineContent =
    element atom:content {
       atomCommonAttributes,
       attribute type { atomMediaType }?,
       attribute src { atomUri },
       empty
    }
 
 atomContent = atomInlineTextContent
  | atomInlineXHTMLContent
  | atomInlineOtherContent
  | atomOutOfLineContent
  
 o The &quot;type&quot; Attribute
 
    On the atom:content element, the value of the &quot;type&quot; attribute MAY be
    one of &quot;text&quot;, &quot;html&quot;, or &quot;xhtml&quot;.  Failing that, it MUST conform to
    the syntax of a MIME media type, but MUST NOT be a composite type
    (see Section 4.2.6 of [MIMEREG]).  If neither the type attribute nor
    the src attribute is provided, Atom Processors MUST behave as though
    the type attribute were present with a value of &quot;text&quot;.
 
 o The &quot;src&quot; Attribute
 
    atom:content MAY have a &quot;src&quot; attribute, whose value MUST be an IRI
    reference [RFC3987].  If the &quot;src&quot; attribute is present, atom:content
    MUST be empty.  Atom Processors MAY use the IRI to retrieve the
    content and MAY choose to ignore remote content or to present it in a
    different manner than local content.
 
    If the &quot;src&quot; attribute is present, the &quot;type&quot; attribute SHOULD be
    provided and MUST be a MIME media type [MIMEREG], rather than &quot;text&quot;,
    &quot;html&quot;, or &quot;xhtml&quot;.  The value is advisory; that is to say, when the
    corresponding URI (mapped from an IRI, if necessary) is dereferenced,
    if the server providing that content also provides a media type, the
    server-provided media type is authoritative.
 
 o Processing Model
 
    Atom Documents MUST conform to the following rules.  Atom Processors
    MUST interpret atom:content according to the first applicable rule.
 
    1.  If the value of &quot;type&quot; is &quot;text&quot;, the content of atom:content
        MUST NOT contain child elements.  Such text is intended to be
        presented to humans in a readable fashion.  Thus, Atom Processors
        MAY collapse white space (including line breaks), and display the
        text using typographic techniques such as justification and
        proportional fonts.
 
    2.  If the value of &quot;type&quot; is &quot;html&quot;, the content of atom:content
        MUST NOT contain child elements and SHOULD be suitable for
        handling as HTML [HTML].  The HTML markup MUST be escaped; for
        example, &quot;&lt;br&gt;&quot; as &quot;&lt;br&gt;&quot;.  The HTML markup SHOULD be such
        that it could validly appear directly within an HTML &lt;DIV&gt;
        element.  Atom Processors that display the content MAY use the
        markup to aid in displaying it.
 
    3.  If the value of &quot;type&quot; is &quot;xhtml&quot;, the content of atom:content
        MUST be a single XHTML div element [XHTML] and SHOULD be suitable
        for handling as XHTML.  The XHTML div element itself MUST NOT be
        considered part of the content.  Atom Processors that display the
        content MAY use the markup to aid in displaying it.  The escaped
        versions of characters such as &quot;&amp;&quot; and &quot;&gt;&quot; represent those
        characters, not markup.
 
    4.  If the value of &quot;type&quot; is an XML media type [RFC3023] or ends
        with &quot;+xml&quot; or &quot;/xml&quot; (case insensitive), the content of
        atom:content MAY include child elements and SHOULD be suitable
        for handling as the indicated media type.  If the &quot;src&quot; attribute
        is not provided, this would normally mean that the &quot;atom:content&quot;
        element would contain a single child element that would serve as
        the root element of the XML document of the indicated type.
 
    5.  If the value of &quot;type&quot; begins with &quot;text/&quot; (case insensitive),
        the content of atom:content MUST NOT contain child elements.
 
    6.  For all other values of &quot;type&quot;, the content of atom:content MUST
        be a valid Base64 encoding, as described in [RFC3548], section 3.
        When decoded, it SHOULD be suitable for handling as the indicated
        media type.  In this case, the characters in the Base64 encoding
        MAY be preceded and followed in the atom:content element by white
        space, and lines are separated by a single newline (U+000A)
        character.
 
 o Examples
 
    XHTML inline:
 
    ...
    &lt;content type=&quot;xhtml&quot;&gt;
       &lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
          This is &lt;b&gt;XHTML&lt;/b&gt; content.
       &lt;/div&gt;
    &lt;/content&gt;
    ...
    &lt;content type=&quot;xhtml&quot;&gt;
       &lt;xhtml:div xmlns:xhtml=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
          This is &lt;xhtml:b&gt;XHTML&lt;/xhtml:b&gt; content.
       &lt;/xhtml:div&gt;
    &lt;/content&gt;
    ...
 
    The following example assumes that the XHTML namespace has been bound
    to the &quot;xh&quot; prefix earlier in the document:
 
    ...
    &lt;content type=&quot;xhtml&quot;&gt;
       &lt;xh:div&gt;
          This is &lt;xh:b&gt;XHTML&lt;/xh:b&gt; content.
       &lt;/xh:div&gt;
    &lt;/content&gt;
    ...
 
 </pre>
<P>

<P>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#src">src</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#type">type</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.wink.common.model.atom.AtomCommonAttributes"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.wink.common.model.atom.<A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html" title="class in org.apache.wink.common.model.atom">AtomCommonAttributes</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#base">base</A>, <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#lang">lang</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#AtomContent()">AtomContent</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#AtomContent(org.apache.wink.common.model.synd.SyndContent)">AtomContent</A></B>(<A HREF="../../../../../../org/apache/wink/common/model/synd/SyndContent.html" title="class in org.apache.wink.common.model.synd">SyndContent</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#checkValidity()">checkValidity</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#getSrc()">getSrc</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value of src.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#getType()">getType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value of type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#getValue()">getValue</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Gets the content of the "atom:content" element as a String.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; T</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#getValue(java.lang.Class)">getValue</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</A>&lt;T&gt;&nbsp;cls)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Gets the content of the "atom:content" element serialized to provided
 class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
<TR ALIGN="right" VALIGN="">
<TD NOWRAP><FONT SIZE="-1">
<CODE>&lt;T&gt; T</CODE></FONT></TD>
</TR>
</TABLE>
</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#getValue(java.lang.Class, java.lang.reflect.Type, javax.ws.rs.ext.Providers, java.lang.annotation.Annotation[], javax.ws.rs.core.MultivaluedMap, javax.ws.rs.core.MediaType)">getValue</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</A>&lt;T&gt;&nbsp;cls,
         <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Type.html?is-external=true" title="class or interface in java.lang.reflect">Type</A>&nbsp;genericType,
         javax.ws.rs.ext.Providers&nbsp;providers,
         <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</A>[]&nbsp;annotations,
         javax.ws.rs.core.MultivaluedMap&lt;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>,<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&gt;&nbsp;httpHeaders,
         javax.ws.rs.core.MediaType&nbsp;mediaType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 Gets the content of the "atom:content" element serialized to provided
 class according to provided parameters.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#setProviders(javax.ws.rs.ext.Providers)">setProviders</A></B>(javax.ws.rs.ext.Providers&nbsp;_providers)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the Providers on a local field so that the registry of custom and system
 providers is available when a client application retrieves the value, expecting
 it to be seamlessly unmarshalled or converted to the expected type declared in
 getValue(Class).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#setSrc(java.lang.String)">setSrc</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the value of src.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#setType(java.lang.String)">setType</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the value of type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#setValue(java.lang.Object)">setValue</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the content of the "atom:content" element as a String.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../../org/apache/wink/common/model/synd/SyndContent.html" title="class in org.apache.wink.common.model.synd">SyndContent</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomContent.html#toSynd(org.apache.wink.common.model.synd.SyndContent)">toSynd</A></B>(<A HREF="../../../../../../org/apache/wink/common/model/synd/SyndContent.html" title="class in org.apache.wink.common.model.synd">SyndContent</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.wink.common.model.atom.AtomCommonAttributes"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.wink.common.model.atom.<A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html" title="class in org.apache.wink.common.model.atom">AtomCommonAttributes</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#getBase()">getBase</A>, <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#getLang()">getLang</A>, <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#getOtherAttributes()">getOtherAttributes</A>, <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#setBase(java.lang.String)">setBase</A>, <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#setLang(java.lang.String)">setLang</A>, <A HREF="../../../../../../org/apache/wink/common/model/atom/AtomCommonAttributes.html#toSynd(org.apache.wink.common.model.synd.SyndCommonAttributes)">toSynd</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="type"><!-- --></A><H3>
type</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>type</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="src"><!-- --></A><H3>
src</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>src</B></PRE>
<DL>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="AtomContent()"><!-- --></A><H3>
AtomContent</H3>
<PRE>
public <B>AtomContent</B>()</PRE>
<DL>
</DL>
<HR>

<A NAME="AtomContent(org.apache.wink.common.model.synd.SyndContent)"><!-- --></A><H3>
AtomContent</H3>
<PRE>
public <B>AtomContent</B>(<A HREF="../../../../../../org/apache/wink/common/model/synd/SyndContent.html" title="class in org.apache.wink.common.model.synd">SyndContent</A>&nbsp;value)</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="toSynd(org.apache.wink.common.model.synd.SyndContent)"><!-- --></A><H3>
toSynd</H3>
<PRE>
public <A HREF="../../../../../../org/apache/wink/common/model/synd/SyndContent.html" title="class in org.apache.wink.common.model.synd">SyndContent</A> <B>toSynd</B>(<A HREF="../../../../../../org/apache/wink/common/model/synd/SyndContent.html" title="class in org.apache.wink.common.model.synd">SyndContent</A>&nbsp;value)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setProviders(javax.ws.rs.ext.Providers)"><!-- --></A><H3>
setProviders</H3>
<PRE>
public void <B>setProviders</B>(javax.ws.rs.ext.Providers&nbsp;_providers)</PRE>
<DL>
<DD>Sets the Providers on a local field so that the registry of custom and system
 providers is available when a client application retrieves the value, expecting
 it to be seamlessly unmarshalled or converted to the expected type declared in
 getValue(Class).
 
 Client applications should NOT call this method.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getType()"><!-- --></A><H3>
getType</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getType</B>()</PRE>
<DL>
<DD>Gets the value of type.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setType(java.lang.String)"><!-- --></A><H3>
setType</H3>
<PRE>
public void <B>setType</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;value)</PRE>
<DL>
<DD>Sets the value of type.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getSrc()"><!-- --></A><H3>
getSrc</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getSrc</B>()</PRE>
<DL>
<DD>Gets the value of src.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setSrc(java.lang.String)"><!-- --></A><H3>
setSrc</H3>
<PRE>
public void <B>setSrc</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;value)</PRE>
<DL>
<DD>Sets the value of src.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setValue(java.lang.Object)"><!-- --></A><H3>
setValue</H3>
<PRE>
public void <B>setValue</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A>&nbsp;value)</PRE>
<DL>
<DD>Sets the content of the "atom:content" element as a String. The "type"
 attribute should be set prior to setting the contents.
 <p>
 Atom Documents MUST conform to the following rules. Atom Processors MUST
 interpret atom:content according to the first applicable rule.
 </p>
 <ol>
 <li>If the value of "type" is "text", the content of atom:content MUST
 NOT contain child elements. Such text is intended to be presented to
 humans in a readable fashion. Thus, Atom Processors MAY collapse white
 space (including line breaks), and display the text using typographic
 techniques such as justification and proportional fonts.
 <li>
 <li>If the value of "type" is "html", the content of atom:content MUST
 NOT contain child elements and SHOULD be suitable for handling as HTML
 [HTML]. The HTML markup MUST be escaped; for example, "<br>
 " as "&lt;br>". The HTML markup SHOULD be such that it could validly
 appear directly within an HTML <DIV> element. Atom Processors that
 display the content MAY use the markup to aid in displaying it.
 <li>
 <li>If the value of "type" is "xhtml", the content of atom:content MUST
 be a single XHTML div element [XHTML] and SHOULD be suitable for handling
 as XHTML. The XHTML div element itself MUST NOT be considered part of the
 content. Atom Processors that display the content MAY use the markup to
 aid in displaying it. The escaped versions of characters such as "&" and
 ">" represent those characters, not markup.
 <li>
 <li>If the value of "type" is an XML media type [RFC3023] or ends with
 "+xml" or "/xml" (case insensitive), the content of atom:content MAY
 include child elements and SHOULD be suitable for handling as the
 indicated media type. If the "src" attribute is not provided, this would
 normally mean that the "atom:content" element would contain a single
 child element that would serve as the root element of the XML document of
 the indicated type.
 <li>
 <li>If the value of "type" begins with "text/" (case insensitive), the
 content of atom:content MUST NOT contain child elements.
 <li>
 <li>For all other values of "type", the content of atom:content MUST be a
 valid Base64 encoding, as described in [RFC3548], section 3. When
 decoded, it SHOULD be suitable for handling as the indicated media type.
 In this case, the characters in the Base64 encoding MAY be preceded and
 followed in the atom:content element by white space, and lines are
 separated by a single newline (U+000A) character.
 <li>
 </ol>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getValue()"><!-- --></A><H3>
getValue</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A> <B>getValue</B>()</PRE>
<DL>
<DD><p>
 Gets the content of the "atom:content" element as a String. The "type"
 attribute should be used to determine how to treat the content.
 <p>
 Pay attention that de-serialization occurs each time the method is
 called, so multiple calls to this method may effect the application
 performance.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getValue(java.lang.Class)"><!-- --></A><H3>
getValue</H3>
<PRE>
public &lt;T&gt; T <B>getValue</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</A>&lt;T&gt;&nbsp;cls)</PRE>
<DL>
<DD><p>
 Gets the content of the "atom:content" element serialized to provided
 class. The "type" attribute should be used to determine how to treat the
 content.
 <p>
 Pay attention that de-serialization occurs each time the method is
 called, so multiple calls to this method may effect the application
 performance.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getValue(java.lang.Class, java.lang.reflect.Type, javax.ws.rs.ext.Providers, java.lang.annotation.Annotation[], javax.ws.rs.core.MultivaluedMap, javax.ws.rs.core.MediaType)"><!-- --></A><H3>
getValue</H3>
<PRE>
public &lt;T&gt; T <B>getValue</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</A>&lt;T&gt;&nbsp;cls,
                      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Type.html?is-external=true" title="class or interface in java.lang.reflect">Type</A>&nbsp;genericType,
                      javax.ws.rs.ext.Providers&nbsp;providers,
                      <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</A>[]&nbsp;annotations,
                      javax.ws.rs.core.MultivaluedMap&lt;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>,<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&gt;&nbsp;httpHeaders,
                      javax.ws.rs.core.MediaType&nbsp;mediaType)
           throws <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD><p>
 Gets the content of the "atom:content" element serialized to provided
 class according to provided parameters.
 <p>
 Pay attention that de-serialization occurs each time the method is
 called, so multiple calls to this method may effect the application
 performance.
<P>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="checkValidity()"><!-- --></A><H3>
checkValidity</H3>
<PRE>
public void <B>checkValidity</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AtomContent.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../../org/apache/wink/common/model/atom/AtomConstants.html" title="class in org.apache.wink.common.model.atom"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../../org/apache/wink/common/model/atom/AtomEntry.html" title="class in org.apache.wink.common.model.atom"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../../index.html?org/apache/wink/common/model/atom/AtomContent.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AtomContent.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2009-2012 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
