<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Feb 18, 2013 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Wink - </title>
    <style type="text/css" media="all">
      @import url("../css/maven-base.css");
      @import url("../css/maven-theme.css");
      @import url("../css/site.css");
    </style>
    <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20130218" />
    <meta http-equiv="Content-Language" content="en" />
                                                    
<link rel="shortcut icon" href="./images/wink2.ico"/>
                                                        
<style type="text/css" media="all">@import url(css/site.css);</style>
                      
  </head>
  <body class="composite">
    <div id="banner">
                  <a href="http://incubator.apache.org/wink/" id="bannerLeft">
                                                <img src="../images/wink2-s.png" alt="Apache Wink" />
                </a>
                        <a href="http://incubator.apache.org" id="bannerRight">
                                        <img src="http://incubator.apache.org/images/apache-incubator-logo.png" alt="Apache Incubator" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                
                <div class="xleft">
                                  <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
                &gt;
                              <a href="http://incubator.apache.org" class="externalLink" title="Incubator">Incubator</a>
                &gt;
                              <a href="http://incubator.apache.org/wink" class="externalLink" title="Wink">Wink</a>
                  </div>
            <div class="xright">                    <a href="http://svn.apache.org/viewvc/incubator/wink/trunk" class="externalLink" title="SVN">SVN</a>
            |
                        <a href="http://cwiki.apache.org/confluence/display/WINK/Index" class="externalLink" title="Wiki">Wiki</a>
            |
                        <a href="http://issues.apache.org/jira/browse/WINK" class="externalLink" title="Jira">Jira</a>
              
                
                &nbsp;| <span id="publishDate">Last Published: 2013-02-18</span>
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                
                                <h5>Main</h5>
                  <ul>
                  <li class="none">
                          <a href=".././index.html" title="Introduction">Introduction</a>
            </li>
                  <li class="none">
                          <a href=".././news.html" title="News">News</a>
            </li>
                  <li class="none">
                          <a href=".././downloads.html" title="Downloads">Downloads</a>
            </li>
                  <li class="none">
                          <a href=".././documentation.html" title="Documentation">Documentation</a>
            </li>
                  <li class="none">
                          <a href=".././community.html" title="Community">Community</a>
            </li>
                  <li class="none">
                          <a href=".././faqs.html" title="FAQ">FAQ</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
      </a>
                   
                
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h3>Apache Wink 1.1.1 Release Notes<a name="Apache_Wink_1.1.1_Release_Notes"></a></h3></div><div class="section"><h4>Overview<a name="Overview"></a></h4></div><p>This is the fourth official release of Apache Wink project. Apache Wink is a framework that helps you to produce and consume RESTful Web Services. Apache Wink is TCK compliant implementation of the JAX-RS v1.0 specification. The project also introduces Java API for writing clients that consume HTTP-based RESTful Web Services.</p><div class="section"><h4>Complete list of issues fixed in 1.1.1<a name="Complete_list_of_issues_fixed_in_1.1.1"></a></h4></div><div class="section"><h5>Bug<a name="Bug"></a></h5></div><ul><li>WINK-281 - ResourceImpl log doesn't generate the message properly</li><li>WINK-289 - URISyntaxException when using &quot;&quot; brackets in query string</li><li>WINK-290 - DeploymentConfiguration is not propertly initialized when the servlet doesn't create the RequestProcessor</li><li>WINK-291 - DTD expansion should be disabled</li><li>WINK-293 - Merge trunk into 1.1 branch</li></ul><div class="section"><h5>Improvement<a name="Improvement"></a></h5></div><ul><li>WINK-288 - Change the pom.xml to not include slf4j-jdk during compile</li></ul><div class="section"><h5>New Feature<a name="New_Feature"></a></h5></div><ul><li>WINK-152 - Automatic content encoding</li></ul>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2009-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
