Setting up

This section describes how to set up Eclipse and Odysseus for developments.

1. Prerequisites

You will need the following tools:

2. Checkout Source Code

NEW (2016/9/9): Source code is now public available via git (from a Bitbucket server):

https://git.offis.uni-oldenburg.de/scm/ody/odysseus.git

3. Setup Eclipse

We recommend to use a dedicated Eclipse workspace for Odysseus, because a full import of Odysseus may have more than 300 Projects.The most simply way is as follows. If you are firstly starting Eclipse, choose the folder where you checked out the source code as the workspace location.

If you have already a workspace, you can switch it via "File -> Switch Workspace -> Other..."

After Eclipse started, you have to import all bundles (these are the parts of odysseus and are equal to an Eclipse project). Use "File -> Import -> Existing Projects into Workspace" to import them into Eclipse as follows:


After clicking "Next", select all needed projects.The source code ("trunk") folder has the following subfolders:

  • application: this folder contains all applications that use Odysseus or provide any data like generators.
  • client: contains all bundles that run on the client and don't have any dependencies to the server directly. It mainly offers the GUI.
  • common: this holds common stuff und utilities that are needed on both server and client. Common does not have any dependencies to other folders like server, client...
  • monolithic: this folder contains bundles that will only work in a monolithic system where server and client are the same product
  • server: this is the server part of Odysseus and contains Odysseus main functionalities. Except of common, it does not have any dependencies to other folders. It does not have any GUI or client functionalities.
  • test: contains stuff for testing and benchmarking
  • tooling: contains primarily tools for the build controlling (Jenkins)

Furthermore, each main folder has different subfolders. Each subfolder normally contains a certain functionality or a dedicated extension (aka plugin for Odysseus). The main functionality of Odysseus is called "core". So, if you want to have a minimal set of bundles for developing, you will need to import the following folders: "common" and the "core"-subfolder within "server".

In the follwing screenshot some bundles are selected.


We recommend to create working sets like here to group certain bundles:


4. Target Platform

Since Odysseus has some dependencies to other external features like Eclipse GEF or the Equinox framework, it is recommended to use the target-platform definition.

This definition is provided via the "target-platform.target" file and can be found in the bundle/project called "de.uniol.inf.is.odysseus.common.feature". Open this file and click "Set as target platofrm" to use this as your target platform. Notice, the target platform is valid for your whole workspace (therefore we recommend to use a dedicated workspace for Odysseus development).

5. First Run - Available Products

Now, you should be able to run Odysseus. There are some predefined product-definitions to run Odysseus (depending on the bundles/folders you checked out before):

  • Odysseus Server.product - (located in de.uniol.inf.is.odysseus.server.starter) - This is just a server-based instance of Odysseus (without any GUI) which can be used e.g. via a webservice.
  • Odysseus Studio 2 (Client).product - (located in de.uniol.inf.is.odysseus.client.starter) - This is only the client part (GUI), which tries to connect to a Odysseus via webservice.
  • Odysseus Studio 2 (Monolithic).product - (located in de.uniol.inf.is.odysseus.monolithic.feature) - This combines server and client into a single product and adds some additional bundles that only work in such a monolithic combination.

For the first time, the easiest way is to start the "Odysseus Studio 2 (Monolithic).product". Open this file and go to the tab "Overview". Click "Synchronize" under "Testing" and afterwards click "Launch an Eclipse application" to run Odysseus (you can alternatively run it in debug mode if you want).

When Odysseus Studio (the GUI) comes up, you have to insert some credentials. A default user is "System" and his password is "manager", the tenant can be left empty. Now Odysseus should be up and running.

In some cases there is a message like:

!MESSAGE Could not find bundle: unknown
!STACK 0
org.osgi.framework.BundleException: Could not find bundle: unknown
	at org.eclipse.core.runtime.internal.adaptor.ConsoleManager.checkForConsoleBundle(ConsoleManager.java:58)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:331)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:231)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
Starting application: 2420

This is due changes in the console for a new RCP version and can typically be ignored.

Additional Information

Adding additional features

The base products for server, client and monolithic contain only a standard set of features. If you want to add additional features (e.g. REST to the server) you need to extend the product files.

Here is an example how to extend the Server product with the REST feature:

  1. Open der Server product
  2. On the bottom tab bar click on Contents
  3. Click on Add..
  4. Type a substring of the required feature (here rest.f) and press OK.
  5. Save!
  6. Back to Overview. Synchronize and Launch again.


Logging

Odysseus comes with the Simple Logging Facade for Java (SLF4J). To use logging add the de.uniol.inf.is.odysseus.slf4j bundle. In this bundle you can find the log4j.properties to configure the logging behaviour.

Features

Since Odysseus is an OSGi based application it is devided into several bundles (the bunch of projects you checked out and imported before). To keep the overview of all bundles, they are combined to features. Each feature reflects a special functionality of Odysseus. thus, we have a core.feature that encapsulate all minimal needed bundles or the studio.feature that contains all bundles for the RCP aka GUI of Odysseus (what we call Studio).

The combination of several features is called a "product" - which should be runnable. The section above, for example, lists four products that combine different sets of features.

The core feature is necessary, because it contains all fundamental functions for Odysseus.

Labels (0)

  • No labels

Comments  (0)

Attachments  (10)

Add Attachment
  File Modified
PNG File image2012-9-7 9:36:58.png Sep 07, 2012 by Marco Grawunder
PNG File 1-import-waehlen.png Feb 22, 2013 by Dennis Geesen
PNG File 3-import-projects.png Feb 22, 2013 by Dennis Geesen
PNG File 2-import existing projects.png Feb 22, 2013 by Dennis Geesen
PNG File 5-import projects with add working sets.png Feb 22, 2013 by Dennis Geesen
PNG File 4-select working sets.png Feb 22, 2013 by Dennis Geesen
PNG File image2017-2-21 14:44:9.png Feb 21, 2017 by Marco Grawunder
PNG File image2017-2-21 14:45:41.png Feb 21, 2017 by Marco Grawunder
PNG File image2017-2-21 14:46:17.png Feb 21, 2017 by Marco Grawunder
PNG File image2017-2-21 14:47:24.png Feb 21, 2017 by Marco Grawunder