Tigase Development Guide

Tigase Team


Table of Contents

1. Basic Information
Tigase Server Elements
Components
Plug-ins
Connector
Data, Stanzas, Packets - Data Flow and Processing
2. Tigase Code Style
Introduction
Source file basics
Technicals details
Source file structure
Import statements
Class declaration
Formatting
Braces
Block indentation: tab
Column limit: 120
Line-wrapping
Whitespace
Specific constructs
Naming
Rules common to all identifiers
Programming Practices
Javadoc
Usage
3. Hack Tigase XMPP Server in Eclipse
Requirements
Installation
Linux
Windows
Setup
API changes in the Tigase Server 5.x
4. Server Compilation
Distribution Packages
Building Server and Generating Packages
Shortcut for building
Documentation
Running Server
5. Tigase Kernel
Core
Registration of a bean
Defining dependencies
Nested kernels and exported beans
Lifecycle
Dependency graph
Configuration
DSL and kernel scopes
6. Data Source and Repositories
Data sources
DataSource
DataSourcePool
DataSourceBean
User and authentication repositories
AuthRepository and UserRepository
AuthRepositoryPool and UserRepositoryPool
AuthRepositoryMDPoolBean and UserRepositoryMDPoolBean
Other repositories
DataSourceAware
MDRepositoryBean
7. Component Development
Component Implementation - Lesson 1 - Basics
Component Implementation - Lesson 2 - Configuration
Component Implementation - Lesson 3 - Multi-Threading
Component Implementation - Lesson 4 - Service Discovery
Component Implementation - Lesson 5 - Statistics
Component Implementation - Lesson 6 - Scripting Support
Component Implementation - Lesson 7 - Data Repository
ConfigRepository
Accessing UserRepository or AuthRepository
Accessing other repositories
Component Implementation - Lesson 8 - Lifecycle of a component
Initialization of a component
Reconfiguration
Update of injected dependencies
Stopping a component
8. REST API
Usage examples
Retrieving user avatar
Retrieving list of available adhoc commands
Executing commands using ad-hoc command
Sending any XMPP Stanza
Scripting introduction
Properties
Closure parameters
HTTP API Scripting
Scripting introduction
9. Packet Filtering in Components
The Packet Filter API
Configuration
10. EventBus API in Tigase
EventBus API
Distributed EventBus
Registering events handlers
Publishing events
Local EventBus
Defining events and handlers classes
Registering events handlers
Publishing events
11. Cluster Map Interface
Requirements
Map Creation
Map Changes
Map Destruction
12. Plugin Development
Writing Plugin Code
Using annotation support
Using older non-annotation based implementation
Implementation of processing method
Plugin Configuration
How Packets are Processed by the SM and Plugins
Introduction
SASL Custom Mechanisms and Configuration
Basic SASL Configuration
Logging/Authentication
Custom Mechanisms Development
13. Using Maven
Setting up Maven in Windows
Requirements
Setting up Environment Variables
Testing Maven
A Very Short Maven Guide
Snapshot Compilation and Snapshot Package Generation
Release Compilation, Generation
Generating tar.gz, tar.bz2 File With Sources Only
Maven 2.x Support
14. Tests
Tests
Functional Tests
Performance Tests
Stability Tests
Tigase Test Suite
Running Tigase Test Suite (TTS)
Test Suite Scripting Language
Writing Tests for Plugins
Example: Client Stores Private Data
Test Case Parameters Description
Test Report Configuration
Basic Test Parameters
Test Case Parameters
15. Experimental
Dynamic Rosters
Problem Description
Syntax and Semantics
Retrieving Contact Data
Updating/Saving Extra Information About the Contact
Configuration
Mobile Optimizations
Problem Description
Solution
Queuing Algorithms
Configuration
Bosh Session Cache
Problem Description
Bosh Session Cache Description
Cache Protocol
16. Old Stuff
17. Tigase DB Schema Explained
18. Why the most recent JDK?
19. API Description for Virtual Domains Management in the Tigase Server
20. Stanza Limitations
Escape Characters