Project structure

RapidClipse automatically generates a standard project structure consisting of the 5 main packages, and additionally a "frontend"-folder for Vaadin themes. Thus, RapidClipse provides an application architecture that strictly separates different application layers, in particular the UI layer, the data storage layer (Entities), and the data query layer (Data Access).

  • main-java - Here you can see all your source code, such as entities, business classes, UI classes etc.

  • main-resources - Here you can see the resources used by the application server, e.g. icons used in the Java code, language files.

  • main-webapp - Here you can see the resources used by the client e.g. icons, images used in CSS, CSS code

  • test-java - Here the test classes can be created

  • test-resources - Here you can create the resources that will be used by the test classes.

  • frontend - Here the vaadin theme files are located

RapidClipse generates a default package structure, but you can also deviate from this and structure your project completely yourself using a standard Eclipse view like Project Explorer or Package Explorer.

In Project Management view, all of them have a separate area. Besides, there is another area:

  • Project - Here you can see all your projects, as well as the generated target folder, which contains your built application, or the pom.xml, which is needed for Maven.

image not found

Important entries in Project Management

  • Project area

    • JRE System Library - files of the Java Runtime Environment.

    • Maven Dependencies - Required libraries that are automatically downloaded from the Maven repository and included in the RapidClipse project.

    • ehcache.xml - EhCache configuration file. RapidClipse uses EhCache as second-level cache for Hibernate by default to accelerate database accesses via Hibernate.

    • persistence.xml - JPA configuration file, which among other things defines Hibernate as JPA provider.

      <?xml version="1.0" encoding="UTF-8"?>
      <persistence version="2.1"
          xmlns="http://xmlns.jcp.org/xml/ns/persistence"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
          <persistence-unit name="examples">
              <provider>
                  org.hibernate.jpa.HibernatePersistenceProvider
              </provider>
              <class>com.company.examples.entities.Automaker</class>
              <class>com.company.examples.entities.Carmodel</class>
              <class>com.company.examples.entities.Extra</class>
              <class>com.company.examples.entities.Car</class>
              <properties>
                  <property name="hibernate.cache.use_second_level_cache"
                      value="true" />
                  <property name="hibernate.cache.use_query_cache"
                      value="true" />
                  <property name="hibernate.cache.region.factory_class"
                      value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
                  <property name="javax.persistence.sharedCache.mode"
                      value="DISABLE_SELECTIVE" />
                  <property name="hibernate.archive.autodetection"
                      value="class, hbm" />
                  <property name="hibernate.show_sql" value="false" />
                  <property name="hibernate.hbm2ddl.auto" value="validate" />
                  <property name="hibernate.transaction.auto_close_session"
                      value="false" />
                  <property name="hibernate.dialect"
                      value="org.hibernate.dialect.H2Dialect" />
                  <property name="javax.persistence.jdbc.driver"
                      value="org.h2.Driver" />
                  <property name="javax.persistence.jdbc.url"
                      value="jdbc:h2:tcp://localhost:5435/northwind;IFEXISTS=TRUE" />
                  <property name="javax.persistence.jdbc.user" value="sa" />
                  <property name="javax.persistence.jdbc.password" value="" />
              </properties>
          </persistence-unit>
      </persistence>
    • pom.xml - Maven configuration file. Here dependencies are specified that the RapidClipse project has to other libraries.

      <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>com.company</groupId>
          <artifactId>ecample</artifactId>
          <packaging>war</packaging>
          <name>Ecample</name>
          <version>0.1.0-SNAPSHOT</version>
          <build>
              <resources>
                  <resource>
                      <directory>src</directory>
                      <excludes>
                          <exclude>**/*.java</exclude>
                          <exclude>**/*.ui.xml</exclude>
                      </excludes>
                  </resource>
              </resources>
              <sourceDirectory>src</sourceDirectory>
              <plugins>
                  <plugin>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>3.3</version>
                      <configuration>
                          <source>1.8</source>
                          <target>1.8</target>
                      </configuration>
                  </plugin>
                  <plugin>
                      <artifactId>maven-war-plugin</artifactId>
                      <version>2.6</version>
                      <configuration>
                          <warSourceDirectory>WebContent</warSourceDirectory>
                          <failOnMissingWebXml>false</failOnMissingWebXml>
                          <warName>${project.name}</warName>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
          <repositories>
              <repository>
                  <id>vaadin-addons</id>
                  <url>http://maven.vaadin.com/vaadin-addons</url>
              </repository>
          </repositories>
          <dependencies>
              <dependency>
                  <groupId>com.xdev-software</groupId>
                  <artifactId>xdev-server-core</artifactId>
                  <version>1.2.0</version>
              </dependency>
              <dependency>
                  <groupId>com.xdev-software</groupId>
                  <artifactId>xdev-server-ui</artifactId>
                  <version>1.2.0</version>
              </dependency>
              <dependency>
                  <groupId>com.xdev-software</groupId>
                  <artifactId>xdev-server-aa</artifactId>
                  <version>1.2.0</version>
              </dependency>
              <dependency>
                  <groupId>com.xdev-software</groupId>
                  <artifactId>xdev-server-aa-ui</artifactId>
                  <version>1.2.0</version>
              </dependency>
          </dependencies>
          <properties>
              <project.build.sourceEncoding>
                  UTF-8
              </project.build.sourceEncoding>
          </properties>
      </project>
    • web.xml - configuration file that is included in the servlet container as a web application via the application.

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
        <display-name>Ecample</display-name>
        <welcome-file-list>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.htm</welcome-file>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>default.html</welcome-file>
          <welcome-file>default.htm</welcome-file>
          <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
      </web-app>
  • main-java

    • MainLayout.java - Default layout created by RapidClipse. View. The designation MainLayout can be changed at any time.

    • AppShell.java - Configure Vaadin application features and the host page.

    • AppServlet.java - Servlet file.

      package com.company.demoproject;
      
      import javax.servlet.annotation.WebServlet;
      
      import com.rapidclipse.framework.server.RapServlet;
      
      
      @WebServlet(urlPatterns = "/*", asyncSupported = true)
      public class AppServlet extends RapServlet
      {
          public AppServlet()
          {
              super();
          }
      }