Glossary
In one paragraph
The adaptor receives a request and passes it to the application, which picks a request handler by route. For a component action, the page is taken from the session's page cache and run through the request–response loop. Bindings connect its template to Java via KeyValueCoding.
Action
A method run when a link is clicked or a form submitted. It returns action results. See component action, direct action.
Action results
What an action returns: a component (the next page), a response, or null (same page). NGActionResults.
Adaptor
The HTTP server: turns HTTP into requests and responses back. Jetty-based: ng-adaptor-jetty, or ng-adaptor-jetty-servlet.
Application
The app's main object, one per running app. Starts the adaptor, holds routes, properties and resources. You subclass NGApplication.
Association
The object behind a binding's value: a constant (NGConstantValueAssociation) or a keypath (NGKeyValueAssociation). Dynamic elements read bindings through them. NGAssociation.
Binding
An attribute on a dynamic tag, like value="$name". Dynamic ($…, resolved with KVC) or constant; can be read and set. See Templating.
Binding synchronization
By default, a child component's bindings are copied into its same-named fields before each phase, and back after. To turn it off, override synchronizesVariablesWithBindings() and use valueForBinding( "name" ). See Creating a component.
Component
An HTML template plus a Java class extending NGComponent. Has state: each use is its own instance, kept between requests. See Creating a component.
Component action
A stateful action: a method on the component that rendered the link, called on that same instance. URLs start with /no/. See Component actions.
Content
What's between a component's tags, rendered where its template has <wo:content />. NGComponentContent.
Context
The state of the request being handled: request, page, current component, element ID, session. NGContext. Transitional: it'll be split up later.
Development mode
The default when running locally. Templates, resources and routes reload on every request, and the development tools are on. Off when started with -WOMonitorEnabled YES.
Development tools
/ng/dev/… endpoints for logs, problems and evaluating code in the running app. See Development tools.
Direct action
A stateless action: somethingAction() on an NGDirectAction subclass, called at /na/ClassName/something. Needs no session. Mostly superseded by routes.
Dynamic element
A stateless building block, like <wo:str> (NGString). One instance serves every render, so state lives in associations, not fields. Subclass NGDynamicElement. See Creating a dynamic element.
Dynamic resource
Content generated for one request, like <wo:img data="$bytes" />. Served once from /nd/.
Dynamic tag
A <wo:…> tag. Stands for a dynamic element or a component; its attributes are bindings.
Element
Anything in a template's tree: a dynamic element, a component or static HTML. NGElement.
Element ID
An element's position in the page, like 0.1.5. Routes a click back to its element. NGElementID.
Key
A name resolved with KVC: name in $name.
KeyPath
Keys joined with periods: $user.address.city. A null along the way makes it null.
KeyValueCoding
The rules for finding a method or field by name. KVC for short. NGKeyValueCoding. See Templating.
Lifebeat
A regular "I'm alive" signal from a deployed app to wotaskd, so JavaMonitor can manage it.
Namespace
Keeps resources and components apart: the app's are in app, the framework's in ng, each plugin's in its own. The app in /nr/app/logo.png.
ng, ng-objects
engifer's former name, still used in code: NG classes, ng. packages, is.rebbi.ng artifacts.
Page
The top-level component, rendering the whole document. Created by pageWithName( SomePage.class ) or a route.
Page cache
A session's last 100 pages, so their component actions still work. One request at a time per page. NGPageCache.
Partial page update
Re-rendering part of a page without reloading it, with the Ajax elements. See Partial page updates.
Plugin
Adds elements, routes and resources under its own namespace. NGPlugin. See Plugins.
Properties
App configuration: an app-resources/Properties file, overridden by arguments like -WOPort 1300. See Configuration.
Public resource
A file in src/main/resources/public, served at the site root: public/robots.txt → /robots.txt.
Request
What the browser sent. Immutable once received. NGRequest.
Request handler
Answers one kind of URL: component actions (/no/), direct actions (/na/), resources (/nr/), …. NGRequestHandler.
Request–response loop
The phases a page goes through on a component action:
- takeValuesFromRequest: form values go into bindings.
- invokeAction: the clicked element runs its action.
- appendToResponse: the next page renders.
A plain page view only runs appendToResponse.
Resource
A file the app uses: webserver-resources (served at /nr/app/…), app-resources (for Java code) or public (site root). See Resources.
Response
What's sent back. Make one with NGResponses.ok( … ). NGResponse.
Route
Maps a URL to a page, a function or a request handler. See Routing.
Session
A user's state between requests, including their page cache. Created on first use, kept by cookie, expires after 60 idle minutes. NGSession. See Sessions.
Tag name
The name after wo:: a short name like str, or a class name like ProductList.
Template
A component's HTML, with dynamic tags: components/Foo.html or components/Foo.wo/Foo.html.
Truthy, falsy
How a binding tested as a condition is read, as in <wo:if condition="$items">. Falsy: null, false and numbers equal to zero. Everything else is truthy, including empty strings, empty collections and the strings "false", "no" and "0". 0.5 and NaN are truthy. NGAssociationUtils.isTruthy().
Coming from WebObjects: WO also treats empty strings and collections as true. But it reads the strings "no", "false", "nil", "null" and "0" as false, and truncates numbers, so 0.5 is false. Such conditions behave differently after porting.
WOA
A built app bundle (MyApp.woa) with a launch script, in WebObjects' format. Built by vermilingua.
WOD file
WO-style element declarations, separate from the HTML. Supported for porting. See Templating.
Wrapper
A component that wraps content (layout, navigation) using <wo:content />.