Giter VIP home page Giter VIP logo

krail's Introduction

krail

License Gitter Build Status Coverage Status

==========================================================

NOTICE

28 Sep 2019

It is with great regret that I have decided not to develop Krail any further. A lot of work went into it, and although it received some interest, sadly not enough to make it worth maintaining.

==========================================================

Krail provides a framework for rapid Java web development by combining Vaadin, Guice, Apache Shiro, Apache Commons Configuration and others. For more information, see the comprehensive Tutorial, which also makes a reasonable demo. (You can clone directly from the Tutorial repo). Note that the tutorial is based on the Vaadin 7 version of Krail - it should still be possible to follow it, but it will not be updated until the move to Eclipse Vert.x is done (or fails!)

This core library provides:

  • Site navigation, using a sitemap configured by annotation or Guice
  • Authentication / Authorisation framework, including page access control
  • Vaadin Server Push (with option to disable it)
  • Event Bus
  • Extensive I18N support
  • User options
  • Application configuration through ini files, database etc
  • JSR 303 Validation (integrated with I18N)
  • Forms support
  • User notifications

The framework is highly configurable, and virtually any element of it can be replaced by using Guice bindings.

Development Focus

The current focus for development is to provide full Forms support, running on Vertx. So far, thanks to the great contribution from Marco Collovati, running on Vertx has shown no specific issues.

It is intended that the same code can be run both on Vertx and a conventional web server environment, and a bootstrapping mechanism is provided for that purpose.

The extensive Documentation, includes a Tutorial, user Guide and Developer Guide. The Tutorial is currently limited to the Vaadin 7 version, and needs rewriting to include new features.

Source Code

Originally written in Java the source is gradually being migrated to Kotlin. Tests are a mix of JUnit, Spock and Spek. The intention is to end up with an all-Kotlin solution, but porting is usually only done when code changes are required for other reasons.

Versions

Krail version Vaadin
0.12.x.x version 7
0.13.x.x-v7compat version 8, running version 7 compatibility
0.14.x.x and beyond, pure Vaadin 8

Download

Gradle

repositories {
	jcenter()
}
'uk.q3c.krail:krail:0.16.12.0'

Maven

<repository>
	<id>jcenter</id>
	<url>http://jcenter.bintray.com</url>
</repository>

<dependency>
	<groupId>uk.q3c.krail</groupId>
	<artifactId>krail</artifactId>
	<version>0.16.12.0</version>
</dependency>

Direct

Download

Limitations

Testing on Vertx has been limited, particularly on clustered Vertx. Having said that, functional tests run on Vertx have shown no issues except that Push does not correctly disable.

Status

  • Vaadin 8.3.3 is integrated with:
  • Guice 4.1.0
  • Shiro 1.4.0,
  • MBassador (Event Bus)
  • Apache Commons Configuration
  • Guava cache

Functional Test Application

There is a functional test application which can also be used to explore functionality - though the Tutorial may be better for that

Project Build

Gradle is used (made a lot easier thanks to the Gradle Vaadin plugin.

Acknowledgements

Thanks to:

Marco Collovati for his work on Vaadin - Vertx integration, and support for core Krail development
Dirk Lietz for his review and feedback for the Tutorial
Mike Pilone for his blog post on Vaadin Shiro integration

ej technologies for an open source licence of JProfiler
Vaadin
Guice
Apache Shiro
JUnit
Guava (cache and utilities)
MBassador Event Bus
Flag Icons
Apache Commons Configuration
Gradle
Gradle Vaadin plugin
Gradle Docker Plugin
Gradle Bintray Plugin
Bintray
Docker
Logback
slf4j
AssertJ
Mycila
Mockito
spock
Spek
FindBugs Mockk

krail's People

Contributors

odhrean avatar taurus227 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

krail's Issues

OSGi

Have another think about it - it would be useful. Apache Karaf may have some relevance

Navigator - longest URI logic

The Navigator start the page change process it does quite a lot of work to establish whether a view has the longest matching URI. This is needed for a native application, but the injection approach doesn't need it?

UI detach

As part of #24 I tried to use ScopeUI.detach() to release the UI from the UIScope cache, am unable to test it. The detach() method does not appear to be called - or it may just be that the framework deals with it in as part of its own caching, given that the close() method is just a signal for the framework to close the UI. A question for the Vaadin team.

Common Base View

There is a little code usefully common to all Views - capturing parameters being the main one

Warning while testing

The following is generated between execution of JUnit test methods:

Nov 19, 2012 6:15:02 PM com.google.inject.servlet.GuiceFilter setPipeline
WARNING: Multiple Servlet injectors detected. This is a warning indicating that you have more than one GuiceFilter running in your web application. If this is deliberate, you may safely ignore this message. If this is NOT deliberate however, your application may not work as expected.

It would be nice to get rid of the red text!

dirty view handling

In the base view, and also in the navigator to check for a dirty view and acting according to preferences (ignore / prompt / autosave)

Multiple UIs

Demonstrate use of multiple UIs - perhaps one with navigation tree on left, one without

home with params loses a character

Passing a uri of home (empty string ) with parameters requires a leading '/'. Examples:

id=2/age=5 will pass parameters of d=2/age=5  (the first  'i' is missing)
/id=2/age=5 will pass the parameters correctly

I'm not sure that is wrong but it is predicatble so worth trapping

Injector not serailisable

Would become an issue under load balancing, as the injector would be null after de-serialisation
There was some discussion about this on the Guice forums - I think the solution was something about static injection

Public demo

Find a hosting site somewhere
Add a link to GitHub from the demo
Post on Vaadin 7 forum

Quartz

Always a useful addition

UI Scoped injection

There will be occasions where a stateful injection should be guaranteed to be the same instance whenever it is used in the context of a UI instance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.