 -----
 Wink Documentation
 -----
 -----
 July 2009

~~
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you 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.
~~

Apache Wink Documentation

* Wink 1.2.0 

  * User Guide {{{./1.2.0/Apache_Wink_User_Guide.pdf}PDF}} 
  
  * {{{./1.2.0/api/index.html}API}} (Javadoc)

* Wiki

  *  {{{http://cwiki.apache.org/WINK/}Apache Wink Wiki}}

  *  {{{http://cwiki.apache.org/WINK/apache-wink-developer-guide.html}User Guide in Wiki}}

* JAX-RS

 * {{{https://jsr311.dev.java.net/nonav/releases/1.0/index.html}JSR-311 API}} 
 
 * {{{http://cwiki.apache.org/confluence/display/WINK/JAX-RS}JAX-RS Guide}}
 
 * {{{https://jsr311.dev.java.net}JSR 311 Development}}
 
 * {{{http://jcp.org/en/jsr/detail?id=311}JSR 311 Specification}}

* Previous Releases

* Wink 1.1.2 

  * User Guide {{{./1.1.2/Apache_Wink_User_Guide.pdf}PDF}} 
  
  * {{{./1.1.2/api/index.html}API}} (Javadoc)

** Wink 1.1.1

  * User Guide {{{./1.1.1/html/Apache Wink Developer Guide.html}HTML}} / {{{./1.1/Apache_Wink_User_Guide.pdf}PDF}} 
  
  * {{{./1.1.1/api/index.html}API}} (Javadoc)

** Wink 1.1 

  * User Guide {{{./1.1/html/Apache Wink Developer Guide.html}HTML}} / {{{./1.1/Apache_Wink_User_Guide.pdf}PDF}} 
  
  * {{{./1.1/api/index.html}API}} (Javadoc)

** Wink 1.0 

  * User Guide {{{./1.0/html/Apache Wink Developer Guide.html}HTML}} / {{{./1.0/Apache_Wink_User_Guide.pdf}PDF}} 
  
  * {{{./1.0/api/index.html}API}} (Javadoc)

** Wink 0.1 

  * User Guide {{{./0.1/Apache_Wink_User_Guide.htm}HTML}} / {{{./0.1/Apache_Wink_User_Guide.pdf}PDF}} 
  
  * {{{./0.1/api/index.html}API}} (Javadoc)
   
