Versions Compared

Key

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

...

2. Checkout Source Code

There are different ways to create new elements for Odysseus. The first way should be used, if you want to add something new to Odysseus (e.g. a new wrapper) but do not want to change the common base. This should be the prefered way of development for Odysseus:

2.1 Extending Odysseus with new plugins (prefered)

Odysseus has a very large code base. To allow a much easier start we provide a template project in our Bitbucket server. You should clone or fork this project and adding new plugins to this template. The template can be found here:

https://git.swl.informatik.uni-oldenburg.de/projects/ODY/repos/odysseusrepotemplate/browse

When using git you should call (Odysseus is based on submodules, so the flag recurse-submodules is necessary).

Code Block
languagebash
git clone --recurse-submodules https://git.swl.informatik.uni-oldenburg.de/scm/ody/odysseusrepotemplate.git

Remark: Because, you are not allowed to push updates here, you should change your repository url to your git location.

Code Block
languagebash
git remote set-url origin <new url>

2.2 Working directly with the Odysseus source code

Source code is public available via git (from a Bitbucket server):

...

Odysseus is based on submodules, so the flag recurse-submodules is necessary.

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:

...

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:

For odysseus core development:

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..."

4. Target Platform

Since Odysseus has some dependencies to other external features like Eclipse GEF or the Equinox framework, it is necessary to use the target-platform definition. This definition is provided via the "target-platform.target" file.

If you are using the project template, the target platform can be found in the project targetplatform if you are making core odysseus development it  and can be found in the bundle/project called "de.uniol.inf.is.odysseus.common.feature". Open this file and click "Set as target platofrmplatform" to use this as your target platform.

You can use CRTL-SHIFT-R to search for the target platform

Image Added

Image Added

Notice, the target platform is valid for your whole workspace (therefore we recommend to use a dedicated workspace for Odysseus development).
You can use CRTL-SHIFT-R to search for Remark: Sometimes eclipse behaves strange when setting a new target platform. See Odysseus FAQ for further hints, if ther are problem with the target platformImage Removed

5. First Run - Available Products

...

  • 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.client.starter or 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.

...

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:

Code Block
!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

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).

...