Refer to Knox Developer guide at http://knox.apache.org/books/knox-0-4-0/dev-guide.html
Deployment vs Runtime
A critical concept is the distinction between Contributors and Providers. In general all of the Knox code can be divided into two categories: deployment and runtime.
Deployment covers everything that processes topology files (e.g. sandbox.xml) and generates the contents of the deployments directory which is essentially WARs.
Runtime covers server startup and request processing.
Contributors are deployment constructs. For each type of REST API (i.e. service) that the gateway supports there is a Contributor. These take the information int the toppoligy file (typically a URL for the service) and assemble and configure a set of filters in the deployed WAR that will handle the requests made to that service.
Providers are also primarily deployment constructs. There are Providers for various types of functionality: authentication, authorization, etc.
The Contributors while indirectly use Providers to setup and configure the filters that actually do the runtime processing. This allows the Contributor to understand the particulars of a given REST API or service and the Provider focus on a particular feature that can be assembled into the filter chain for that service.