code: private boolean processResource(ApplicationRequest appRequest,
                                      ApplicationResponse appResponse) 
          throws IOException {
          
          // get the associated system path
          String requestURI = null;
          if ((requestURI = appRequest.getPathInfo()) == null) {
              String context = appRequest.getContextPath();
              
              requestURI = appRequest.getRequestURI();
              if (requestURI.startsWith(context)) {
                  requestURI = requestURI.substring(context.length());
              }
          }
  
          // check for valid asset
          Asset asset = getEngine().getAssetEngine().getAsset(requestURI);
          if (asset == null) {
              return false;
          }
          
          // set mime type
          appResponse.setContentType(asset.getMimeType());
          
          // write contents
          int read = -1;
          byte[] contents = new byte[1024];
          InputStream input = asset.getInputStream();
          ServletOutputStream output = appResponse.getOutputStream();
          while ((read = input.read(contents)) >= 0) {
              output.write(contents, 0, read);
          }
  
          // complete response
          appResponse.finish();
          
          // success
          return true;
      }
docs: Inserts a plugin to expose parts of the teaservlet via the
  EngineAccess interface.
  
  private void createEngineAccessPlugin(PluginContext context) {
  
  Plugin engineAccess = new EngineAccessPlugin(this);
  context.addPlugin(engineAccess);
  context.addPluginListener(engineAccess);
  }