# Create a Java-based adapter blade

This page provides an overview of a Java adapter blade’s structure and links to example Gradle projects that you can adapt and build on.

## Blade structure

The diagram below illustrates the internal structure of a Java Adapter blade. Optional directories are shown in grey.

**Java adapter blade structure**

```plantuml
@startsalt
scale 1.25
{
{T
 + <color:maroon><&box></color>//**AdapterBladeName**//-//major.minor.patch//.zip
 ++ <color:goldenrod><&folder></color> blade_config
 +++ <color:cornflowerblue><&cog></color> fields.conf | <color:gray>Map of field names to field numbers</color>
 ++ <color:goldenrod><&folder></color> DataSource
 +++ <color:goldenrod><&folder></color> bin
 ++++ <color:cornflowerblue><&script></color> start-jar.sh  | <color:gray>Java DataSource start script</color>
 +++ <color:goldenrod><&folder></color> etc
 ++++ <color:silver><&folder> blades</color> | <color:gray>Configuration blades (optional)</color>
 +++++ <color:silver><&folder> //**ConfigBladeName**//</color>
 ++++++ <color:silver><&folder> Liberator</color>
 +++++++ <color:silver><&folder> etc</color>
 ++++++++ <color:silver><&cog> rttpd.conf</color>
 ++++++ <color:silver><&folder> Transformer</color>
 +++++++ <color:silver><&folder> etc</color>
 ++++++++ <color:silver><&cog> transformer.conf</color>
 ++++++ <color:silver><&folder> //**AdapterBladeName**//</color>
 +++++++ <color:silver><&folder> etc</color>
 ++++++++ <color:silver><&cog> datasource.conf</color>
 ++++++ <color:silver><&cog> control</color>
 ++++ <color:cornflowerblue><&cog></color> datasource.conf | <color:gray>Default //AdapterBladeName// configuration</color>
 +++ <color:goldenrod><&folder></color> lib
 +++ <color:goldenrod><&folder></color> var
 ++ <color:goldenrod><&folder></color> doc | <color:gray>Documentation</color>
 ++ <color:goldenrod><&folder></color> Liberator
 +++ <color:goldenrod><&folder></color> etc
 ++++ <color:cornflowerblue><&cog></color> rttpd.conf | <color:gray>Default Liberator configuration</color>
 ++ <color:goldenrod><&folder></color> overrides
 +++ <color:goldenrod><&folder></color> //**AdapterBladeName**//
 ++++ <color:goldenrod><&folder></color> DataSource
 +++++ <color:goldenrod><&folder></color> etc
 ++++++ <color:cornflowerblue><&cog></color> datasource.conf | <color:gray>//AdapterBladeName// configuration overrides</color>
 ++++ <color:goldenrod><&folder></color> Liberator
 +++++ <color:goldenrod><&folder></color> etc
 ++++++ <color:cornflowerblue><&cog></color> rttpd.conf | <color:gray>Liberator configuration overrides</color>
 ++++ <color:goldenrod><&folder></color> Transformer
 +++++ <color:goldenrod><&folder></color> etc
 ++++++ <color:cornflowerblue><&cog></color> transformer.conf | <color:gray>Transformer configuration overrides</color>
 ++ <color:goldenrod><&folder></color> Transformer
 +++ <color:goldenrod><&folder></color> etc
 ++++ <color:cornflowerblue><&cog></color> transformer.conf | <color:gray>Default Transformer configuration</color>
 ++ <color:cornflowerblue><&document></color> README.txt
}
}
@endsalt
```

## Project templates

To get you started with Java adapter development, the [Project Templates](https://github.com/caplin/project-templates) project in Caplin’s GitHub repository includes several templates for Java adapter projects:

* [Java adapter that provides pricing streams](https://github.com/caplin/project-templates/tree/master/pricing-template)
* [Java adapter that provides blotter data](https://github.com/caplin/project-templates/tree/master/blotter-template) (Java Blotter API)
* [Java adapter that provides in-app notifications](https://github.com/caplin/project-templates/tree/master/notification-template) (Java Notification API)
* [Java adapter that provides permissioning data to the Caplin Permissioning Service](https://github.com/caplin/project-templates/tree/master/permissioning-template) (Java Permissioning API)
* [Java adapter that provides trading workflows](https://github.com/caplin/project-templates/tree/master/trading-template) (Java Trading API)
