<!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 Sun Aug 25 20:47:12 PDT 2013 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
AtomContent (Apache Wink 1.4 API)
</TITLE>

<META NAME="date" CONTENT="2013-08-25">

<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.4 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>
java.lang.Object
  <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;java.lang.String</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;java.lang.String</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;java.lang.String</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;java.lang.String</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;java.lang.String</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>(java.lang.Class&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>(java.lang.Class&lt;T&gt;&nbsp;cls,
         java.lang.reflect.Type&nbsp;genericType,
         javax.ws.rs.ext.Providers&nbsp;providers,
         java.lang.annotation.Annotation[]&nbsp;annotations,
         javax.ws.rs.core.MultivaluedMap&lt;java.lang.String,java.lang.String&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>(java.lang.String&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>(java.lang.String&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>(java.lang.Object&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.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</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 java.lang.String <B>type</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="src"><!-- --></A><H3>
src</H3>
<PRE>
protected java.lang.String <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 java.lang.String <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>(java.lang.String&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 java.lang.String <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>(java.lang.String&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>(java.lang.Object&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 java.lang.String <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>(java.lang.Class&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>(java.lang.Class&lt;T&gt;&nbsp;cls,
                      java.lang.reflect.Type&nbsp;genericType,
                      javax.ws.rs.ext.Providers&nbsp;providers,
                      java.lang.annotation.Annotation[]&nbsp;annotations,
                      javax.ws.rs.core.MultivaluedMap&lt;java.lang.String,java.lang.String&gt;&nbsp;httpHeaders,
                      javax.ws.rs.core.MediaType&nbsp;mediaType)
           throws java.io.IOException</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>java.io.IOException</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-2013 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
