Documentation
Panaragan is a lightweight Java framework for web apps, APIs, templates, sessions, validation, database access, scheduled jobs, email, and static assets inside one JAR.
Maven dependency
<dependency>
<groupId>com.panaragan</groupId>
<artifactId>panaragan</artifactId>
<version>1.0.0</version>
</dependency>Minimal .env
app.name=Panaragan
app.version=1.0.0
app.port=8005
app.base_url=https://your-domain.example/
template.path=views
template.minify=true
session.mode=MEMORYQuick Start
Use the starter generator on the home page, or create the minimal structure manually.
your-app/
|-- pom.xml
|-- src/main/java/app/App.java
|-- src/main/java/app/controllers/Home.java
`-- src/main/resources/
|-- .env
`-- views/frontend/home.htmlApp.java
package app;
import app.controllers.Home;
import com.panaragan.*;
public class App extends Server {
public static void main(final String[] args) { new App().run(); }
public void boot(final Routers routers) {
routers.get("/", Home::index);
routers.get("/json", Home::json);
}
}Home.java
package app.controllers;
import com.panaragan.*;
public class Home {
public static void index(final Request request, final Response response) {
response.send("Hello World");
}
public static void json(final Request request, final Response response) {
final PJsonObject json = new PJsonObject()
.set("username", request.getQuery("username"))
.set("password", request.getQuery("password"));
response.send(json);
}
} mvn -q package
java -jar target/*.jar
curl https://your-domain.example/
curl "https://your-domain.example/json?username=imam&password=secret"Features
Core
Application entrypoint extends Server. Panaragan calls these methods in order: boot at startup, then accept, route authorization, controller, respond, and error only on failures.
public class App extends Server {
public void boot(final Routers routers) { routers.get("/", Home::index); }
public void accept(final Request request, final Response response) {
final String user = request.getSession("user");
if(user!=null) { request.setPayload("user", PJsonObject.parse(user)); }
}
public boolean authorize(final Request request, final Response response, final String authority) {
final Object user = request.getPayload("user");
if("guest".equals(authority)&&user!=null) { response.redirect("dashboard"); }
if(!"guest".equals(authority)&&user==null) { response.redirect("login", "callback_url", request.getFullUrl()); }
return true;
}
public void respond(final Request request, final Response response) {
response.addHeader("X-Frame-Options", "DENY");
response.addHeader("X-Content-Type-Options", "nosniff");
}
public void error(final Request request, final Response response, final String reason) {
response.renderView("error", new ParamsObject().set("error_reason", reason));
}
}Cache
Use cache for hot values and repeated expensive work. QueryBuilder read methods also use framework-level coalescing so concurrent identical SELECT calls can share one database execution.
Cache.set("profile:1", user, 30000);
final Object user = Cache.get("profile:1");
Cache.delete("profile:1");
Cache.clear();For large request bursts, place the cache check before slow IO and invalidate cache when writes change the related data.
Config
Configuration is loaded from .env. Keep runtime values there and read them through Config so the same JAR can run in local, staging, and production.
app.name=Panaragan
app.version=1.0.0
app.port=8005
app.base_url=https://your-domain.example/
template.path=views
template.minify=true final String appName = Config.get("app.name");
final int port = Config.get("app.port", 8005);
final boolean gzip = Config.get("response.gzip", false);CSRF
Use @csrf in POST forms. Validation methods check the token before processing field rules.
<form method="post" action="{{ url('profile/update') }}">
@csrf
<input name="name">
<button type="submit">Save</button>
</form> csrf.name=csrf-token
csrf.expired=3600Router
Register routes in boot. Dynamic params use {id}. Authority strings are passed to authorize.
routers.get("/", Home::index);
routers.post("/login-submit", Login::submit, "guest");
routers.getOrPost("/api/users/list", Users::list, "user");
routers.get("/users/edit/{id}", Users::edit, "users_edit");
routers.group("/admin", "dashboard", admin -> {
admin.get("/", Dashboard::index);
admin.get("users", Users::index, "users_list");
});Read route params with request.getParam("id"). Use response.redirect, response.send, response.renderView, or response.empty as terminal responses.
Request / Response
final String q = request.getQuery("q", "");
final int page = request.getPostOrQuery("page", 1);
final String token = request.getHeader("Authorization", "");
final UploadFile file = request.getFile("avatar");
final String user = request.getSession("user"); response.send("Hello World");
response.send(new PJsonObject().set("ok", true));
response.renderView("frontend.home", data);
response.redirect("login");
response.empty(204, "No Content");
response.send(file, "report.pdf", "application/pdf");Database
Enable one JDBC URL in .env. Panaragan supports MySQL, PostgreSQL, SQL Server, and Oracle through the JDBC driver on the classpath.
db.max_pool_size=10
db.reconnect=5
db.url=jdbc:postgresql://db.example.internal:5432/app
db.username=postgres
db.password=secret final ParamsObject data = new ParamsObject()
.set("username", request.getPost("username"))
.set("email", request.getPost("email"))
.set("name", request.getPost("name"));
final Object id = Database.insert("users", data);
final boolean updated = Database.update("users", data, "id = ?", id);
final boolean deleted = Database.delete("users", "id = ?", id);Datatable
Datatable builds server-side JSON for DataTables-style requests. Select explicit columns, add filters, and render computed action columns without exposing raw SQL to the browser.
final Datatable datatable = new Datatable("SELECT id, username, email, status FROM users")
.where("status = ?", "ACTIVE")
.addNumbering("no")
.add("edit_url", (column, value, row) -> Url.to("users/edit/"+row.get("id")));
response.send(datatable.results(request));Use where, orWhere, like, whereIn, between, add, edit, and sum to shape the response.
Query Builder
Use QueryBuilder for SELECT and pagination. Repeated identical SELECT queries are coalesced/cached by the framework path that serves query results.
final QueryBuilder qb = new QueryBuilder()
.select("id", "name", "username", "email")
.from("users")
.where("status = ?", "ACTIVE")
.orderBy("id", "DESC")
.limit(50, 0);
final PJsonArray rows = qb.results();
final PJsonObject row = qb.row();
final int total = qb.count();
response.send(new PJsonObject().set("data", rows).set("total", total));Template
Views live in src/main/resources/views. Dotted names map to folders, for example frontend.home maps to views/frontend/home.html.
final ParamsObject data = new ParamsObject()
.set("page_title", "Home")
.set("username", "imam");
response.renderView("frontend.home", data); @extends('layouts.frontend')
@section('body')
<h1>{{ page_title }}</h1>
<p>Welcome, {{ username }}</p>
@endsectionSession
Session can run in memory, storage, database, custom store, or disabled. Use it for authenticated user context, flash messages, and CSRF storage.
session.key=SESSION_ID
session.expired=3600
session.path=/
session.same_site=Lax
session.mode=MEMORY
csrf.name=csrf-token
csrf.expired=3600 response.setSession("user", user.toString());
final String user = request.getSession("user");
response.deleteSession("user");
<form method="post" action="/profile/update">
@csrf
<input name="name">
</form>Validation
final ParamsString rules = new ParamsString()
.set("username", "required")
.set("email", "required|email")
.set("avatar", "uploaded");
if(!request.validatePost(rules)) { response.redirectBack(request.getPosts()); }
final UploadFile avatar = request.getFile("avatar");
if(avatar!=null) {
final boolean saved = avatar.saveIfContentTypeMatch("avatars/user.jpg", new String[] { "image/jpeg", "image/png" });
if(!saved) { response.send(new PJsonObject().set("error", avatar.getError())); }
}Set app.path_upload, app.slug_upload, and request.max_size_on_mb before accepting large multipart requests.
Upload File
Uploaded files are exposed through UploadFile. Always validate size/type and save to a path relative to app.path_upload.
<form method="post" action="/profile/avatar" enctype="multipart/form-data">
@csrf
<input type="file" name="avatar">
</form> final UploadFile avatar = request.getFile("avatar");
if(avatar==null) { response.redirectBack(request.getPosts()); }
final boolean saved = avatar.saveIfContentTypeMatch("avatars/user.jpg", new String[] { "image/jpeg", "image/png" });
if(!saved) { response.send(new PJsonObject().set("error", avatar.getError())); }Configure SMTP in .env, render an HTML view, and send it through Email.
smtp.host=smtp.example.com
smtp.port=587
smtp.username=user@example.com
smtp.password=secret
smtp.starttls=true final ParamsObject data = new ParamsObject().set("activation_url", Url.to("activation/token"));
final String html = Template.render("email.activation-account", data);
Email.send("user@example.com", "Activation", html);Job
Use jobs for background cleanup, warmup, and scheduled tasks that should not run inside request handlers.
Job.everyMinute(() -> {
Database.delete("sessions", "expired_at < NOW()");
});
Job.everyHour(() -> {
Cache.clear();
});Language
Language files are stored in resources and resolved through Language. Use this for repeatable UI labels and messages.
final String title = Language.get("auth.login");
final String message = Language.get("validation.required");Url
Generate app links consistently in controllers and templates. Keep asset, redirect, email, and JSON action URLs based on app.base_url.
final String profileUrl = Url.to("profile");
final String editUrl = Url.to("users/edit/"+id);
response.redirect("login", "callback_url", request.getFullUrl()); <a href="{{ url('docs') }}">Documentation</a>
<link rel="stylesheet" href="{{ url('css/frontend.css') }}">Build & Deploy
# Maven
mvn -q clean package
java -jar target/*.jar
# Generated Gradle starter
gradle shadowJar
java -jar build/libs/*-all.jarFor production, run behind Nginx/Caddy/Traefik for TLS, size JVM memory to the server/container, keep database pool size measured against workload, and ship assets/templates inside the JAR for immutable deployment.
Troubleshooting
template.path=views, the view name, and that resources are packaged in the JAR.@csrf in every POST form and keep session cookie settings aligned with the domain/protocol.app.port in .env or stop the process using that port.app.path_upload, app.slug_upload, save target, and file permissions.Panaragan Framework Classes
Generated from the Panaragan framework artifact used by this website. Total documented classes: 37.
Server
Application bootstrap, configuration loader, static asset server, selector loop, and lifecycle hooks.
Constructors
Server() Methods
void accept(Request, Response) boolean authorize(Request, Response, String) void boot(Routers) void error(Request, Response, String) void respond(Request, Response) void run() Nested Types
No public nested types. Request
HTTP request context: headers, query/post data, files, sessions, payloads, auth helpers, and validation shortcuts.
Constructors
No public constructors. Methods
String[] getBasicAuth() String getBearerToken() String getBody() String getBody(Charset) String getCSRFTokenName() String getCSRFTokenValue() String getContentType() String getCookie(String) long getCookie(String, long) float getCookie(String, float) boolean getCookie(String, boolean) int getCookie(String, int) String getCookie(String, String) double getCookie(String, double) Cookies getCookies() String getErrorField(String) UploadFile getFile(String) ParamsUploadFiles getFiles() String getFlash(String) String getFlash(String, String) String getFullPath() String getFullUrl() ParamsString getGet() String getGet(String) boolean getGet(String, boolean) long getGet(String, long) float getGet(String, float) double getGet(String, double) String getGet(String, String) int getGet(String, int) ListString getGetListString(String) String getHeader(String) float getHeader(String, float) double getHeader(String, double) boolean getHeader(String, boolean) int getHeader(String, int) String getHeader(String, String) long getHeader(String, long) ParamsHeader getHeaders() String getIP() PJsonArray getJsonArray() PJsonObject getJsonObject() Language getLanguage() String getMethod() String getOld(String) String getParam(String) boolean getParam(String, boolean) long getParam(String, long) float getParam(String, float) double getParam(String, double) String getParam(String, String) int getParam(String, int) ParamsString getParams() String getPath() Object getPayload() Object getPayload(String) String getPost(String) String getPost(String, String) double getPost(String, double) int getPost(String, int) long getPost(String, long) float getPost(String, float) boolean getPost(String, boolean) ListString getPostListString(String) String getPostOrQuery(String) double getPostOrQuery(String, double) float getPostOrQuery(String, float) boolean getPostOrQuery(String, boolean) int getPostOrQuery(String, int) String getPostOrQuery(String, String) long getPostOrQuery(String, long) ParamsString getPosts() ParamsString getQuery() String getQuery(String) double getQuery(String, double) boolean getQuery(String, boolean) int getQuery(String, int) String getQuery(String, String) long getQuery(String, long) float getQuery(String, float) ListString getQueryListString(String) String getSession(String) long getSession(String, long) boolean getSession(String, boolean) float getSession(String, float) int getSession(String, int) double getSession(String, double) String getSession(String, String) Session getSessions() ParamsString getSlug() String getSlug(String) double getSlug(String, double) int getSlug(String, int) boolean getSlug(String, boolean) long getSlug(String, long) float getSlug(String, float) String getSlug(String, String) String getUrl() String getUserAgent() boolean hasFiles() boolean hasPosts() boolean isAjax() boolean isMobile() boolean isPathContain(String) boolean isPathEndWith(String) boolean isPathStartWith(String) boolean isSecure() void setPayload(Object) void setPayload(String, Object) String translate(String) String translate(String, String) boolean validatePost(ParamsString) boolean validatePost(ParamsString, ParamsString) boolean validatePost(ParamsString, ParamsString, ParamsParamsString) Nested Types
No public nested types. Response
HTTP response writer for text, JSON, files, redirects, views, cookies, sessions, and error pages.
Constructors
No public constructors. Methods
void addHeader(String, String) void deleteCookie() void deleteSession(String) void destroySession() void empty() void empty(int, String) int getCode() String getMessage() void permanentRedirect(String) void redirect(String) void redirect(String, ParamsString) void redirect(String, String, String) void redirectBack() void redirectBack(ParamsString) void redirectBack(String, String) void redirectBackWithInput() void redirectBackWithInput(ParamsString) void redirectBackWithInput(String, String) void removeHeader(String) void renderView(String) void renderView(String, ParamsObject) void renderView(int, String, String) void renderView(int, String, String, ParamsObject) void send(String) void send(Datatable) void send(File) void send(PJsonObject) void send(PJsonArray) void send(File, String) void send(int, String, String) void send(File, String, String) void send(int, String, PJsonObject) void send(int, String, PJsonArray) void sendError(int, String, String) void setCode(int) void setContentType(String) void setCookie(String) void setCookie(String, String) void setCookie(String, String, long) void setCookie(String, String, long, String) void setCookie(String, String, long, String, String) void setCookie(String, String, long, String, String, String) void setCookie(String, String, long, String, String, String, boolean) void setCookie(String, String, long, String, String, String, boolean, boolean) void setMessage(String) void setSession(String, String) void setSession(String, int) void setSession(String, float) void setSession(String, double) void setSession(String, boolean) void setSession(String, long) void temporaryRedirect(String) Nested Types
No public nested types. Routers
Route registry for HTTP verbs, grouped routes, route parameters, authority mapping, and route lookup.
Constructors
Routers() Methods
void all(String, Boot) void all(String, Boot, String) void all(String, Boot, String, Boolean) void delete(String, Boot) void delete(String, Boot, String) void delete(String, Boot, String, Boolean) void get(String, Boot) void get(String, Boot, String) void get(String, Boot, String, Boolean) static ListString getAuthorities() void getOrPost(String, Boot) void getOrPost(String, Boot, String) void getOrPost(String, Boot, String, Boolean) void group(String, Group) void group(String, String, Group) void group(String, String, Boolean, Group) void head(String, Boot) void head(String, Boot, String) void head(String, Boot, String, Boolean) void options(String, Boot) void options(String, Boot, String) void options(String, Boot, String, Boolean) void path(String, Boot) void path(String, Boot, String) void path(String, Boot, String, Boolean) void post(String, Boot) void post(String, Boot, String) void post(String, Boot, String, Boolean) void put(String, Boot) void put(String, Boot, String) void put(String, Boot, String, Boolean) Nested Types
interface Boot interface Group Database
Connection pool, transactions, prepared statements, insert/update/delete helpers, and batch write helpers.
Constructors
No public constructors. Methods
static void beginTransaction() static void beginTransaction(int) static void commitTransaction() static boolean delete(String, ParamsObject) static boolean delete(String, String, Object...) static DatabaseMetaData getMetaData() static DatabaseMetaData getMetaData(int) static PreparedStatement getPrepareStatement(String) static PreparedStatement getPrepareStatement(int, String) static PreparedStatement getPrepareStatement(String, int) static PreparedStatement getPrepareStatement(int, String, int) static boolean insert(String, ParamsObject) static boolean insert(String, PJsonObject) static boolean insertBatch(String, List) static int insertGetInt(String, PJsonObject) static int insertGetInt(String, ParamsObject) static String insertGetString(String, ParamsObject) static String insertGetString(String, PJsonObject) static void rollbackTransaction() static boolean update(String, PJsonObject, ParamsObject) static boolean update(String, ParamsObject, ParamsObject) static boolean update(String, ParamsObject, String, Object...) static boolean updateBatch(String, List, String) Nested Types
No public nested types. QueryBuilder
Fluent SQL builder for select/from/join/where/order/limit plus row, results, count, and request coalescing cache.
Constructors
QueryBuilder() Methods
QueryBuilder between(String, Object, Object) int count() int countForce() QueryBuilder from(String...) ListObject getParameters() String getQuery() String getQueryCount() String getQueryRaw() String getQuerySum(String) QueryBuilder groupBy(String...) QueryBuilder groupWhere(String, Object...) QueryBuilder having(String, Object...) QueryBuilder join(String, String) QueryBuilder leftJoin(String, String) QueryBuilder like(String, String) QueryBuilder limit(int, int) QueryBuilder orLike(String, String) QueryBuilder orWhere(String, ParamsObject) QueryBuilder orWhere(String, Object...) QueryBuilder orderBy(String, String) void reset() PJsonArray results() PJsonArray resultsForce() PJsonArray resultsWithNumber(String) PJsonArray resultsWithNumberForce(String) QueryBuilder rightJoin(String, String) PJsonObject row() PJsonObject rowForce() QueryBuilder select(String...) double sum(String) double sumForce(String) QueryBuilder where(String, ParamsObject) QueryBuilder where(String, Object...) QueryBuilder whereIn(String, String) QueryBuilder whereIn(String, ListObject) QueryBuilder whereNotIn(String, ListObject) QueryBuilder whereNotIn(String, String) Nested Types
No public nested types. Datatable
Server-side DataTables helper with filtering, searching, custom column renderers, numbering, and sums.
Constructors
Datatable(String) Datatable(QueryBuilder) Methods
Datatable add(String, ColumnsListener) Datatable addNumbering(String) Datatable between(String, Object, Object) Datatable edit(String, ColumnsListener) Datatable groupWhere(String, Object...) Datatable like(String, String) Datatable onGlobalSearch(String, OnSearchListener) Datatable onSearch(String, OnSearchListener) Datatable orLike(String, String) Datatable orWhere(String, Object...) PJsonObject results(Request) Datatable sum(String, SumListener) String toJsonString(Request) Datatable where(String, Object...) Datatable whereIn(String, ListObject) Datatable whereIn(String, String) Datatable whereNotIn(String, ListObject) Datatable whereNotIn(String, String) Nested Types
interface ColumnsListener class Filter interface OnSearchListener interface SumListener Template
Blade-like template renderer with sections, conditions, loops, functions, CSRF injection, and minification.
Constructors
No public constructors. Methods
static void registerRequestFunction(String, RequestFunction) static void registerSimpleFunction(String, SimpleFunction) static String render(String) static String render(String, ParamsObject) static String render(String, ParamsObject, Request) Nested Types
interface RequestFunction interface SimpleFunction Session
Session read/write/destroy support with memory, storage, database, and custom backing stores.
Constructors
No public constructors. Methods
void delete(String) void destroy() ParamsString get() String get(String) boolean get(String, boolean) String get(String, String) long get(String, long) float get(String, float) double get(String, double) int get(String, int) String getDomain() String getPath() String getSameSite() String id() boolean isHttpOnly() boolean isSecure() void set(String, boolean) void set(String, float) void set(String, long) void set(String, int) void set(String, String) void set(String, double) void setDomain(String) void setHttpOnly(boolean) void setPath(String) void setSameSite(String) void setSecure(boolean) Nested Types
interface Store CSRF
CSRF token generation and request validation for form submissions.
Constructors
CSRF() Methods
static String HTML(Request) static String getTokenName() static String getTokenValue(Request) static boolean validateRequest(Request) Nested Types
No public nested types. Validation
Input and upload validation engine for required, email, size, type, and custom rule messages.
Constructors
Validation() Methods
static ParamsListString input(ParamsString, ParamsString) static ParamsListString input(ParamsString, String) static ParamsListString input(ParamsString, String, String) static ParamsListString input(ParamsString, ParamsString, ParamsString) static ParamsListString input(ParamsString, String, String, String) static ParamsListString input(ParamsString, ParamsString, ParamsString, ParamsParamsString) static ParamsListString inputFile(ParamsUploadFiles, ParamsString) static ParamsListString inputFile(ParamsUploadFiles, String) static ParamsListString inputFile(ParamsUploadFiles, String, String) static ParamsListString inputFile(ParamsUploadFiles, ParamsString, ParamsString) static ParamsListString inputFile(ParamsUploadFiles, String, String, String) static ParamsListString inputFile(ParamsUploadFiles, ParamsString, ParamsString, ParamsParamsString) Nested Types
No public nested types. Password
Password hashing and verification utilities using the configured encryption settings.
Constructors
Password() Methods
static String hash(String) static String hashCodeigniter(String) static String hashLaravel(String) static boolean needsRehash(String, int) static boolean verify(String, String) static boolean verifyCodeigniter(String, String) static boolean verifyLaravel(String, String) Nested Types
No public nested types. PJWT
JWT creation, validation, decoding, and payload extraction.
Constructors
PJWT() Methods
static String createToken(PJsonObject) static String createToken(PJsonObject, long) static String createToken(PJsonObject, String) static String createToken(PJsonObject, String, long) static PJsonObject getDecoded(String) static PJsonObject getDecoded(String, String) static PJsonObject getPayload(String) static PJsonObject getPayload(String, String) static PJsonObject getValidDecoded(String) static PJsonObject getValidDecoded(String, String) static PJsonObject getValidPayload(String) static PJsonObject getValidPayload(String, String) static void init(String, int) static boolean isValid(String) static boolean isValid(String, String) Nested Types
No public nested types. PJsonObject
Fast JSON object builder/parser with typed getters and byte serialization.
Constructors
PJsonObject() Methods
PJsonArray getArray(String) PJsonArray getArray(String, PJsonArray) boolean getBoolean(String) boolean getBoolean(String, boolean) double getDouble(String) double getDouble(String, double) float getFloat(String) float getFloat(String, float) int getInt(String) int getInt(String, int) long getLong(String) long getLong(String, long) PJsonObject getObject(String) PJsonObject getObject(String, PJsonObject) String getString(String) String getString(String, String) boolean isExist(String) static PJsonObject parse(String) void remove(String) PJsonObject set(String, String) PJsonObject set(String, double) PJsonObject set(String, int) PJsonObject set(String, PJsonArray) PJsonObject set(String, PJsonObject) PJsonObject set(String, boolean) PJsonObject set(String, long) PJsonObject set(String, float) byte[] toBytes() String toString() void write(OutputStream) Nested Types
No public nested types. PJsonArray
Fast JSON array builder/parser with typed getters and byte serialization.
Constructors
PJsonArray() Methods
PJsonArray add(int) PJsonArray add(String) PJsonArray add(float) PJsonArray add(double) PJsonArray add(long) PJsonArray add(boolean) PJsonArray add(PJsonArray) PJsonArray add(PJsonObject) PJsonArray getArray(int) PJsonArray getArray(int, PJsonArray) boolean getBoolean(int) boolean getBoolean(int, boolean) double getDouble(int) double getDouble(int, double) float getFloat(int) float getFloat(int, float) int getInt(int) int getInt(int, int) long getLong(int) long getLong(int, long) PJsonObject getObject(int) PJsonObject getObject(int, PJsonObject) String getString(int) String getString(int, String) boolean isExist(int) Iterator iterator() static PJsonArray parse(String) PJsonArray remove(int) int size() byte[] toBytes() String toString() Nested Types
No public nested types. PJsonValue
Internal typed JSON value wrapper used by Panaragan JSON structures.
Constructors
No public constructors. Methods
PJsonArray getArray() PJsonArray getArray(PJsonArray) boolean getBoolean() boolean getBoolean(boolean) double getDouble() double getDouble(double) float getFloat() float getFloat(float) int getInt() int getInt(int) long getLong() long getLong(long) PJsonObject getObject() PJsonObject getObject(PJsonObject) String getString() String getString(String) Nested Types
No public nested types. ParamsObject
Fast string-to-object map used for template context and structured runtime data.
Constructors
ParamsObject() Methods
ParamsObject clear() Object get(String) boolean isEmpty() Iterator iterator() ParamsObject remove(String) ParamsObject set(String, Object) int size() Nested Types
No public nested types. ParamsString
Fast string-to-string map used for request parameters, validation rules, and simple config data.
Constructors
ParamsString() Methods
ParamsString clear() String get(String) boolean isEmpty() Iterator iterator() ParamsString remove(String) ParamsString set(String, String) int size() Nested Types
No public nested types. ParamsListString
Fast string-to-list-of-string map used for validation errors and grouped string values.
Constructors
ParamsListString() Methods
ParamsListString clear() ListString get(String) boolean isEmpty() Iterator iterator() ParamsListString remove(String) ParamsListString set(String, ListString) int size() Nested Types
No public nested types. ParamsListObject
Fast string-to-list-of-object map for grouped object values.
Constructors
ParamsListObject() Methods
ParamsListObject clear() ListObject get(String) boolean isEmpty() Iterator iterator() ParamsListObject remove(String) ParamsListObject set(String, ListObject) int size() Nested Types
No public nested types. ParamsParamsString
Fast string-to-ParamsString map for nested message/rule structures.
Constructors
ParamsParamsString() Methods
ParamsParamsString clear() ParamsString get(String) boolean isEmpty() Iterator iterator() ParamsParamsString remove(String) ParamsParamsString set(String, ParamsString) int size() Nested Types
No public nested types. ParamsHeader
HTTP header map with common header constants and case-oriented access.
Constructors
No public constructors. Methods
void forEach(BiConsumer) String get(String) float get(String, float) int get(String, int) String get(String, String) long get(String, long) double get(String, double) boolean get(String, boolean) Iterator iterator() Nested Types
No public nested types. ParamsFile
String-to-file map for simple file parameter collections.
Constructors
ParamsFile() Methods
ParamsFile clear() File get(String) boolean isEmpty() Iterator iterator() ParamsFile remove(String) ParamsFile set(String, File) int size() Nested Types
No public nested types. ParamsUploadFiles
String-to-upload-file map for multipart upload handling.
Constructors
No public constructors. Methods
UploadFile get(String) boolean isEmpty() Iterator iterator() Nested Types
No public nested types. ListString
Compact mutable string list with add/remove/join/iterator helpers.
Constructors
ListString() Methods
ListString add(String) void addAll(ListString) ListString addFirst(String) void clear() boolean contains(String) String get(int) boolean isEmpty() Iterator iterator() String join(String) ListString remove(String) ListString remove(int) void replace(int, String) int size() Nested Types
No public nested types. ListObject
Compact mutable object list with add/remove/join/iterator helpers.
Constructors
ListObject() Methods
ListObject add(Object) ListObject addAll(ListObject) ListObject addFirst(Object) void clear() boolean contains(Object) Object get(int) boolean isEmpty() Iterator iterator() String join(String) ListObject remove(Object) ListObject remove(int) void replace(int, Object) int size() Nested Types
No public nested types. UploadFile
Uploaded file metadata and safe save helpers with content-type checks.
Constructors
No public constructors. Methods
String getError() String getUploadFilename() boolean isExist() boolean save() boolean save(String) boolean saveIfContentTypeMatch(String) boolean saveIfContentTypeMatch(String[]) boolean saveIfContentTypeMatch(String, String) boolean saveIfContentTypeMatch(String, String[]) Nested Types
No public nested types. Cookies
Cookie parser with typed getters.
Constructors
No public constructors. Methods
String get(String) boolean get(String, boolean) long get(String, long) float get(String, float) double get(String, double) int get(String, int) String get(String, String) Nested Types
No public nested types. Cache
In-memory key/value cache with expiration support.
Constructors
No public constructors. Methods
static void delete(String) static Object get(String) static Object getFromExpired(String) static void set(String, Object) static void set(String, Object, int) static void setMaxExpired(int) Nested Types
No public nested types. Config
Typed access to normalized runtime configuration values.
Constructors
Config() Methods
static String get(String) static boolean get(String, boolean) static float get(String, float) static double get(String, double) static int get(String, int) static String get(String, String) Nested Types
No public nested types. Url
Base URL, upload URL, path encoding/decoding, and query composition helpers.
Constructors
Url() Methods
static String baseUrl() static String decodeParam(String) static String decodePath(String) static String encodeParam(String) static String encodePath(String) static String secure(String) static String to(String) static String to(String, ParamsString) static String upload(String) static String withQuery(String, String...) Nested Types
No public nested types. Helper
General utilities for conversion, escaping, files, slugging, encryption, compression, and stack traces.
Constructors
Helper() Methods
static String appStackTrace(Throwable) static String compressString(String) static String decompressString(String) static String decryptString(String) static String encryptString(PJsonObject) static String encryptString(byte[]) static String encryptString(String) static String escHtml(String) static String escHtmlAttr(String) static String fullStackTrace(Throwable) static String randomString(int) static String readFile(String) static String slugging(String) static String slugging(String, String) static boolean strContain(CharSequence, String, char) static boolean strIsNotNullAndNotEmpty(String) static boolean strToBoolean(String, boolean) static double strToDouble(String, double) static float strToFloat(String, float) static int strToInt(String, int) static long strToLong(String, long) static String uglifying(String) static String uglifying(String, String) static File writeFile(String, String) Nested Types
No public nested types. Http
Small HTTP client for GET/POST/raw/multipart requests.
Constructors
Http() Methods
void addBinary(File) void addField(String, String) void addFile(String, File) void addHeader(String, String) void addParam(String, String) void addRawHTML(String) void addRawJSON(String) void addRawJavaScript(String) void addRawText(String) void addRawXML(String) Response response(String) void setMethod(String) Nested Types
class Response Job
Scheduled job helper for fixed millisecond, second, minute, hour, and daily intervals.
Constructors
Job() Methods
static void everyDay(Runnable) static void everyDay(Runnable, int) static void everyHour(Runnable) static void everyHour(Runnable, int) static void everyHoursOfDay(Runnable, int...) static void everyMilliSeconds(Runnable, int) static void everyMinute(Runnable) static void everyMinute(Runnable, int) static void everySecond(Runnable) static void everySecond(Runnable, int) Nested Types
No public nested types. SMTP mail sender with optional attachment and TLS support.
Constructors
No public constructors. Methods
static void send(String, String, String) static void send(String, String, String, List) static void send(int, String, String, String) static void send(int, String, String, String, List) static void send(String, String, String, String, List) static void send(int, String, String, String, String, List) static void send(String, int, String, String, String, String, String, String, List, boolean) Nested Types
No public nested types. Language
Translation/i18n loader and runtime language resolver.
Constructors
No public constructors. Methods
String getCode() boolean isAvailable(String) ListString list() void setCode(String) String translate(String) String translate(String, String) Nested Types
No public nested types. XXH64
Fast hashing helpers used by internal maps and cache keys.
Constructors
XXH64() Methods
static long hash64(byte[], int, int) static long hash64Ascii(String) Nested Types
No public nested types. 