Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[skalli-dev] Skalli 0.2.0 - The Grand Refactoring

Hi Friends of Skalli:

 

Today I committed as quite large patch titled „The Grand Refactoring“ [1], in which I refined the bundle and package structure of Skalli considerably and increased the version number to 0.2.0.

 

Up to now we had 5 bundles that together defined Skalli’s Java and REST APIs, i.e. o.e.s.api.java, o.e.s.api.rest, o.e.s.common and o.e.s.model.core. However, over time the architecture of these bundles has gone astray. For example, o.e.s.common became a dump for all kind of utility classes with the ugly consequence that we had to move some services and model classes (e.g. ConfigurationService,) to o.e.s.common too, because these utilities required them.

 

To improve this situation, I introduced a new bundle org.eclipse.skalli.api, which is a merger of the five API bundles and intended to become the sole API bundle in the future.  It provides the core project model (class Project) and a few basic extensions as well as all service interfaces and the extension framework – except the extension points for the UI (info boxes, forms). Since it is not clear yet whether we stay with Vaadin as UI framework, I decided to keep the UI stuff separate.  org.eclipse.skalli.core became a web bundle (exposing the REST API) and together with o.e.s.api forms Skalli’s SDK.

 

How to migrate your development environment to Skalli 0.2.0?

 

·         There are two new bundles org.eclipse.skalli.api and org.eclipse.skalli.api.test : import them into your Eclipse workspace manually (File > Import > Import Existing Java Project)

·         Several bundles have been deleted: o.e.s.api.java, o.e.s.api.rest, o.e.s.common, o.e.s.model.core, o.e.s.feed and the corresponding test bundles: remove them from your Eclipse workspace

·         Set the new target platform (o.e.s.target/skalli.target): I moved to the Eclipse RCP platform which is sufficient for Skalli, reducing the amount of bundles in the target platform roughly to 160

·         Do a clean build of all Eclipse projects in the workspace (Project > Clean…)

 

How to migrate custom extensions to Skalli 0.2.0?

That is a bit trickier, since virtually all API classes have new package names and likely all your manifests are broken now.

 

·         Since the refactoring capabilities of the PDE toolset is limited with respect to package renaming, I recommend to just delete all Skalli related entries from the manifests and add the one by one again. For a model extension you likely need the following packages:

org.eclipse.skalli.model,
org.eclipse.skalli.services.extension,
org.eclipse.skalli.services.extension.rest

The naming convention for services now is org.eclipse.skalli.services.<nnnn>, where <nnnn> is the first part of the service name, e.g. ProjectService resides in package org.eclipse.skalli.services.project.

·         ExtensionService:

o   the method getConverter() has been renamed to getRestConverter() returning a RestConverter now instead of an AliasedConverter

o   the return type of the getIndexer() method now is Indexer instead of AbstractIndexer

·         For several extension points (e.g. ExtensionService, RestConverter, …) the framework provided basic implementations, which did not share a common naming convention --- all these classes now are named <nnnn>Base, where <nnnn> is the interface name (e.g. ExtensionServiceBase, RestConverterBase…)

 

The above list for sure is not complete. The commit message contains some further details.

 

How to migrate a Skalli runtime to Skalli 0.2.0?

The product and p2 update site have been updated, so deployment should work out of the box. A migration of the projects, users, groups, issues and favorites is not necessary --- it is done with data migrators internally. Only some parts of the configuration have to be renewed since there is no migration mechanism for configuration settings. Just download the old settings before deployment and set them again through the REST API after deployment:

 

·         SCM mappings [2]

·         Mail mappings [3]

 

Best Regards,

Michael

 

[1] http://git.eclipse.org/c/skalli/org.eclipse.skalli.git/commit/?id=01095c28386ca4f7760338be9e4683b98f4d23bf

[2] http://wiki.eclipse.org/Skalli/User_Guide#Automatic_URL_Inference_from_SCM_Location

[3] http://wiki.eclipse.org/Skalli/User_Guide#Automatic_URL_Inference_from_Mailing_Lists


Back to the top