Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Sometimes it is necessary to add a new bundle to odysseus, e.g. for new functionality that is not covered yet or does not fit into other bundles.

Path

To allow automatic building of Odysseus products, we created the following directory structure.

  • application: Contains everything not directly related to Odysseus, but uses some elements of Odysseus (e.g. nexmark or other generators)
  • client: Everythings that should only be used in a odysseus client. No dependencies to the other directories but common are allowed.
  • common: This dir contains common things. No dependencies to other directory is allowed
  • monolithic: This dir contains elements for the monolithic Odysseus, i.e. can only be used if client and server are in one product.
  • server: Contains things that should be used in the Odysseus server. A dependency is only allowed to common.
  • test: Contains things for testings, typically in a monolithic product

Remark: Under common and server are directories called core: No dependencies to other bundles outside are allowed. The core bundles are the base bundles and are not allowed to get new dependencies (there may be  exceptions, but typically this is true. Especially, there should be no dependencies to other Odysseus bundles, because it would lead to cyclic dependencies)

A new Bundle

A new bundle should be placed somewhere under the paths described aboved. If a totally new kind of functionality is added, create a new sub dir, else add to an existing one.

In Eclipse call: File/New/Plug-in Project

Image Removed

If the bundle should contain a logical operator or a transformation rule, the bundle must start with de.uniol.inf.is.odysseus

Do not use the default location as this will be the workspace root. 

Use as target platform: OSGi framwork: standard

Adding Dependencies

Most bundles will require Odysseus core components. These dependencies can be added in the MANIFEST.MF file

Image Removed

Add de.uniol.inf.is.odysseus.core and for server components de.uniol.inf.is.odysseus.core.server to the list to required bundles.

Although, it is best OSGi practise to add packages and not plug-ins, in Odysseus there are some restrictions that could lead to problems, when using package import. So it is better to use the plugin import

Feature

This new bundle will not be part of Odysseus until it is added to a feature. First look, if this bundle can be added to an existing feature. In this case open the feature in Eclipse and add the bundle. Here e.g. the key value feature:

Image Removed

and add the plug-in under Plug-ins

Image Removed

If its a new feature, create a new feature project in Odysseus:File/New/Feature Project

Image Removed

Finally, a new feature must be added to an existing product (See also Adding features to products)

Image Removed

or a new project must be created:

Image Removed


For an new product, you could copy one existing. Important: You must change the product id!Image Added

Image Added

Create name (must be unique inside an Odysseus installation!)

Location:

Recommendation: Place bundle in one of the given subfolders:

  • common: For shared classes between client and server
  • client: Only for client, dependency only to common & resources
  • monolithic: client and server together (no remote working)
  • server: server components, dep. only to common & resources
  • wrapper: special server component, dependencies to common, resources, server allowed
  • resources: place resources not available on target platform here

Use standard OSGi framework

Image Added

Image Added

Image Added

Image Added

Image Added