This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Category: News

Quality check AddOn for VisionX

We have a brand new AddOn for you! It's simply awesome.

Imagine you have a large application with many screens and life-cycle objects. The deployent date is tomorrow. All manual tests today were successful. You leave the office and your colleague updates the database and doesn't tell you something about the changes. The deployment could be a destroyment :) without retesting!

Sure, a manual test of application functionality is great and also automatic UI tests are helpful. But both tests need some time and a test tool for automatic UI tests. We had the simple idea that a great improvement would be an automatic screen and life-cycle object test by an ANT task.

You could reduce error sources if it's guaranteed that a screen can be opened at runtime! This means that the object in the life-cycle object will work as well. But it's also possible that you have some database access objects in the life-cycle object, without GUI references, e.g. for Reporting purposes. Such objects can't be found with simple screen open tests.

Our idea was that we could check all database objects from your life-cycle objects automatically and we could start the application in a headless mode to open/close your screens. Both checks could be executed as ANT task before war file creation. Sounds interesting?

We have an AddOn with above features for VisionX.

Here are some screenshots of the build results:

Project view with ANT results

Project view with ANT results

The life-cycle object MasterData contains the DBStorage errorData. The storage uses the write-back table ERRORDATA wich isn't available in the database. The quality check shows:

Found LCO: com.sibvisions.apps.example1.screens.MasterData
        -> masterdata [OK] => [ID, FIRSTNAME, LASTNAME, DOB]
        -> errorData [ERROR: Meta data couldn't load from database! - SELECT * FROM ERRORDATA
           WHERE 1=2]

Only the ANT output:

Quality checks ANT results

Quality checks ANT results

The life-cycle object had an error, but the MasterDataWorkScreen works because errorData wasn't used while opening the screen.

The screens SimpleErrorWorkScreen and ShowErrorWorkScreen can't be opened because initialization failed. The life-cycle objects work without problems!

The checks are fast and can be executed without GUI. The application will be started with headless UI and it acts like any other JVx application with all supported features.

The AddOn is a massive improvement for your quality requirements.

Mavenized everything

We're happy to announce that all our projects are available as Maven artifacts.
Not all of our projects are public and aren't available in public Maven repositories, but we offer our own nexus for all this projects.

Which projects aren't public?

  • Vaadin Charts UI
  • Vaadin responsive application frame
  • Application client
  • Application server
  • Application Services
  • JavaFX mobile UI
  • Oracle Forms extension

We provide snapshot and release artifacts. All other - public - projects are available via maven central as release or snapshot artifacts.

  • JVx
  • JVx EE
  • Vaadin UI
  • JavaFX UI
  • Headless UI
  • Online help
  • JVx mobile

Our private Maven repository is available on a subscription basis. This doesn't mean that our private projects aren't open source projects, but we don't offer snapshot or release artifacts for them!

ProjX/Applications API changes

We'll chang the API of ProjX applications for some listeners. The changes are available in our nightly/weekly builds and in our repository. Please be sure to test your applications because generic listeners won't throw an exception at compile time, only at runtime.

IBeforeOpenWorkScreenListener

public void beforeOpenWorkScreen(ProjX pApplication, String pClassName, Modality pModality, AbstractConnection pConnection) throws Throwable;

to

public void beforeOpenWorkScreen(WorkScreenEvent pEvent) throws Throwable;

IAfterOpenWorkScreenListener

public void afterOpenWorkScreen(ProjX pApplication, IWorkScreen pScreen) throws Throwable;

to

public void afterOpenWorkScreen(WorkScreenEvent pEvent) throws Throwable;

IBeforeCloseWorkScreenListener

public void beforeCloseWorkScreen(ProjX pApplication, IWorkScreen pScreen) throws Throwable;

to

public void beforeCloseWorkScreen(WorkScreenEvent pEvent) throws Throwable;

IAfterCloseWorkScreenListener

public void afterCloseWorkScreen(ProjX pApplication, IWorkScreen pScreen) throws Throwable;

to

public void afterCloseWorkScreen(WorkScreenEvent pEvent) throws Throwable

IOpenWorkScreenExceptionListener

public void openWorkScreenException(ProjX pApplication, String pClassName, Modality pModality, Throwable pCause) throws Throwable;

to

public void openWorkScreenException(WorkScreenExceptionEvent pEvent) throws Throwable;

IVetoOpenWorkScreenListener

public void vetoOpenWorkScreen(ProjX pApplication, String pClassName, Modality pModality, Map<String, Object> pParameter) throws Exception;

to

public void vetoOpenWorkScreen(WorkScreenEvent pEvent) throws Exception;

Monitoring AddOn for VisionX

Our Monitoring tool for JVx applications is very useful for application maintenance but also for application development. It safes time, problems and costs. The tool itself is a standalone JVx application and it connects to another JVx application which was configured with the monitoring plugin. It's not a hard job to configure a JVx application for monitoring, but it's boring.

We now have a really great VisionX AddOn which does all the boring work for you. It configures your applications for monitoring and makes it possible to monitor your applications during development time. It's very helpful to find bottlenecks or to do tuning before deployment :)

The plugin comes with an additional awesome Feature, which isn't available without the AddOn. It's the maintenance module. This module allows you to switch your application(s) in maintenance mode. You could use the maintenance mode to do manual database updates, config updates or simple health checks.

We have a short demo video which shows how it works:

VisionX Monitoring AddOn

The AddOn will be available in our Solution store, but not for free. The monitoring tool needs a separate license.

DOAG 2016 - I'm a Speaker

I'm a Speaker I'm a speaker at DOAG 2016 in Nuremberg.
My talk will be about "JVx introduces itself. Back to efficiency"

Maven central: JVx.web snapshots

Our JVx headless UI (aka JVx.web) implementation is available as maven snapshot:

<dependency>  
  <groupId>com.sibvisions.web</groupId>    
  <artifactId>headless</artifactId>  
  <version>1.2-SNAPSHOT</version>
</dependency>

Don't forget the snapshot repository:

<repository>  
  <id>sonatype-nexus-snapshots</id>    
  <name>Sonatype Snapshots</name>  
  <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

Maven central: JVx.mobile snapshots

Our JVx mobile project is available as maven snapshot:

<dependency>  
  <groupId>com.sibvisions.mobile</groupId>    
  <artifactId>mobile-server</artifactId>  
  <version>1.0.1-SNAPSHOT</version>
</dependency>

and only the API

<dependency>  
  <groupId>com.sibvisions.mobile</groupId>    
  <artifactId>mobile-api</artifactId>  
  <version>1.0.1-SNAPSHOT</version>
</dependency>

Don't forget the snapshot repository:

<repository>  
  <id>sonatype-nexus-snapshots</id>    
  <name>Sonatype Snapshots</name>  
  <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

Maven central: JavaFX UI snapshots

Our JavaFX UI for JVx is available as maven snapshot:

<dependency>  
  <groupId>com.sibvisions.jvx</groupId>    
  <artifactId>jvxfx</artifactId>  
  <version>1.2-SNAPSHOT</version>
</dependency>

or only JavaFX extensions

<dependency>  
  <groupId>com.sibvisions.jvx</groupId>    
  <artifactId>jfxtensions</artifactId>  
  <version>1.2-SNAPSHOT</version>
</dependency>

and don't forget the snapshot repository:

<repository>  
  <id>sonatype-nexus-snapshots</id>    
  <name>Sonatype Snapshots</name>  
  <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

Maven central: Online Help System

Our JVx online help system is available as maven artifact:

<dependency>  
  <groupId>com.sibvisions.help</groupId>    
  <artifactId>help-server</artifactId>  
  <version>1.1</version>
</dependency>
<dependency>  
  <groupId>com.sibvisions.help</groupId>    
  <artifactId>help-themes</artifactId>  
  <version>1.1</version>
</dependency>

and as snapshot (weekly):

<dependency>  
  <groupId>com.sibvisions.help</groupId>    
  <artifactId>help-server</artifactId>  
  <version>1.2-SNAPSHOT</version>
</dependency>
<dependency>  
  <groupId>com.sibvisions.help</groupId>    
  <artifactId>help-themes</artifactId>  
  <version>1.2-SNAPSHOT</version>
</dependency>
<repository>  
  <id>sonatype-nexus-snapshots</id>    
  <name>Sonatype Snapshots</name>  
  <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

JVx 2.5 - summer release

The next JVx release will be version 2.5. It will be available by the end of this week (beginning of July). It's a really cool release because JVx got awesome new features. We had to change the API a little bit but it shouldn't be a problem for your existing applications.

What will be interesting?

  • Push-light

    Our push support has nothing to do with Websockets. It's a technology independent solution for JVx. The Push-light mechanism is available on server-side and enables you to send objects from the server to the client. If you use a direct connection betwenn client and server, the objects wil be sent immediate (e.g. vaadin UI). If you use a serialized connection, the objects will be sent with next client call or alive check.

    The API is simple:

    SessionContext.publishCallBackResult("MESSAGE", "Please logout!");

    or, in a Thread

    final ICallBackBroker broker = SessionContext.getCurrentInstance().getCallBackBroker();

    Thread th = new Thread(new Runnable()
    {
        public void run()
        {
            try
            {
                int i = 0;

                while (isMessageLoopEnabled(i))
                {
                    Thread.sleep(200);
                   
                    broker.publish("MESSAGE", getMessage(i++));
                }
            }
            catch (InterruptedException ie)
            {
                //done
            }
        }
    });
    th.start();

    It's also possible to publish to all clients, via ICallBackBroker.

    The client code is short and simple:

    connection.addCallBackResultListener(new ICallBackResultListener()
    {
        public void callBackResult(CallBackResultEvent pEvent)
        {
            if ("MESSAGE".equals(pEvent.getInstruction()))
            {
                showMessage((String)pEvent.getObject());
            }
        }
    });

    More details: Tickets #25, #1635

  • H2 DB support

    We support H2 with a custom H2DBAccess. The auto detection works with URLs: jdbc:h2:.

  • SQLite DB support

    We support SQLite with a custom SQLiteDBAccess. The auto detection works with URLs: jdbc:sqlite:.

  • MySql limit support

    Read more...

  • Life-cylcle object method inheritance
  • Pie control
  • Set individual cells of a table readonly
  • Connection retries

    We try to re-send requests, if errors occur during transmission. This feature will be available for serialized connections only.

  • Security improvements

    see Tickets: #1605, #1606, #630.

  • API changes

    ICellFormat got a Style attribute and the createCellFormat of IFactory got one more parameter