-
Notifications
You must be signed in to change notification settings - Fork 0
Transfer
This page contains instruction on how to transfer your existing code from one release to the next release. For a compact overview of all changes and bug fixes, please refer to the Release History
Unfortunately Apache Karaf does not support automatic feature upgrade yet, but there are some OSGi commands to upgrade uAAL bundles on the go:
- Manually force an upgrade of bundle with number XX (repeat, in order, for all bundles)
-
update --force XX mvn:group/artifact/version
-
- Do not specify a version when installing a bundle with number XX (repeat, in order, for all bundles, or enable daily updates)
- When installing:
install mvn:group/artifact - When updating:
update XX
- When installing:
- Remove <karaf>/data/cache
- Open <karaf>/etc/org.apache.karaf.features.cfg
- Find the uAAL.karaf.feature entry and change its version to the latest one
- Restart Karaf and repeat feature installation procedure for all your bundles
There have been changes in some ontologies. If your code previously used these ontologies (to produce or consume information), make sure you apply the changes when using version 3.4.0:
- ont.device.extra: Some classes names have changed
- ont.activityhub: Changed the "has value" property to the correct one
- ont.personalhealthdevice: Completely updated, and makes correct use of Measurements and its restrictions. Fixed typo in diastolic blood pressure property.
- ont.profile.health: The "assignedTo" property is back with REDUCED serialization. Fixed use of PlannedSession instead of PerformedSession in TreatmentPlanning.
- Some deprecated ontologies have been removed. If you used one of those, search and use one of the up-to-date equivalents.
- No relevant API changes.
- JGroup Channel connectivity has been changed: Channels now append the AALSpace ID to their own ID. This in practice means that by default there will be no connection between instances running 3.1.0 (or before) and 3.2.0 (or above) - Including Android ones. This should not matter as it is always common practice to always use the same versions in all instances. But in any case a workaround would be to manually append the AALSpace ID to the names of the JGroups channels in the configuration files.
- No relevant API changes
- Integration tests (tests that inherit from IntegrationTest, but not from TestCase) must be renamed to *IT.java, e.g. ArtifactIntegrationTest.java must be renamed to ArtifactIT.java
- removed deprecated class ResourceFactoryImpl, the interface org.universAAL.middleware.rdf.ResourceFactory must now be used directly
- authoritator is removed, and should be replaced with authenticator.userPasword.client: use the method org.universAAL.security.authenticator.client.AuthenticationPublisher.authenticate(User, Device) to get the User instance (not just the URI, the user instance also has the proper UserType ie: Caregiver or AssistedPerson)
- ont.profile.userid is deprecated, either use the authenticator.client or the new ont.security (userPasswordCredentials is now a subclass of credentials, a security subprofile has credentials; userPasswordCredentials contains a 3rd field to determine the codification of the password field. Uncodified password fields are not recommended, implemented services will not work with passwords not codificated).
- UICaller interface has changed: method dialogAborted(String) is now dialogAborted(String,Resource), to let applications know the user's data updates up until the dialog was aborted.
- mw.pom.osgi no longer manages org.apache.felix dependencies, these dependencies should be changed (can be automatically changed by executing "mvn udir:felix-check -Ddirective.fix":
| old dependency | new dependency |
|---|---|
<dependency> <groupId>org.apache.felix</groupid> <artifactId>org.osgi.core</artifactid> </dependency> |
<dependency> <groupId>org.osgi</groupid> <artifactId>org.osgi.core</artifactid> </dependency> |
<dependency> <groupId>org.apache.felix</groupid> <artifactId>org.osgi.compendium</artifactid> </dependency> |
<dependency> <groupId>org.osgi</groupid> <artifactId>org.osgi.compendium</artifactid> </dependency> |
- moved rundir from middleware repo to support repo
- Moved interface
org.universAAL.middleware.sodapop.msg.MessageContentSerializer(Ex) of bundle mw.bus.model to
org.universAAL.middleware.serialization.MessageContentSerializer(Ex) of bundle mw.data.representation - method Resource.setProperty(..) now returns a value of type boolean
- OntologyManagement now needs the moduleContext for register/unregister (for security reasons)
- method org.universAAL.middleware.service.ServiceCallee.addNewRegParams renamed to org.universAAL.middleware.service.ServiceCallee.ServiceCallee.addNewServiceProfiles
- org.universAAL.middleware.service.ServiceBus:
- addNewRegParams-> addNewServiceProfiles
- getMatchingService->getMatchingServices
- removeMatchingRegParams->removeMatchingProfiles
- sendMessage->brokerRequest
- sendReply-> brokerReply
- New device ontology
- The following ontologies will become deprecated as a consequence of the new ont.device:
- ont.hazard
- ont.risk
- ont.water
- ont.weather
- ont.window
- ont.device.extra will retain a few legacy concepts
- The ontologies replaced by the new ont.device can be substituted in your code by changing the dependency and using the equivalent class of each concept:
- FireDetector -> SmokeSensor
- GasDetector -> GasSensor
- FallDetector -> FallSensor
- PanicButton -> PanicButtonSensor
- FaucetSensor -> WaterFlowSensor
- WaterActuator -> WaterFlowActuator
- WaterFloodDetector -> FloodSensor
- HeaterActuator -> HeaterActuator
- RelHumiditySensor -> HumiditySensor
- TempSensor -> TemperatureSensor
- BlindActuator/Controller -> BlindActuator/Controller
- CurtainActuator/Controller -> CurtainActuator/Controller
- GlassBreakSensor -> GlassBreakSensor
- WindowActuator/Controller -> WindowActuator/Controller
- The following ontologies will become deprecated as a consequence of the new ont.device:
MW.container:
- Renamed class: uAALModuleActivator -> ModuleActivator
- Renamed class: org.universAAL.middleware.owl.BoundingValueRestriction -> org.universAAL.middleware.owl.BoundedValueRestriction
- Renamed bundle: ui.handler.swing.classic -> ui.handler.gui.swing.classicLAF
- Renamed bundel: waveLAF -> bluesteelLAF
- Run config: mvn:org.universAAL.ui/ui.handler.gui.swing.bluesteelLAF/1.2.2-SNAPSHOT@nostart
- to use set ui.handler.gui.swing Configuration file to contain: LookandFeel.package=org.universAAL.ui.gui.swing.bluesteelLAF
- unified ontology structure, the new form can be found in the Guidelines for ontologies. Changes consist mainly of renaming package names. If you are importing classes from existing ontologies check if the package names have changed.
- When starting run configurations in Eclipse, some ontologies may remain "Installed" if they are all set for the same level, and you will have to start them manually (in the right order).
To be container-independent, OSGi-specific parts have been separated. Because of renaming of artifacts, take into account that the "Sodapop.key" file for encryption must now be in "mw.bus.model.osgi" folder, instead of the old "mw.bus.model".
Changes in POMs:
- mw.pom is now parent of mw.pom.osgi and mw.pom.core (in trunk 1.1.2-SNAPSHOT)
- mw.data.representation -> mw.data.representation.osgi
- mw.data.serialization -> mw.data.serialization.osgi
- mw.bus.context -> mw.bus.context.osgi
- mw.bus.service -> mw.bus.service.osgi
- mw.bus.ui -> mw.bus.ui.osgi
- CHE ontology has been moved from CHE itself into a different artifact for modularization. Artifacts calling previous CHE services must now include dependency to org.universAAL.ontology/ont.che/<x.y.z></x.y.z> instead of CHE itself. The package for the concepts has changed as well and is now org.universAAL.ontology.che
rename folder mw.bus.model to mw.bus.model.osgi if using any of the OSGi running options (eclipse pax running and/or runner folder project).
Here more relevant changes have been applied, namely:
- new call based UI Bus instead of event based I/O Bus
- new universAAL profiling ontology
in the code (note that only changes are mentioned here): import org.universAAL.middleware.io.* -> import org.universAAL.middleware.ui.*
- import org.universAAL.middleware.input.InputEvent; -> import org.universAAL.middleware.ui.UIResponse;
- PROP_INPUT_SENTENCE -> nothing
- uAAL_INPUT_NAMESPACE -> nothing
- uAAL_MAIN_MENU_REQUEST -> nothing
- PROP_INPUT_LOCATION -> PROP_SUBMISSION_LOCATION
InputEvent(Resource user, AbsLocation inputLocation, String userRequest)
- getInputLocation() -> getSubmissionLocation()
- getInputSentence() -> nothing
- hasDialogInput() -> nothing
- isServiceSearch() -> nothing
- isWellFormed() -> nothing
- import org.universAAL.middleware.output.OutputEvent; ->import org.universAAL.middleware.ui.UIRequest;
- uAAL_OUTPUT_NAMESPACE ->uAAL_UI_NAMESPACE
- PROP_OUTPUT_LANGUAGE -> PROP_DIALOG_LANGUAGE
- PROP_OUTPUT_MODALITY -> PROP_PRESENTATION_MODALITY
- PROP_OUTPUT_MODALITY_ALT -> PROP_PRESENTATION_MODALITY_ALT
- PROP_PRIVACY_LEVEL >PROP_DIALOG_PRIVACY_LEVEL
- getAltOutputModality() ->getAltPresentationModality()
- getOutputModality() -> getPresentationModality()
- getPresentationAbsLocation() -> getPresentationLocation()
- setAltOutputModality(Modality outputModality) -> setAltPresentationModality(Modality outputModality)
- setOutputModality(Modality outputModality) -> setPresentationModality(Modality outputModality)
- setPresentationAbsLocation(AbsLocation presentationLocation) -> setPresentationLocation(AbsLocation presentationLocation)
- import org.universAAL.middleware.output.OutputEventPattern; -> import org.universAAL.middleware.ui.UIHandlerProfile;
- import org.universAAL.middleware.input.InputPublisher; -> import org.universAAL.middleware.ui.UIHandler;
- publish(InputEvent e) -> nothing
- import org.universAAL.middleware.output.OutputSubscriber; -> import org.universAAL.middleware.ui.UIHandler;
- handleEvent(Message m) -> handleRequest(Message m)
- handleOutputEvent(OutputEvent event) -> handleUICall(UIRequest uicall)
- handleReply(Message m) -> nothing
- nothing -> userLoggedIn(Resource user, AbsLocation loginLocation)
- org.universAAL.middleware.input.InputSubscriber -> import org.universAAL.middleware.ui.UICaller;
- handleEvent(Message m) -> handleReply(Message m)
- org.universAAL.middleware.output.OutputPublisher -> import org.universAAL.middleware.ui.UICaller;
- publish(OutputEvent e) -> sendUIRequest(UIRequest e)
- handleRequest(Message m) -> nothing
- handleInputEvent(InputEvent event) -> handleUIResponse(UIResponse input)
- org.universAAL.middleware.output.DialogManager -> org.universAAL.middleware.ui.DialogManager
- nothing ->getMainMenu(Resource user, AbsLocation loginLocation)
Until release 1.0.0 (included) the profiling ontology has been the same since the begining, inherited from project PERSONA. Now there is a new profiling ontology specially designed for uAAL, and the related documentation can be found here.
This new version is introduced at 1.0.2-SNAPSHOT so if you want to use it you must set this version in your ont.profile dependency in your POM. Take into account that this also means that the new profiling ontology is already compatible with the new data representation, and so must be any software that uses it.
If your code already used the old profiling ontology, when migrating to the new one, you must observe the following issues:
- New profiling ontology version is 1.0.2-SNASPHOT (and following)
- It is compliant with new data representation. Code that uses it must also be compliant.
- URIs have changed. If you relied on these in your code (that´s weird) you should change them. Check the new code to see the new URIs.
- The concept User is compatible between old and new profiling ontology. You don´t need to make changes, but only as long as you just use instances of User, but not its properties or methods.
- The concept ElderlyUser is now AssistedPerson
- User and its siblings still have a hasProfile property. Take a look at the new documentation however, to see the details.
- Profiles have sub-profiles, which are intended to hold application or domain-specific parameter data.
- There are concepts for uSpace and AALService, but just like the Users they are empty. They have no parameters properties. These still have to be defined by their respective taskforces.
- Profiles don´t have parameter properties yet either. This means that all the parameters that used to be in the old profile ontology (like impairments for instance) are no longer available.
- If you used a parameter that no longer exists, consider one of the following:
- If the parameters was application or domain-specific, consider creating a new sub-profile with the needed parameters, and then extend the profiling ontology.
- If it´s very generic, contact the profiling ontology responsibles and discuss the possibility of including the parameter in the profiling otology itself.
Context publishers now have to specify their published events. To do so, call the method .setProvidedEvents() on the ContextProvider object you used, with an array of ContextEventPattern defining the kind of events you publish. A quick interim replacement is using a blank pattern with new ContextEventPattern[] { new ContextEventPattern() }.
The new container specification has been applied, decoupling OSGi part in separate packages
changes in the code:
- import org.universAAL.middleware.container.ModuleContext;
- import org.universAAL.middleware.container.osgi.uAALBundleContainer;
- import org.universAAL.middleware.container.osgi.util.BundleConfigHome;
- instead of BundleContext, new ModuleContext is passed further
BundleContext[] bc = {context};
Activator.mcontext = uAALBundleContainer.THE_CONTAINER.registerModule(bc);
project mw.data.representation
Old data representation model:
(click to enhance)
New data representation model (class diagram from svn head revision 551, 6.02.2012.):
(click to enhance)
In the code most frequent change is this: import org.universAAL.middleware.owl.Restriction; -> import org.universAAL.middleware.owl.MergedRestriction;
Note that this javadoc is always up to date since it is automatically created by hudson and that in case of future updates on the svn some discrepancies from the above class diagram may appear. http://depot.universaal.org/hudson/job/middleware/site/middleware.core/mw.data.representation.core/apidocs/index.html
Found a problem?
- Report suggestions, missing, outdated or wrong documentation creating an Issue with "documentation" tag
Tutorials:
Support: Found a problem?- Report suggestions, missing, outdated or wrong documentation creating an Issue with "documentation" tag