blob: cdec9a9fe2a92e0664ed025f2790c79c7257012b [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Apache TomEE</title>
<meta name="description"
content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
<meta name="author" content="Luka Cvetinovic for Codrops" />
<link rel="icon" href="../../favicon.ico">
<link rel="icon" type="image/png" href="../../favicon.png">
<meta name="msapplication-TileColor" content="#80287a">
<meta name="theme-color" content="#80287a">
<link rel="stylesheet" type="text/css" href="../../css/normalize.css">
<link rel="stylesheet" type="text/css" href="../../css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../../css/owl.css">
<link rel="stylesheet" type="text/css" href="../../css/animate.css">
<link rel="stylesheet" type="text/css" href="../../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../../fonts/eleganticons/et-icons.css">
<link rel="stylesheet" type="text/css" href="../../css/jqtree.css">
<link rel="stylesheet" type="text/css" href="../../css/idea.css">
<link rel="stylesheet" type="text/css" href="../../css/cardio.css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-2717626-1']);
_gaq.push(['_setDomainName', 'apache.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="preloader">
<img src="../../img/loader.gif" alt="Preloader image">
</div>
<nav class="navbar">
<div class="container">
<div class="row"> <div class="col-md-12">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<span>
<img src="../../img/logo-active.png">
</span>
Apache TomEE
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right main-nav">
<li><a href="../../docs.html">Documentation</a></li>
<li><a href="../../community/index.html">Community</a></li>
<li><a href="../../security/security.html">Security</a></li>
<li><a href="../../download-ng.html">Downloads</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div></div>
</div>
<!-- /.container-fluid -->
</nav>
<div id="main-block" class="container main-block">
<div class="row title">
<div class="col-md-12">
<div class='page-header'>
<h1>REST Example</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p><em>Help us document this example! Click the blue pencil icon in the upper
right to edit this page.</em></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_commentdao">CommentDAO</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.dao;
import org.superbiz.rest.model.Comment;
import org.superbiz.rest.model.Post;
import jakarta.ejb.EJB;
import jakarta.ejb.Stateless;
import java.util.Collections;
import java.util.List;
@Stateless
public class CommentDAO extends DAO {
@EJB
private DAO dao;
public List&lt;Comment&gt; list(long postId) {
Post post = dao.find(Post.class, postId);
if (post == null) {
throw new IllegalArgumentException("post with id " + postId + " not found");
}
return Collections.unmodifiableList(post.getComments());
}
public Comment create(String author, String content, long postId) {
Post post = dao.find(Post.class, postId);
if (post == null) {
throw new IllegalArgumentException("post with id " + postId + " not found");
}
Comment comment = new Comment();
comment.setAuthor(author);
comment.setContent(content);
dao.create(comment);
comment.setPost(post);
return comment;
}
public void delete(long id) {
dao.delete(Comment.class, id);
}
public Comment update(long id, String author, String content) {
Comment comment = dao.find(Comment.class, id);
if (comment == null) {
throw new IllegalArgumentException("comment with id " + id + " not found");
}
comment.setAuthor(author);
comment.setContent(content);
return dao.update(comment);
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_dao">DAO</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.dao;
import jakarta.ejb.Stateless;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.Query;
import java.util.List;
/**
* Simply maps the entitymanager.
* It simplifies refactoring (unitName change) and wraps some logic (limited queries).
*
*/
@Stateless
public class DAO {
@PersistenceContext(unitName = "blog")
private EntityManager em;
public &lt;E&gt; E create(E e) {
em.persist(e);
return e;
}
public &lt;E&gt; E update(E e) {
return em.merge(e);
}
public &lt;E&gt; void delete(Class&lt;E&gt; clazz, long id) {
em.remove(em.find(clazz, id));
}
public &lt;E&gt; E find(Class&lt;E&gt; clazz, long id) {
return em.find(clazz, id);
}
public &lt;E&gt; List&lt;E&gt; find(Class&lt;E&gt; clazz, String query, int min, int max) {
return queryRange(em.createQuery(query, clazz), min, max).getResultList();
}
public &lt;E&gt; List&lt;E&gt; namedFind(Class&lt;E&gt; clazz, String query, int min, int max) {
return queryRange(em.createNamedQuery(query, clazz), min, max).getResultList();
}
private static Query queryRange(Query query, int min, int max) {
if (max &gt;= 0) {
query.setMaxResults(max);
}
if (min &gt;= 0) {
query.setFirstResult(min);
}
return query;
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_postdao">PostDAO</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.dao;
import org.superbiz.rest.model.Post;
import org.superbiz.rest.model.User;
import jakarta.ejb.EJB;
import jakarta.ejb.Stateless;
import java.util.List;
@Stateless
public class PostDAO {
@EJB
private DAO dao;
public Post create(String title, String content, long userId) {
User user = dao.find(User.class, userId);
Post post = new Post();
post.setTitle(title);
post.setContent(content);
post.setUser(user);
return dao.create(post);
}
public Post find(long id) {
return dao.find(Post.class, id);
}
public List&lt;Post&gt; list(int first, int max) {
return dao.namedFind(Post.class, "post.list", first, max);
}
public void delete(long id) {
dao.delete(Post.class, id);
}
public Post update(long id, long userId, String title, String content) {
User user = dao.find(User.class, userId);
if (user == null) {
throw new IllegalArgumentException("user id " + id + " not found");
}
Post post = dao.find(Post.class, id);
if (post == null) {
throw new IllegalArgumentException("post id " + id + " not found");
}
post.setTitle(title);
post.setContent(content);
post.setUser(user);
return dao.update(post);
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_userdao">UserDAO</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.dao;
import org.superbiz.rest.model.User;
import jakarta.ejb.EJB;
import jakarta.ejb.Stateless;
import java.util.List;
@Stateless
public class UserDAO {
@EJB
private DAO dao;
public User create(String name, String pwd, String mail) {
User user = new User();
user.setFullname(name);
user.setPassword(pwd);
user.setEmail(mail);
return dao.create(user);
}
public List&lt;User&gt; list(int first, int max) {
return dao.namedFind(User.class, "user.list", first, max);
}
public User find(long id) {
return dao.find(User.class, id);
}
public void delete(long id) {
dao.delete(User.class, id);
}
public User update(long id, String name, String pwd, String mail) {
User user = dao.find(User.class, id);
if (user == null) {
throw new IllegalArgumentException("setUser id " + id + " not found");
}
user.setFullname(name);
user.setPassword(pwd);
user.setEmail(mail);
return dao.update(user);
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_comment">Comment</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.model;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
@Entity
@NamedQueries({
@NamedQuery(name = "comment.list", query = "select c from Comment c")
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_datedmodel">DatedModel</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.model;
import jakarta.persistence.MappedSuperclass;
import jakarta.persistence.PrePersist;
import java.util.Date;
@MappedSuperclass
public abstract class DatedModel extends Model {
private Date created;
@PrePersist
public void create() {
created = new Date();
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_model">Model</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.model;
import jakarta.persistence.Access;
import jakarta.persistence.AccessType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.MappedSuperclass;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
@MappedSuperclass
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Model {
@Id
@GeneratedValue
protected long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_post">Post</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.model;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import jakarta.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.List;
@Entity
@NamedQueries({
@NamedQuery(name = "post.list", query = "select p from Post p")
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_user">User</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.model;
import jakarta.persistence.Entity;
import jakarta.persistence.NamedQueries;
import jakarta.persistence.NamedQuery;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import jakarta.xml.bind.annotation.XmlRootElement;
@Entity
@NamedQueries({
@NamedQuery(name = "user.list", query = "select u from User u")
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_commentservice">CommentService</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.service;
import org.superbiz.rest.dao.CommentDAO;
import org.superbiz.rest.model.Comment;
import jakarta.ejb.EJB;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import java.util.List;
@Path("/api/comment")
@Produces({"text/xml", "application/json"})
public class CommentService {
@EJB
private CommentDAO commentDao;
@Path("/create")
@PUT
public Comment create(@QueryParam("author") String author,
@QueryParam("content") String content,
@QueryParam("postId") long postId) {
return commentDao.create(author, content, postId);
}
@Path("/list/{postId}")
@GET
public List&lt;Comment&gt; list(@PathParam("postId") long postId) {
return commentDao.list(postId);
}
@Path("/delete/{id}")
@DELETE
public void delete(@PathParam("id") long id) {
commentDao.delete(id);
}
@Path("/update/{id}")
@POST
public Comment update(@PathParam("id") long id,
@QueryParam("author") String author,
@QueryParam("content") String content) {
return commentDao.update(id, author, content);
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_postservice">PostService</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.service;
import org.superbiz.rest.dao.PostDAO;
import org.superbiz.rest.model.Post;
import jakarta.ejb.EJB;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import java.util.List;
@Path("/api/post")
@Produces({"text/xml", "application/json"})
public class PostService {
@EJB
private PostDAO dao;
@Path("/create")
@PUT
public Post create(@QueryParam("title") String title,
@QueryParam("content") String content,
@QueryParam("userId") long userId) {
return dao.create(title, content, userId);
}
@Path("/list")
@GET
public List&lt;Post&gt; list(@QueryParam("first") @DefaultValue("0") int first,
@QueryParam("max") @DefaultValue("20") int max) {
return dao.list(first, max);
}
@Path("/show/{id}")
@GET
public Post show(@PathParam("id") long id) {
return dao.find(id);
}
@Path("/delete/{id}")
@DELETE
public void delete(@PathParam("id") long id) {
dao.delete(id);
}
@Path("/update/{id}")
@POST
public Post update(@PathParam("id") long id,
@QueryParam("userId") long userId,
@QueryParam("title") String title,
@QueryParam("content") String content) {
return dao.update(id, userId, title, content);
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_userservice">UserService</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest.service;
import org.superbiz.rest.dao.UserDAO;
import org.superbiz.rest.model.User;
import jakarta.ejb.EJB;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.DefaultValue;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import java.util.List;
@Path("/api/user")
@Produces({"text/xml", "application/json"})
public class UserService {
@EJB
private UserDAO dao;
@Path("/create")
@PUT
public User create(@QueryParam("name") String name,
@QueryParam("pwd") String pwd,
@QueryParam("mail") String mail) {
return dao.create(name, pwd, mail);
}
@Path("/list")
@GET
public List&lt;User&gt; list(@QueryParam("first") @DefaultValue("0") int first,
@QueryParam("max") @DefaultValue("20") int max) {
return dao.list(first, max);
}
@Path("/show/{id}")
@GET
public User show(@PathParam("id") long id) {
return dao.find(id);
}
@Path("/delete/{id}")
@DELETE
public void delete(@PathParam("id") long id) {
dao.delete(id);
}
@Path("/update/{id}")
@POST
public User update(@PathParam("id") long id,
@QueryParam("name") String name,
@QueryParam("pwd") String pwd,
@QueryParam("mail") String mail) {
return dao.update(id, name, pwd, mail);
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_persistence_xml">persistence.xml</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"&gt;
&lt;persistence-unit name="blog"&gt;
&lt;jta-data-source&gt;My DataSource&lt;/jta-data-source&gt;
&lt;non-jta-data-source&gt;My Unmanaged DataSource&lt;/non-jta-data-source&gt;
&lt;class&gt;org.superbiz.rest.model.User&lt;/class&gt;
&lt;class&gt;org.superbiz.rest.model.Post&lt;/class&gt;
&lt;class&gt;org.superbiz.rest.model.Comment&lt;/class&gt;
&lt;class&gt;org.superbiz.rest.model.Model&lt;/class&gt;
&lt;class&gt;org.superbiz.rest.model.DatedModel&lt;/class&gt;
&lt;properties&gt;
&lt;property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/&gt;
&lt;/properties&gt;
&lt;/persistence-unit&gt;
&lt;/persistence&gt;</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_web_xml">web.xml</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
metadata-complete="false"
version="2.5"&gt;
&lt;display-name&gt;OpenEJB REST Example&lt;/display-name&gt;
&lt;/web-app&gt;</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_userdaotest">UserDaoTest</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">packagenull
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_userservicetest">UserServiceTest</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">packagenull
}</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-6 text-center-mobile">
<h3 class="white">Be simple. Be certified. Be Tomcat.</h3>
<h5 class="light regular light-white">"A good application in a good server"</h5>
<ul class="social-footer">
<li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
<li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li>
</ul>
</div>
<div class="col-sm-6 text-center-mobile">
<div class="row opening-hours">
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../latest/docs/" class="white">Documentation</a></h5>
<ul class="list-unstyled">
<li><a href="../../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li>
<li><a href="../../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li>
<li><a href="../../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li>
<li><a href="../../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../latest/examples/" class="white">Examples</a></h5>
<ul class="list-unstyled">
<li><a href="../../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
<li><a href="../../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
<li><a href="../../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li>
<li><a href="../../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../community/index.html" class="white">Community</a></h5>
<ul class="list-unstyled">
<li><a href="../../community/contributors.html" class="regular light-white">Contributors</a></li>
<li><a href="../../community/social.html" class="regular light-white">Social</a></li>
<li><a href="../../community/sources.html" class="regular light-white">Sources</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../security/index.html" class="white">Security</a></h5>
<ul class="list-unstyled">
<li><a href="http://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
<li><a href="http://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
<li><a href="http://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="row bottom-footer text-center-mobile">
<div class="col-sm-12 light-white">
<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</div>
</div>
</div>
</footer>
<!-- Holder for mobile navigation -->
<div class="mobile-nav">
<ul>
<li><a hef="../../latest/docs/admin/index.html">Administrators</a>
<li><a hef="../../latest/docs/developer/index.html">Developers</a>
<li><a hef="../../latest/docs/advanced/index.html">Advanced</a>
<li><a hef="../../community/index.html">Community</a>
</ul>
<a href="#" class="close-link"><i class="arrow_up"></i></a>
</div>
<!-- Scripts -->
<script src="../../js/jquery-1.11.1.min.js"></script>
<script src="../../js/owl.carousel.min.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script src="../../js/wow.min.js"></script>
<script src="../../js/typewriter.js"></script>
<script src="../../js/jquery.onepagenav.js"></script>
<script src="../../js/tree.jquery.js"></script>
<script src="../../js/highlight.pack.js"></script>
<script src="../../js/main.js"></script>
</body>
</html>