New CI Server

Posted by Werner Keil on Jun 02, 2015 | Comments

As free CloudBees hosted Jenkins servers gave a wrong impression of broken builds by shutting down the build job without commits for some time, we recently switched all relevant build jobs to CircleCI which so far refrains from this annoying behavior.

Agorava Core 0.7.0 released

Posted by Antoine Sabot-Durand on Nov 20, 2013 | Comments

After 3 month of development, Agorava version 0.7.0 hit Maven Central today. It is from far the biggest evolution of the framework since its creation. Let’s see what’s new in this release

API & SPI stabilization

Probably the most important point for Agorava future : the framework has now a clean API (API and implementation were a bit mixed and moving a lot prior to that)

Introduction of new concepts

This version brings new concepts and tools that ease and rationalize OAuth interaction

OAuthLifeCycleService : a single entry point to manage "OAuth Dance"

OAuth initialization steps (the famous OAuth Dance) are now gathered in a single service bean : OAuthLifeCycleService. The startDanceFor() and endDance() methods ease the OAuth 1.0a and 2.0 initialization life cycle.

Repositories to store OAuthSessions

This version introduces UserSessionRepository which allows to handle and contain a collection of OAuthSession (connection to OAuth provider). A main repository bean GlobalRepository stored in CDI @ApplicationScoped contains all UserSessionRepository and is a convenient way to retrieve all OAuthSession on the server side for batch processing for instance.

UserSessionRepositoryResolver and SessionResolver

Depending on your use case UserSessionRepository (and their contained OAuthSession) can be store in different way. Thanks to UserSessionRepositoryResolver and SessionResolver you can define different way of storing and resolving repositories and session. Agora provide the following built-in resolver than can be activated in Agorava.properties configuration file. These built-in resolver are :

  • session : the UserSessionRepository is stored in Http Session (@SessionScoped) it was the Agorava behavior before version 0.7.x

  • request : the UserSessionRepository is provided for the current Http Request (@RequestScoped) but you have to propagate the repoid url parameter with UserSessionRepository.getId() value to retrieve the repo at each request

  • cookie : the UserSessionRepository is provided for the current Http Request (@RequestScoped), a cookie is used on user browser to keep the track of her UserSessionRepository. You can specify the lifetime of the cookie int he config

  • application : the UserSessionRepository is provided for all the application time (@ApplicationScoped). Not suitable for a multi-user scenario but rather for desktop scenario or a web app providing a shared access to a unique Social Network

Reducing framework dependencies

This Agorava release reduced it’s dependencies to the minimum. The only dependecies are now :

  • Jackson library for JSon mapping

  • Deltaspike for CDI helpers.

Ready for other JSR 330 implementation

Agorava core is now ready to have a new implementation for another JSR 330 compliant framework like Dagger, Guice or Spring.

Want to give a try ?

check our Getting Started guide and give us your feedback.

Want to contribute ?

We really need contribution on core, doc, existing modules or new modules. So don’t hesitate to join us :

Agorava 0.7.0 Release notes

Bug

  • [AGOVA-48] - Remove Weld Core dependency management from Weld-1.x profile

  • [AGOVA-60] - Test don’t pass for OWB

  • [AGOVA-61] - SessionProducer get activated when producerscope in not definied

  • [AGOVA-62] - Passivation error for GlobalRepositoryImpl on GF / Weld 2.0.4

  • [AGOVA-63] - When using Weld 2.X on Wildfly 8 or Glassfish 4, looking for OAuthSession fails

Enhancement

  • [AGOVA-38] - Integrate Rest and OAuth engine in core

  • [AGOVA-49] - Remove BOM from parent

  • [AGOVA-54] - Adding support of Raw JSON / XML response

  • [AGOVA-55] - Upgrade Jackson to 2.X

  • [AGOVA-56] - Get rid of Guava

  • [AGOVA-57] - Get rid of Commons Codec

  • [AGOVA-58] - Gather testing profile in parent POM

  • [AGOVA-59] - Use RequestTuner to specialize request instead of creating specific OAuthService

Feature Request

  • [AGOVA-40] - OAuthSession production should be ready for all application type (not only Web with HttpSession)

  • [AGOVA-52] - Support to programmatically control callback URL pr auth request

  • [AGOVA-53] - OAuthComplete Event is unstable as a User facing API

Task

  • [AGOVA-7] - Create API and common IMPL for JSR 330 compliant framework

Agorava Core 0.6.1 released

Posted by Antoine Sabot-Durand on Aug 07, 2013 | Comments

Agorava core version 0.6.1 just hit Maven Central today, it corrected some issues in 0.6.0 and added interesting features.

Release notes

Bug

  • [AGOVA-33] – NPE when no OAuthSession producer is found
  • [AGOVA-34] – Unserializable exception for OAuthSession on Wildfly 8.0

Enhancement

  • [AGOVA-35] – Add Weld 2.0 Test profiles
  • [AGOVA-39] – Adopt JBoss Community code formating
  • [AGOVA-45] – Switch to a BOM model
  • [AGOVA-46] – Officially switch to git flow maven plugin for release

Feature Request

  • [AGOVA-36] – No more resetConnection() in 0.6.0
  • [AGOVA-37] – Add a Servlet to manage callback in OAuth Dance

What does it mean in plain english? Let’s see.

CDI 1.1 and Weld 2.x support

A big thanks to Aslak Knustsen on this point. He added profiles to launch test with Weld 2.x and correxted some issue with Agorava CDI extension preventing it to run under CDI 1.1.
Agorava now support OpenWebBeans 1.1.7 and Weld from 1.1.5 to 2.0.2. We’ll continue to extends CDI support in next release especially with OpenWebBeans 2.x when it’ll be ready.

Servlet to manage callback in OAuth initialization

An old feature request was achieved in this release the callback servlet that deal with the end of OAuth initialization process. Its default behavior is to close the current window (working for a popup) but you can easily override it to add your behavior.

Dependency Management with maven BOM

Dependencies are now managed by a Maven Bill Of Material, it will allow Agorava users to integrate Agorava dependencies more easily than with a parent pom. You’ll just have to add this to the `dependencyManagement` section of your project :

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.agorava</groupId>
                <artifactId>agorava-bom</artifactId>
                <version>0.6.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement> 

thanks

Again, many thanks to Aslak Knutsen for his help and to George Gastaldi for his feedback and work on PicketLink integration.

What’s next ?

Version 0.7.0 has started (for real this time), we’re going to integrate our own OAuth engine to prepare migration to OAuth client framework and add support to Apache Camel to provide better integration solution (especially for Social Media providing Streaming API).
In the meantime go for :

  <dependency>
      <groupId>org.agorava</groupId>
      <artifactId>agorava-core-impl-cdi</artifactId>
      <version>0.6.1</version>
  </dependency>

check our Getting Started guide and give us your feedback

Agorava Core 0.6.0 released

Posted by Antoine Sabot-Durand on Jul 13, 2013 | Comments

Agorava core version 0.6.0 just hit Maven Central, even if the release notes are quite short, there are a lot of big improvement in this release.

Release notes

First things first, here are the release notes.

Bug

  • [AGOVA-29] – Tests fail with OpenWebBeans

Enhancement

  • [AGOVA-23] – Get Rid of JBoss Logging
  • [AGOVA-30] – Agorava OAuth 2.0 support doesn't follow rfc6749 (was Agorava doesn't support Empire Avenue)
  • [AGOVA-31] – Removing Generics to ease control of the framework

Quite terse isn’t it? Let’s focus on main points

Stop using JBoss Solder Generics: a long story

To ease creation of new modules and end user’s application configuration, Agorava integrated from the beginning a solution to automatically create some generics beans. This solution was based on JBoss Solder Generic Beans extension. As you may know, Solder development was discontinued to be integrated in Apache Deltaspike. I tried 3 times to have this Solder functionality integrated to Deltaspike, but hadn’t enough time and energy to convince Deltaspike tech leader that it could benefit to other CDI framework development projects.
The problem was that Agorava was using Generics and that it was no more supported. First decision was to get this code from Solder and put it in an Agorava module. So we created Agorava-Utils (thanks to Ove Ranheim). In Agorava utils we put our own version of Solder Generics,but there were still issues with this solution, the main one being that Generics in Solder only worked with Weld.
So for his release, we decided to drop Generics and write our own extension system to automatically generate certain beans for each social media. Consequences of this redesign are a lighter code base to main and more important OpenWebBeans compatibility.

OpenWebBeans support

We added profile to test our code code against Apache OpenWebBeans 1.1.7+ (version used in Apache TomEE 1.5.1) and made sure that Socializer:https://github.com/agorava/agorava-socializer (our demo application) perfomed well under TomEE.
Off course Agorava still supports JBoss Weld 1.1.5+ (version present in JBoss AS 7.1.1).
So now Agorava works on the 2 main CDI implementations.

So long Solder, Hello Deltaspike

Leaving JBoss Solder include leaving JBoss Logging. We now use JUL as logging to continue reducing framework’s dependencies. Our new engine that replace Solder, makes use of Apache Deltaspike utility to register new beans when framework gets initialized. If you are interested to see how we use them, pay a visit to AgoravaExtension. I’ll probably write an article on this extension system.

Modules simultaneous release

For the first time, we also release simultaneously, Facebook, LinkedIn and Twitter module to 0.6.0 version. These release are there to provide modules supporting the new 0.6.0 API.

A fresh documentation

Finally, we updated the getting started guide to add the simplification we introduced with this release. Other documentation will be deliver in the coming week, so stay tuned.

What’s next ?

Version 0.7.0 has started, we’re going to integrate our own OAuth engine to prepare migration to OAuth client framework and add support to Apache Camel to provide better integration solution (especially for Social Media providing Streaming API).
In the meantime go for :

  <dependency>
      <groupId>org.agorava</groupId>
      <artifactId>agorava-core-impl-cdi</artifactId>
      <version>0.6.0</version>
  </dependency>

and give us your feedback