ee-mvc #6

Merged
jensp merged 867 commits from ee-mvc into master 2020-09-16 11:25:25 +02:00
548 changed files with 14372 additions and 10345 deletions

9
.gitignore vendored
View File

@ -1,4 +1,13 @@
it-pgsql-datasources.properties
nb-configuration.xml
node
node_modules
runtime
target
.cache
.classpath
.factorypath
.project
.settings
.tscache
*.vscode

85
INSTALL.md 100644
View File

@ -0,0 +1,85 @@
# LibreCCM/LibreCMS Installation
## WildFly
### Preparation (optional)
These steps are optional and can be skipped if you have already a WildFly server
up and running or if you already installed the PostgreSQL JDBC driver in your
WildFly instance.
#### WildFly installation
Download WildFly and extract the archive. For more informations about setting
wildfly please refer to the WildFly documentation
#### Install the PostgreSQL JDBC driver
1. Download the PostgreSQL JDBC driver from
https://jdbc.postgresql.org/download.html
2. Go to the home directory of your WildFly installation and to
`modules/system/layers/base`
3. Create a new directory `org/postgresql/main`
4. Create a `module.xml` file in the `org/postgresql/main` directory with the
following content:
```
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<resources>
<resource-root path="postgresql-42.2.10.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
```
Change the name of the JAR file to the correct name!
5. Start the JBOSS CLI tool: `bin/jboss-cli.sh` or `bin/jboss-cli.bat`. Enable
the new module:
```
[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=postgresql:add(
driver-name=postgresql,
driver-module-name=org.postgresql,
driver-class-name=org.postgresql.Driver
)
```
Note: The above command can be in one line.
### Installing LibreCCM/LibreCMS
#### Database
1. Create a new database user
2. Create a new database in your PostgreSQL server owned by the user created
in the previous step.
#### Create a datasource
1. Start the JBOSS CLI tool: `bin/jboss-cli.sh` or `bin/jboss-cli.bat`.
2. Add new datasource:
```
[standalone@localhost:9990 /] data-source add --name=librecms --driver-name=postgresql --jndi-name=java:/comp/env/jdbc/libreccm/db --connection-url=jdbc:postgresql://localhost:5432/librecm --user-name=libreccm --password=libreccm
```
Replace the name of the datasource, the connection URL,
the user name and the password with the correct values for your environment.
#### Deploy LibreCCM/LibreCMS
Simpley copy the the WAR file from one of the bundle modules to to the
directory `standalone/deployments` of your WildFly installation.
## Thorntail
ToDo
## TomEE
ToDo

26
Jenkinsfile vendored
View File

@ -7,22 +7,25 @@ pipeline {
stage('Build and Test') {
steps {
dir('') {
// sh 'mvn clean package test -Pwildfly-remote-h2-mem'
sh 'mvn clean package -Pwildfly-remote-h2-mem'
}
}
post {
always {
sh 'sudo systemctl restart wildfly'
sh 'mvn clean verify -Prun-its-with-wildfly-h2mem -Dwildfly.propertiesFile=/srv/libreccm-wildfly.properties'
}
}
}
stage("Analyse") {
steps {
dir('') {
sh 'mvn package pmd:pmd pmd:cpd spotbugs:spotbugs'
sh 'mvn pmd:pmd pmd:cpd spotbugs:spotbugs'
}
}
}
}
stage("Deploy") {
steps {
dir('') {
configFileProvider([configFile(fileId: 'libreccm-packages-deploy', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -U -s "$MAVEN_SETTINGS" -e deploy'
}
}
}
}
}
post {
@ -37,8 +40,9 @@ pipeline {
body: "Build ${env.BUILD_URL} failed."
}
always {
junit testResults: '**/target/surefire-reports/*.xml'
junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml'
recordIssues enabledForFailure: true, tools: [java(), javaDoc()]
recordIssues enabledForFailure: false, tool: spotBugs()
recordIssues enabledForFailure: false, tool: cpd(pattern: '**/target/cpd.xml')

110
README.md
View File

@ -1,10 +1,13 @@
# LibreCCM
The [https://libreccm.org](LibreCCM) framework and the
[https://librecms.org](LibreCMS) web content management system.
The [https://libreccm.org](LibreCCM) framework and the
[https://librecms.org](LibreCMS) web content management system.
This repository contains the Jakarta EE based, new version of LibreCCM
and LibreCMS. We are now using Maven as build tool.
## Overview
This repository contains the Jakarta EE based, new version of
[https://libreccm.org](LibreCCM) and [https://librecms.org](LibreCMS). We are
now using Maven as build tool.
Some more documentation is provided as Maven project site. To create the site
run
@ -15,46 +18,86 @@ and open the ./target/staging/index.html file in your browser.
The recreate the site run
mvn clean package site site:stage
mvn package site site:stage
again.
To include integration tests into the reports
Note: The ./target/staging folder is left intact when cleaning. If you
want to remove the folder you have delete it manually.
mvn clean package test site site:stage -P$profile-name
To include integration tests into the reports run
Note: If there are test failures the package goal fails and the site is not
mvn clean verifiy site site:stage -P${profileName}
Note: If there are test failures the build fails and the site is not
build. The build the site anywhy use
mvn clean package site site:stage -Dmaven.test.failure.ignore=true
or with a profile
or with the integration tests included
mvn clean package site site:stage -Dmaven.test.failure.ignore=true -Pwildfly-remote-h2-mem
mvn clean verify site site:stage -Dmaven.test.failure.ignore=true -P${profileName}
The available profiles are listed in the documentation. All modules should
provide a profile called wildfly-remote-h2-mem. This profile uses a remote
Wildfly application server and its integrated H2 in-memory database for
running the tests. Before you can run the integration tests you must download
Wildfly from http://www.wildfly.org. Unzip the downloaded archive and start
the server using the bin/standalone.sh file. Then go to another terminal,
navigate to the CCM NG directory and run
## Running integration tests
mvn clean package test site site:stage -Pwildfly-remote-h2-mem
Some of the modules provide integration tests which use
[Arquillian](http://arquillian.org/) to run tests inside an application server.
If a module provides integration tests it should have at least four profiles
for running them (at the time of writing):
* `run-its-with-wildfly-h2mem`: This profile uses the
[wildfly-maven-plugin](https://docs.jboss.org/wildfly/plugins/maven/latest/)
to start a Wildfly and run the integration tests. The H2 database which is
integrated with Wildfly is used for run the tests. No configuration
is necessary.
* `run-its-with-wildfly-pgsql`: This profile uses the
[wildfly-maven-plugin](https://docs.jboss.org/wildfly/plugins/maven/latest/)
to start a Wildfly and run the integration tests. A PostgreSQL database is
used to run the tests. The connection parameters are configured using
the `it-pgsql-datasources.properties` file in the project root. Make sure
to create a database for all modules and configure them before using
this profile.
* `run-its-in-remote-wildfly-h2mem`: This profile uses a remote Wildfly and
the H2 database for
running the tests. The user it responsible for starting the Wildfly container
and for creating the required databases.
* `run-its-in-remote-wildfly-pgsql`: This profile uses a remote Wildfly and
PostgreSQL databases for
running the tests. The user it responsible for starting the Wildfly container
and for creating the required databases.
To run the integration tests select a profile - we recommend to use the profiles
which use the wildfly-maven-plugin` to manage to Wildfly application server -
and run
mvn verify site site:stage -P${profileName}
## Running LibreCCM (development environment)
Before running a bundle the WAR file has the be generated using
mvn package
To run LibreCCM choose the bundle to run, for instance
ccm-bundle-devel-wildfly. Depending on the bundle and the selected profile
you may have to configure a datasource in the Wildfly server and create a
database. Also you need to configure an environement variable which points to
your Wildfly installation. Then you can run LibreCCM using
`ccm-bundle-devel-wildfly`. You can run the bundle
mvn package wildfly:run -DskipTests -pl ccm-bundle-devel-wildfly -am -Pgeneric
mvn wildfly:run -pl ${bundleName} -am
The above example skips all tests to speed up the start process. The generic
profile used in this example uses an existing Wildfly installation. The
JBOSS_HOME environment variable must either be configured or must be provided.
Alternativly you can provide the location of your Wildfly installation using
the -D switch: mvn -Djboss-as.home=/path/to/wildfly/
This will start a Wildfly server running the selected bundle. Before running
the bundle the Wildfly container has the be configured. For these purpose, run
mvn wildfly:run -pl ${bundleName} -am -Psetup-runtime
This will start the Wildfly server, deploy the bundle WAR, and create a
datasource. At the moment only PostgreSQL is supported as database. The
datasource configuration is provided by the `datasource.properties` file in the
bundle directory. To create one copy the example file and adjust the settings.
You also have to create a wildfly.properties file which contains some settings
for the Wildfly server, for isntance the port the Wildfly server binds to. An
example file is provided.
## Archetypes
To install the archetypes in your local Maven repository run
@ -64,15 +107,6 @@ for example
mvn clean install -pl ccm-cms-archetypes-contenttype -am
Using the managed profiles (example is for testing):
mvn clean test -Djboss.home=/path/to/wildfly/ -DstartupTimeoutInSeconds=180 -Pwildfly-managed-h2-mem
You might need to increase the timeout.
For convience, we also provide a small Bash script which makes calling some Maven tasks easier. For more information please refer to the help of the ccm.sh script:
ccm.sh --help

View File

@ -1 +1 @@
mvn clean package site site:stage -Dmaven.test.failure.ignore=true -Pwildfly-remote-h2-mem
mvn clean verify site site:stage -Dmaven.test.failure.ignore=true -Prun-its-with-wildfly-h2mem

View File

@ -12,7 +12,7 @@
<artifactId>ccm-archetype-module</artifactId>
<version>7.0.0-SNAPSHOT</version>
<name>LibreCCM Module archetype</name>
<name>LibreCCM Module Archetype</name>
<url>http://www.libreccm.org/devel/modules</url>
</project>

View File

@ -183,13 +183,8 @@
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.3</version>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -200,16 +195,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>
-sourceclasspath ${project.build.outputDirectory}
</additionalparam>
</configuration>
</plugin>
@ -228,11 +213,6 @@
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -26,9 +26,7 @@ import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.libreccm.tests.categories.IntegrationTest;
import java.io.File;
import java.util.List;
@ -39,7 +37,6 @@ import javax.persistence.PersistenceContext;
import static org.junit.Assert.*;
@Category(IntegrationTest.class)
@RunWith(Arquillian.class)
@PersistenceTest
@Transactional(TransactionMode.COMMIT)

View File

@ -3,12 +3,6 @@
<modelVersion>4.0.0</modelVersion>
<!--<parent>
<groupId>org.libreccm</groupId>
<artifactId>libreccm-parent</artifactId>
<version>7.0.0-SNAPSHOT</version>
</parent>-->
<parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel</artifactId>
@ -129,6 +123,12 @@
<artifactId>undertow</artifactId>
</dependency>
<dependency>
<groupId>org.libreccm</groupId>
<artifactId>ccm-wildfly</artifactId>
<version>7.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
@ -142,17 +142,14 @@
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>4.7.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs</artifactId>
<version>2.3.6</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs-domready</artifactId>
<version>2.0.1-2</version>
</dependency>
</dependencies>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-shared-configuration>
<!--
This file contains additional configuration written by modules in the NetBeans IDE.
The configuration is intended to be shared among all the users of project and
therefore it is assumed to be part of version control checkout.
Without this configuration present, some functionality in the IDE may be limited or fail altogether.
-->
<spellchecker-wordlist xmlns="http://www.netbeans.org/ns/spellchecker-wordlist/1">
<word>libreccm</word>
</spellchecker-wordlist>
</project-shared-configuration>

View File

@ -1,227 +0,0 @@
<?xml version="1.0"?>
<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">
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel</artifactId>
<relativePath>../ccm-bundle-devel</relativePath>
<version>7.0.0-SNAPSHOT</version>
</parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<!--<version>7.0.0-SNAPSHOT</version>-->
<packaging>war</packaging>
<name>LibreCCM Devel Bundle Web for Wildfly</name>
<url>http://www.libreccm.org/modules/web/wildfly</url>
<dependencies>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<!--<version>4.7.0</version>-->
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs</artifactId>
<!--<version>2.3.5</version>-->
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs-domready</artifactId>
<!--<version>2.0.1-2</version>-->
</dependency>
<dependency>
<groupId>org.webjars.npm</groupId>
<artifactId>tinymce</artifactId>
<!--<version>4.8.2</version>-->
</dependency>
<!-- <dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-js</artifactId>
<version>7.0.0-SNAPSHOT</version>
</dependency> -->
<dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-pagemodelseditor</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-tinymce</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
<build>
<finalName>libreccm-web-wildfly</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<debug>true</debug>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<installDirectory>../node</installDirectory>
</configuration>
<executions>
<execution>
<id>Install node.js and NPM</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v8.11.4</nodeVersion>
</configuration>
</execution>
<!-- <execution>
<id>npm link ccm-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-pagemodelseditor</arguments>
</configuration>
</execution> -->
<execution>
<id>npm link ccm-cms-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-cms-pagemodelseditor</arguments>
</configuration>
</execution>
<!-- <execution>
<id>npm link ccm-cms-tinymce</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-cms-tinymce</arguments>
</configuration>
</execution>-->
<!--<execution>
<id>npm link ccm-cms-js</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-cms-js</arguments>
</configuration>
</execution>-->
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
</execution>
<execution>
<id>build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</webResources>
<overlays>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-editor</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-pagemodelseditor</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-theme-foundry</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>assets/</include>
</includes>
</overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms</artifactId>
<type>jar</type>
<includes>
<include>templates/</include>
</includes>
</overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-tinymce</artifactId>
<type>jar</type>
<includes>
<include>scripts/</include>
</includes>
</overlay>
</overlays>
</configuration>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,107 +0,0 @@
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel</artifactId>
<relativePath>../ccm-bundle-devel</relativePath>
<version>7.0.0-SNAPSHOT</version>
</parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<!--<version>7.0.0-SNAPSHOT</version>-->
<packaging>war</packaging>
<name>LibreCCM Devel Bundle Web for Wildfly</name>
<url>http://www.libreccm.org/modules/web/wildfly</url>
<dependencies>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>4.7.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs</artifactId>
<version>2.3.5</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs-domready</artifactId>
<version>2.0.1-2</version>
</dependency>
</dependencies>
<build>
<finalName>libreccm-web-wildfly</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<debug>true</debug>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-editor</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-theme-foundry</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>assets/</include>
<include>VAADIN/</include>
</includes>
</overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms</artifactId>
<type>jar</type>
<includes>
<include>templates/</include>
</includes>
</overlay>
</overlays>
</configuration>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -1 +0,0 @@
import "ccm-cms-pagemodelseditor";

View File

@ -1,12 +0,0 @@
--------------
Overview
--------------
Jens Pelzetter
--------------
2016-03-18
--------------
LibreCCM Bundle Web for Wildfly
This module provides the web application part of the the LibreCCM devel
bundle for the Wildfly application server.

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/DECORATION/1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0
http://maven.apache.org/xsd/decoration-1.3.0.xsd">
<body>
<menu name="Parent project">
<item name="LibreCCM" href="../index.html"/>
</menu>
<menu name="Overview">
<item name="The LibreCCM Devel Bundle Web module" href="index.html"/>
</menu>
<menu ref="reports"/>
</body>
</project>

View File

@ -0,0 +1,2 @@
datasource.properties
wildfly.properties

View File

@ -0,0 +1,42 @@
# ccm-bundle-devel-wildfly README
This module creates a WAR which can be deployed to a Wildfly Application
Server. For testing, the module also provides an runtime environment
and the setup. The runtime is managed using the
[wildfly-maven-plugin](https://docs.jboss.org/wildfly/plugins/maven/latest/).
At the moment the runtime only supports PostgreSQL as database.
To use these runtime some prepration steps are necessary.
1. Create the configuration files. The runtime is configured using two files:
* wildfly.properties allows it to configure the ports used by the Wildfly server
* datasource.properties provides the configuration data for datasource used by
LibreCCM.
For both files examples are provided (`datasource.example.properties`,
`wildfly.example.properties`). Copy the example files and customize
the settings is necessary.
2. Run a build using the `setup-runtime` profile. It is important to add the
`package` goal, otherwise the WAR file which is deployed in this step is
not build correctly:
```
mvn package -Psetup-runtime -pl ccm-bundle-devel-wildfly -am
```
During the `package` phase of the this module Wildfly will be downloaded,
unpackaged into the `target` directory, the PostgreSQL driver will be
deployed, a datasource will be generated and the WAR file will be deployed.
To run LibreCCM in this environment, use the `enable-runtime` profile and the `wildfly:start`
goal:
mvn -pl ccm-bundle-devel-wildfly wildfly:start
To shutdown the server:
mvn -pl ccm-bundle-devel-wildfly wildfly:shutdown

View File

@ -0,0 +1,3 @@
libreccm.datasource.connectionUrl=jdbc:postgresql://localhost:5432/ccm-devel-beta
libreccm.datasource.username=ccm
libreccm.datasource.password=ccm

View File

@ -5,7 +5,7 @@
"build": "webpack"
},
"dependencies": {
"ccm-cms-pagemodelseditor": "7.0.0",
"@librecms/ccm-cms-pagemodelseditor": "7.0.0",
"tinymce": "^4.8.2"
},
"devDependencies": {

View File

@ -1,202 +1,387 @@
<?xml version="1.0"?>
<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">
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<wildfly.version>12.0.0.Final</wildfly.version>
</properties>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.libreccm</groupId>
<artifactId>libreccm-parent</artifactId>
<artifactId>ccm-bundle-devel</artifactId>
<relativePath>../ccm-bundle-devel</relativePath>
<version>7.0.0-SNAPSHOT</version>
</parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly</artifactId>
<!--<version>7.0.0-SNAPSHOT</version>-->
<packaging>ear</packaging>
<name>LibreCCM Devel Bundle for Wildfly</name>
<url>http://www.libreccm.org/bundles/devel/wildfly</url>
<packaging>war</packaging>
<name>LibreCCM Devel Bundle for Wildfly</name>
<url>http://www.libreccm.org/modules/web/wildfly</url>
<dependencies>
<dependency>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<version>${project.parent.version}</version>
<type>war</type>
<artifactId>ccm-wildfly</artifactId>
<version>7.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>libreccm-devel-${project.version}</finalName>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<!--<version>4.7.0</version>-->
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs</artifactId>
<!--<version>2.3.5</version>-->
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs-domready</artifactId>
<!--<version>2.0.1-2</version>-->
</dependency>
<dependency>
<groupId>org.webjars.npm</groupId>
<artifactId>tinymce</artifactId>
<!--<version>4.8.2</version>-->
</dependency>
<!-- <dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-js</artifactId>
<version>7.0.0-SNAPSHOT</version>
</dependency> -->
<dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-pagemodelseditor</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-tinymce</artifactId>
<version>${project.parent.version}</version>
</dependency>
<!-- <dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>provided</scope>
</dependency>-->
</dependencies>
<build>
<finalName>libreccm-web-wildfly</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- Tell Maven we are using Java EE 7 -->
<version>7</version>
<!-- Use Java EE ear libraries as needed. Java EE ear libraries
are an easy way to package any libraries needed in the ear,
and automatically
have any modules (EJB-JARs and WARs) use them -->
<defaultLibBundleDir>lib</defaultLibBundleDir>
<outputFileNameMapping>no-version</outputFileNameMapping>
<modules>
<webModule>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<debug>true</debug>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<installDirectory>../node</installDirectory>
</configuration>
<executions>
<execution>
<id>Install node.js and NPM</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v8.11.4</nodeVersion>
</configuration>
</execution>
<!-- <execution>
<id>npm link @libreccm/ccm-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link @libreccm/ccm-pagemodelseditor</arguments>
</configuration>
</execution> -->
<execution>
<id>npm link @librecms/ccm-cms-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link @librecms/ccm-cms-pagemodelseditor</arguments>
</configuration>
</execution>
<!-- <execution>
<id>npm link @librecms/ccm-cms-tinymce</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link @librecms/ccm-cms-tinymce</arguments>
</configuration>
</execution>-->
<!--<execution>
<id>npm link @librecms/ccm-cms-js</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link @librecms/ccm-cms-js</arguments>
</configuration>
</execution>-->
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
</execution>
<execution>
<id>build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</webResources>
<overlays>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<contextRoot>/libreccm</contextRoot>
</webModule>
</modules>
<artifactId>ccm-editor</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-pagemodelseditor</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-theme-foundry</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>assets/</include>
</includes>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>views/</include>
</includes>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>resources/</include>
</includes>
</overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms</artifactId>
<type>jar</type>
<includes>
<include>templates/</include>
</includes>
</overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms-tinymce</artifactId>
<type>jar</type>
<includes>
<include>scripts/</include>
</includes>
</overlay>
</overlays>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<excludeDefaultDirectories>true</excludeDefaultDirectories>
<filesets>
<fileset>
<directory>${project.build.directory}</directory>
<excludes>
<exclude>wildfly*/**</exclude>
</excludes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>false</skip>
<propertiesFile>${project.basedir}/wildfly.properties</propertiesFile>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
</configuration>
</plugin>
</plugins>
</build>
<!-- Profiles for running the bundle in a development environment -->
<profiles>
<!-- Profile which uses a H2 database. The DB file is put into the
project build directory and therefore deleted when the clean phase
runs.
-->
<profile>
<id>h2</id>
<build>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<version>${wildfly.version}</version>
<skip>false</skip>
<add-user>
<users>
<user>
<username>admin</username>
<password>admin123</password>
</user>
</users>
</add-user>
<beforeDeployment>
<commands>
<command>data-source add --jndi-name=java:/comp/env/jdbc/libreccm/db --name=ccm-devel --connection-url=jdbc:h2:${project.build.directory}/libreccm-db;DB_CLOSE_ON_EXIT=FALSE --driver-name=h2 --driver-class=org.h2.Driver --user-name=sa --password=sa</command>
</commands>
</beforeDeployment>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--
Profile which uses a PostgreSQL datasource with a generic
configuration. When using this profile PostgreSQL must run on the
local system and a database with the name "libreccm-devel" which
is accessible by the user "ccm" with the password "ccm47web" must
exist.
-->
<profile>
<id>pgsql</id>
<id>setup-runtime</id>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<executions>
<execution>
<id>read-datasource-properties</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.basedir}/datasource.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<version>${wildfly.version}</version>
<skip>false</skip>
<add-user>
<users>
<user>
<username>admin</username>
<password>admin1234</password>
</user>
</users>
</add-user>
<beforeDeployment>
<commands>
<!--jdbc-drivers/postgresql-9.4.1208.jar-->
<command>module add --name=org.postgres --resources=${project.build.directory}/${project.build.finalName}/lib/postgresql.jar --dependencies=javax.api,javax.transaction.api</command>
<command>/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)</command>
<command>data-source add --jndi-name=java:/comp/env/jdbc/libreccm/db --name=libreccm-devel --connection-url=jdbc:postgresql://localhost:5432/libreccm-devel --driver-name=postgres --driver-class=org.postgresql.Driver --user-name=ccm --password=ccm47web</command>
</commands>
</beforeDeployment>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
<propertiesFile>${project.basedir}/wildfly.properties</propertiesFile>
</configuration>
<executions>
<execution>
<id>start-for-prepare</id>
<goals>
<goal>start</goal>
</goals>
<phase>package</phase>
<configuration>
<stdout>System.out</stdout>
</configuration>
</execution>
<execution>
<id>deploy-jdbc-driver</id>
<configuration>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<name>postgresql.jar</name>
<force>true</force>
</configuration>
<phase>package</phase>
<goals>
<goal>deploy-artifact</goal>
</goals>
</execution>
<execution>
<id>add-datasource</id>
<configuration>
<address>subsystem=datasources,data-source=ccm-devel</address>
<force>true</force>
<resources>
<resource>
<properties>
<connection-url>${libreccm.datasource.connectionUrl}</connection-url>
<jndi-name>java:/comp/env/jdbc/libreccm/db</jndi-name>
<enabled>true</enabled>
<user-name>${libreccm.datasource.username}</user-name>
<password>${libreccm.datasource.password}</password>
<use-ccm>false</use-ccm>
<driver-name>postgresql.jar</driver-name>
</properties>
</resource>
</resources>
</configuration>
<phase>package</phase>
<goals>
<goal>add-resource</goal>
</goals>
</execution>
<execution>
<id>deploy-libreccm-bundle-devel</id>
<configuration>
<force>true</force>
</configuration>
<phase>package</phase>
<goals>
<goal>deploy-only</goal>
</goals>
</execution>
<execution>
<id>shutdown-after-deploy</id>
<phase>package</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
Generic profile for using an existing Wildfly installation.
The datasource for CCM must be configured in the Wildfly instance.
Also the plugin must know where the wildfly installation is. This
can either be done by setting the JBOSS_HOME environment variable or
by providing the location using -Djboss-as.home=/path/to/wildfly
on the command line.
-->
<profile>
<id>generic</id>
<build>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<version>${wildfly.version}</version>
<skip>false</skip>
<startupTimeout>120</startupTimeout>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -6,200 +6,102 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<wildfly.version>10.0.0.Final</wildfly.version>
</properties>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.libreccm</groupId>
<artifactId>libreccm-parent</artifactId>
<artifactId>ccm-bundle-devel</artifactId>
<relativePath>../ccm-bundle-devel</relativePath>
<version>7.0.0-SNAPSHOT</version>
</parent>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly</artifactId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<!--<version>7.0.0-SNAPSHOT</version>-->
<packaging>ear</packaging>
<packaging>war</packaging>
<name>LibreCCM Devel Bundle Web for Wildfly</name>
<url>http://www.libreccm.org/modules/web/wildfly</url>
<name>LibreCCM Devel Bundle for Wildfly</name>
<url>http://www.libreccm.org/bundles/devel/wildfly</url>
<dependencies>
<dependency>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<version>${project.parent.version}</version>
<type>war</type>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>4.7.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs</artifactId>
<version>2.3.5</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>requirejs-domready</artifactId>
<version>2.0.1-2</version>
</dependency>
</dependencies>
<build>
<finalName>libreccm-devel-${project.version}</finalName>
<finalName>libreccm-web-wildfly</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!-- Tell Maven we are using Java EE 7 -->
<version>7</version>
<!-- Use Java EE ear libraries as needed. Java EE ear libraries
are an easy way to package any libraries needed in the ear,
and automatically
have any modules (EJB-JARs and WARs) use them -->
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
<modules>
<webModule>
<groupId>org.libreccm</groupId>
<artifactId>ccm-bundle-devel-wildfly-web</artifactId>
<contextRoot>/libreccm</contextRoot>
</webModule>
</modules>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<debug>true</debug>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-editor</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-theme-foundry</artifactId>
<type>jar</type>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>assets/</include>
<include>VAADIN/</include>
</includes>
</overlay>
<overlay>
<groupId>org.librecms</groupId>
<artifactId>ccm-cms</artifactId>
<type>jar</type>
<includes>
<include>templates/</include>
</includes>
</overlay>
</overlays>
</configuration>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
<!-- Profiles for running the bundle in a development environment -->
<profiles>
<!-- Profile which uses a H2 database. The DB file is put into the
project build directory and therefore deleted when the clean phase
runs.
-->
<profile>
<id>h2</id>
<build>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<version>${wildfly.version}</version>
<skip>false</skip>
<add-user>
<users>
<user>
<username>admin</username>
<password>admin123</password>
</user>
</users>
</add-user>
<beforeDeployment>
<commands>
<command>data-source add --jndi-name=java:/comp/env/jdbc/libreccm/db --name=ccm-devel --connection-url=jdbc:h2:${project.build.directory}/libreccm-db;DB_CLOSE_ON_EXIT=FALSE --driver-name=h2 --driver-class=org.h2.Driver --user-name=sa --password=sa</command>
</commands>
</beforeDeployment>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--
Profile which uses a PostgreSQL datasource with a generic
configuration. When using this profile PostgreSQL must run on the
local system and a database with the name "libreccm-devel" which
is accessible by the user "ccm" with the password "ccm47web" must
exist.
-->
<profile>
<id>pgsql</id>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<version>${wildfly.version}</version>
<skip>false</skip>
<add-user>
<users>
<user>
<username>admin</username>
<password>admin1234</password>
</user>
</users>
</add-user>
<beforeDeployment>
<commands>
<!--jdbc-drivers/postgresql-9.4.1208.jar-->
<command>module add --name=org.postgres --resources=${project.build.directory}/${project.build.finalName}/lib/postgresql.jar --dependencies=javax.api,javax.transaction.api</command>
<command>/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)</command>
<command>data-source add --jndi-name=java:/comp/env/jdbc/libreccm/db --name=libreccm-devel --connection-url=jdbc:postgresql://localhost:5432/libreccm-devel --driver-name=postgres --driver-class=org.postgresql.Driver --user-name=ccm --password=ccm47web</command>
</commands>
</beforeDeployment>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--
Generic profile for using an existing Wildfly installation.
The datasource for CCM must be configured in the Wildfly instance.
Also the plugin must know where the wildfly installation is. This
can either be done by setting the JBOSS_HOME environment variable or
by providing the location using -Djboss-as.home=/path/to/wildfly
on the command line.
-->
<profile>
<id>generic</id>
<build>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<version>${wildfly.version}</version>
<skip>false</skip>
<startupTimeout>120</startupTimeout>
<java-opts>
<java-opt>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787</java-opt>
</java-opts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -0,0 +1 @@
import "@librecms/ccm-cms-pagemodelseditor";

View File

@ -4,4 +4,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
<application>
<resource-handler>org.libreccm.ui.CcmFaceletsResourceHandler</resource-handler>
</application>
</faces-config>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" ?>
<jboss-web>
<context-root>/libreccm</context-root>
</jboss-web>

View File

@ -3,61 +3,10 @@
--------------
Jens Pelzetter
--------------
2016-06-03
2016-03-18
--------------
LibreCCM Bundle for Wildfly
LibreCCM Bundle Web for Wildfly
This module provides the LibreCCM development bundle for the Wildfly
application server.
This bundle is not meant for production use as its contains most of the
available modules.
Developers can run this LibreCCM directly from Maven. Three profiles are
provided:
[h2] Uses a H2 database located in the project build directory. This means
that the database is deleted every time <<<mvn clean>>>.
[pgsql] Uses an PostgresSQL database with a generic configuration. The
PostgreSQL server must run on localhost and the standard port and there
must be a database called with <<<libreccm-devel>>> which is accessible
for the user <<<ccm>>> using the password <<<ccm47web>>>.
[generic] Uses an existing Wildfly installation. The datasource for the
database which is used by LibreCCM has to be configured by the user for this
profile. Also, Maven or more exactly the wildfly-maven-plugin has to know
the location of the Wildfly instance to use. The location of the Wildfly
instance can either be provided on the command line when invoking Maven
or by setting the <<<JBOSS_HOME>>> environment variable.
When using the <<<h2>>> it is not necessary to install a Wildfly application
server first. The <wildfly-maven-plugin> will download the Wildfly
application server and extract the server into the <<<target>>> directory.
The <<<h2>>> and the <<<pgsql>>> profile add a user to the Wildfly server
with the username <<<admin>>> and the password <<<admin123>>> which allow
the developer to access the management web UI of the Wildfly server.
* Run examples
** Profile h2
To run the LibreCCM bundle using a H2 database:
mvn package wildfly:run -pl ccm-bundle-devel-wildfly -am -Ph2
** Profile pgsql
mvn package wildfly:run -pl ccm-bundle-devel-wildfly -am -Ppgsql
** Profile generic
mvn -Djboss-as.home=/home/mustermann/java-ee-servers/wildfly/wildfly-10.0.0.Final package wildfly:run -pl ccm-bundle-devel-wildfly -am -Pgeneric
** Additional options
The <<<wildfly:run>>> goal of the <wildfly-maven-plugin> provides several
other options. For a complete list please refer to the documentation of the
{{{https://docs.jboss.org/wildfly/plugins/maven/latest/run-mojo.html}run goal}}.
This module provides the web application part of the the LibreCCM devel
bundle for the Wildfly application server.

View File

@ -10,11 +10,10 @@
</menu>
<menu name="Overview">
<item name="The LibreCCM Devel Bundle module" href="index.html"/>
<item name="The LibreCCM Devel Bundle Web module" href="index.html"/>
</menu>
<menu ref="reports"/>
</body>
</project>

View File

@ -0,0 +1,12 @@
# Configuration for Wildfly, primarly ports on which Wildfly will listen
# Ports for Undertow (Servlet Container). These are the ports which you are
# using the access your application
jboss.http.port=8080
jboss.https.port=8443
# Ports for Wildfly's Management Interface
jboss.management.http.port=9990
jboss.management.https.port=9993

View File

@ -38,6 +38,11 @@
<artifactId>ccm-theme-foundry</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.librecms</groupId>
<artifactId>ccm-theme-ftllibs-devel</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>

View File

@ -113,8 +113,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<debug>true</debug>
<encoding>${project.build.sourceEncoding}</encoding>
@ -191,13 +191,8 @@
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.3</version>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -208,16 +203,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>
-sourceclasspath ${project.build.outputDirectory}
</additionalparam>
</configuration>
</plugin>
@ -236,11 +221,6 @@
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -1,5 +1,5 @@
{
"name": "ccm-cms-js",
"name": "@librecms/ccm-cms-js",
"version": "7.0.0",
"description": "JavaScript for the ccm-cms-module",
"repository": {
@ -15,7 +15,7 @@
"tslint": "tslint --project ."
},
"dependencies": {
"ccm-pagemodelseditor": "7.0.0",
"@libreccm/ccm-pagemodelseditor": "7.0.0",
"react": "^16.4.2",
"react-dom": "^16.4.2",
"react-redux": "^5.0.7",

View File

@ -79,12 +79,12 @@
</configuration>
</execution>
<execution>
<id>npm link ccm-pagemodelseditor</id>
<id>npm link @libreccm/ccm-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-pagemodelseditor</arguments>
<arguments>link @libreccm/ccm-pagemodelseditor</arguments>
</configuration>
</execution>
<execution>

View File

@ -1,125 +1,10 @@
{
"name": "ccm-cms-pagemodelseditor",
"name": "@librecms/ccm-cms-pagemodelseditor",
"version": "7.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/node": {
"version": "10.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz",
"integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==",
"dev": true
},
"@types/prop-types": {
"version": "15.5.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.5.tgz",
"integrity": "sha512-mOrlCEdwX3seT3n0AXNt4KNPAZZxcsABUHwBgFXOt+nvFUXkxCAO6UBJHPrDxWEa2KDMil86355fjo8jbZ+K0Q==",
"dev": true,
"requires": {
"@types/react": "16.4.11"
}
},
"@types/react": {
"version": "16.4.11",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.4.11.tgz",
"integrity": "sha512-1DQnmwO8u8N3ucvRX2ZLDEjQ2VctkAvL/rpbm2ev4uaZA0z4ysU+I0tk+K8ZLblC6p7MCgFyF+cQlSNIPUHzeQ==",
"dev": true,
"requires": {
"@types/prop-types": "15.5.5",
"csstype": "2.5.6"
}
},
"@types/react-dom": {
"version": "16.0.7",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.7.tgz",
"integrity": "sha512-vaq4vMaJOaNgFff1t3LnHYr6vRa09vRspMkmLdXtFZmO1fwDI2snP+dpOkwrtlU8UC8qsqemCu4RmVM2OLq/fA==",
"dev": true,
"requires": {
"@types/node": "10.7.1",
"@types/react": "16.4.11"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "1.0.3"
}
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "1.1.3",
"esutils": "2.0.2",
"js-tokens": "3.0.2"
},
"dependencies": {
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
}
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
"ccm-pagemodelseditor": {
"@libreccm/ccm-pagemodelseditor": {
"version": "7.0.0",
"requires": {
"react": "16.4.2",
@ -604,6 +489,121 @@
}
}
},
"@types/node": {
"version": "10.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz",
"integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==",
"dev": true
},
"@types/prop-types": {
"version": "15.5.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.5.tgz",
"integrity": "sha512-mOrlCEdwX3seT3n0AXNt4KNPAZZxcsABUHwBgFXOt+nvFUXkxCAO6UBJHPrDxWEa2KDMil86355fjo8jbZ+K0Q==",
"dev": true,
"requires": {
"@types/react": "16.4.11"
}
},
"@types/react": {
"version": "16.4.11",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.4.11.tgz",
"integrity": "sha512-1DQnmwO8u8N3ucvRX2ZLDEjQ2VctkAvL/rpbm2ev4uaZA0z4ysU+I0tk+K8ZLblC6p7MCgFyF+cQlSNIPUHzeQ==",
"dev": true,
"requires": {
"@types/prop-types": "15.5.5",
"csstype": "2.5.6"
}
},
"@types/react-dom": {
"version": "16.0.7",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.7.tgz",
"integrity": "sha512-vaq4vMaJOaNgFff1t3LnHYr6vRa09vRspMkmLdXtFZmO1fwDI2snP+dpOkwrtlU8UC8qsqemCu4RmVM2OLq/fA==",
"dev": true,
"requires": {
"@types/node": "10.7.1",
"@types/react": "16.4.11"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "1.0.3"
}
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "1.1.3",
"esutils": "2.0.2",
"js-tokens": "3.0.2"
},
"dependencies": {
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
}
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",

View File

@ -1,5 +1,5 @@
{
"name": "ccm-cms-pagemodelseditor",
"name": "@librecms/ccm-cms-pagemodelseditor",
"version": "7.0.0",
"description": "Adds editor components for PageModels components provided by ccm-cms",
"repository": {
@ -15,7 +15,7 @@
"tslint": "tslint --project ."
},
"dependencies": {
"ccm-pagemodelseditor": "7.0.0",
"@libreccm/ccm-pagemodelseditor": "7.0.0",
"react": "^16.4.2",
"react-dom": "^16.4.2"
},

View File

@ -79,7 +79,7 @@
</configuration>
</execution>
<execution>
<id>npm link ccm-pagemodelseditor</id>
<id>npm link @libreccm/ccm-pagemodelseditor</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
@ -88,7 +88,7 @@
<executable>npm</executable>
<arguments>
<argument>link</argument>
<argument>ccm-pagemodelseditor</argument>
<argument>@libreccm/ccm-pagemodelseditor</argument>
</arguments>
</configuration>
</execution>
@ -141,12 +141,12 @@
</configuration>
</execution>
<execution>
<id>npm link ccm-pagemodelseditor</id>
<id>npm link @libreccm/ccm-pagemodelseditor</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>link ccm-pagemodelseditor</arguments>
<arguments>link @libreccm/ccm-pagemodelseditor</arguments>
</configuration>
</execution>
<execution>
@ -173,6 +173,19 @@
<arguments>link</arguments>
</configuration>
</execution>
<execution>
<id>npm publish</id>
<goals>
<goal>npm</goal>
</goals>
<phase>deploy</phase>
<configuration>
<arguments>publish --userconfig ../libreccm.npmrc</arguments>
</configuration>
</execution>
</executions>
</plugin>

View File

@ -14,7 +14,7 @@ import {
ComponentModelEditorProps,
EditorComponents,
PageModelEditor,
} from "ccm-pagemodelseditor";
} from "@libreccm/ccm-pagemodelseditor";
class CategoryTreeComponentPropertiesList
extends React.Component<

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -215,13 +215,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -232,14 +227,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -255,10 +242,6 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -1,5 +1,5 @@
{
"name": "ccm-cms-tinymce",
"name": "@librecms/ccm-cms-tinymce",
"version": "7.0.0",
"description": "Extensions for TinyMCE specific for ccm-cms",
"repository": {

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -212,13 +212,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>falsed</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -229,14 +224,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -252,11 +239,7 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -211,13 +211,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -228,14 +223,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -251,10 +238,6 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -212,13 +212,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -229,14 +224,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -252,10 +239,6 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -211,13 +211,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -228,14 +223,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -251,10 +238,6 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -211,11 +211,11 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.oracle.com/javase/8/docs/api/</link>
<link>http://docs.oracle.com/javaee/8/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<show>private</show>
@ -228,14 +228,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -251,10 +243,6 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -211,13 +211,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -228,14 +223,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -251,11 +238,7 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>

View File

@ -64,12 +64,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -212,13 +212,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -229,14 +224,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -252,10 +239,6 @@
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -55,12 +55,12 @@
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency>
@ -250,13 +250,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<detectLinks>true</detectLinks>
<detectJavaApiLinks>true</detectJavaApiLinks>
<links>
<link>http://docs.oracle.com/javase/7/docs/api/</link>
<link>http://docs.oracle.com/javaee/7/api/</link>
<link>http://docs.jboss.org/hibernate/orm/4.3/javadocs/</link>
</links>
<detectLinks>false</detectLinks>
<detectJavaApiLinks>false</detectJavaApiLinks>
<show>private</show>
<docfilessubdirs>true</docfilessubdirs>
<charset>UTF-8</charset>
@ -267,14 +262,6 @@
<author>true</author>
<keywords>true</keywords>
<failOnError>false</failOnError>
<doclet>org.jboss.apiviz.APIviz</doclet>
<docletArtifact>
<groupId>org.jboss.apiviz</groupId>
<artifactId>apiviz</artifactId>
<version>1.3.2.GA</version>
</docletArtifact>
<useStandardDocletOptions>true</useStandardDocletOptions>
<additionalparam>-sourceclasspath ${project.build.outputDirectory}</additionalparam>
</configuration>
</plugin>
@ -294,16 +281,9 @@
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<!--<configuration>
<excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
</configuration>-->
</plugin>
<plugin>
@ -360,192 +340,18 @@
<profiles>
<profile>
<id>wildfly-managed-h2-mem</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-managed</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-wildfly-remote-h2-mem</directory>
</testResource>
<testResource>
<directory>${project.build.directory}/generated-resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration>
<dialects>
<param>h2</param>
<param>postgresql9</param>
</dialects>
<packages>
<param>org.libreccm</param>
</packages>
<useEnvers>true</useEnvers>
</configuration>
<executions>
<execution>
<goals>
<goal>gen-ddl</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>always</forkMode>
<forkCount>999</forkCount>
<reuseForks>true</reuseForks>
<trimStackTrace>false</trimStackTrace>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<!--<jboss.home>${project.basedir}/target/wildfly-8.2.0.Final</jboss.home>
<module.path>${project.basedir}/target/wildfly-8.2.0.Final/modules</module.path>-->
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
<groups>
org.libreccm.tests.categories.UnitTest,
org.libreccm.tests.categories.IntegrationTest
</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>wildfly-managed-pgsql</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-managed</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-wildfly-remote-pgsql</directory>
</testResource>
<testResource>
<directory>${project.build.directory}/generated-resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration>
<dialects>
<param>h2</param>
<param>postgresql9</param>
</dialects>
<packages>
<param>org.libreccm</param>
</packages>
<useEnvers>true</useEnvers>
</configuration>
<executions>
<execution>
<goals>
<goal>gen-ddl</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<trimStackTrace>false</trimStackTrace>
<forkMode>always</forkMode>
<forkCount>999</forkCount>
<reuseForks>true</reuseForks>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<!--<jboss.home>${project.basedir}/target/wildfly-8.2.0.Final</jboss.home>
<module.path>${project.basedir}/target/wildfly-8.2.0.Final/modules</module.path>-->
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
<groups>
org.libreccm.tests.categories.UnitTest,
org.libreccm.tests.categories.IntegrationTest
</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>wildfly-remote-h2-mem</id>
<id>run-its-with-wildfly-h2mem</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
</dependencies>
<build>
@ -554,11 +360,12 @@
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-wildfly-remote-h2-mem</directory>
<directory>src/test/resources-wildfly-h2mem</directory>
</testResource>
<testResource>
<directory>${project.build.directory}/generated-resources</directory>
</testResource>
</testResources>
<plugins>
@ -586,49 +393,114 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<forkMode>always</forkMode>
<forkCount>999</forkCount>
<reuseForks>true</reuseForks>
<trimStackTrace>false</trimStackTrace>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<!--<jboss.home>${project.basedir}/target/wildfly-8.2.0.Final</jboss.home>
<module.path>${project.basedir}/target/wildfly-8.2.0.Final/modules</module.path>-->
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
<groups>
org.libreccm.tests.categories.UnitTest,
org.libreccm.tests.categories.IntegrationTest
</groups>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>false</skip>
</configuration>
<executions>
<execution>
<id>start-test-env</id>
<goals>
<goal>start</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<stdout>System.out</stdout>
</configuration>
</execution>
<execution>
<id>prepare-test-env</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<address>subsystem=datasources,data-source=ccm-cms-testdb-h2-mem</address>
<force>true</force>
<resources>
<resource>
<properties>
<connection-url>jdbc:h2:mem:ccm-core-testdb</connection-url>
<jndi-name>java:/comp/env/jdbc/org/librecms/ccm-cms/h2-mem</jndi-name>
<enabled>true</enabled>
<user-name>sa</user-name>
<password>sa</password>
<use-ccm>false</use-ccm>
<driver-name>h2</driver-name>
</properties>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>shutdown-test-env</id>
<goals>
<goal>shutdown</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<reportSets>
<reportSet>
<id>integration-tests</id>
<reports>
<report>failsafe-report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</profile>
<profile>
<id>wildfly-remote-pgsql</id>
<id>run-its-with-wildfly-pgsql</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
@ -637,7 +509,7 @@
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-wildfly-remote-pgsql</directory>
<directory>src/test/resources-wildfly-pgsql</directory>
</testResource>
<testResource>
<directory>${project.build.directory}/generated-resources</directory>
@ -669,7 +541,282 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<forkMode>always</forkMode>
<forkCount>999</forkCount>
<reuseForks>true</reuseForks>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<executions>
<execution>
<id>read-datasource-properties</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.basedir}/../it-pgsql-datasources.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>false</skip>
</configuration>
<executions>
<execution>
<id>start-test-env</id>
<goals>
<goal>start</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<stdout>System.out</stdout>
</configuration>
</execution>
<execution>
<id>prepare-deploy-jdbc-driver</id>
<configuration>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<name>postgresql.jar</name>
<force>true</force>
</configuration>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy-artifact</goal>
</goals>
</execution>
<execution>
<id>prepare-test-env</id>
<goals>
<goal>add-resource</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<address>subsystem=datasources,data-source=ccm-cms-testdb-pgsql</address>
<force>true</force>
<resources>
<resource>
<properties>
<connection-url>${it.ccm-cms.datasource.connectionUrl}</connection-url>
<jndi-name>java:/comp/env/jdbc/org/librecms/ccm-cms/pgsql</jndi-name>
<enabled>true</enabled>
<user-name>${it.ccm-cms.datasource.username}</user-name>
<password>${it.ccm-cms.datasource.password}</password>
<use-ccm>false</use-ccm>
<driver-name>postgresql.jar</driver-name>
</properties>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>shutdown-test-env</id>
<goals>
<goal>shutdown</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<reportSets>
<reportSet>
<id>integration-tests</id>
<reports>
<report>failsafe-report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</profile>
<profile>
<id>run-its-in-remote-wildfly-h2mem</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-wildfly-h2mem</directory>
</testResource>
<testResource>
<directory>${project.build.directory}/generated-resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration>
<dialects>
<param>h2</param>
<param>postgresql9</param>
</dialects>
<packages>
<param>org.libreccm</param>
</packages>
<useEnvers>true</useEnvers>
</configuration>
<executions>
<execution>
<goals>
<goal>gen-ddl</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<forkMode>always</forkMode>
<forkCount>999</forkCount>
<reuseForks>true</reuseForks>
<trimStackTrace>false</trimStackTrace>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<reportSets>
<reportSet>
<id>integration-tests</id>
<reports>
<report>failsafe-report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</profile>
<profile>
<id>run-its-in-remote-wildfly-pgsql</id>
<dependencies>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-wildfly-pgsql</directory>
</testResource>
<testResource>
<directory>${project.build.directory}/generated-resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>de.jpdigital</groupId>
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
<configuration>
<dialects>
<param>h2</param>
<param>postgresql9</param>
</dialects>
<packages>
<param>org.libreccm</param>
</packages>
<useEnvers>true</useEnvers>
</configuration>
<executions>
<execution>
<goals>
<goal>gen-ddl</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<trimStackTrace>false</trimStackTrace>
<forkMode>always</forkMode>
@ -677,18 +824,29 @@
<reuseForks>true</reuseForks>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<!--<jboss.home>${project.basedir}/target/wildfly-8.2.0.Final</jboss.home>
<module.path>${project.basedir}/target/wildfly-8.2.0.Final/modules</module.path>-->
</systemPropertyVariables>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
<groups>
org.libreccm.tests.categories.UnitTest,
org.libreccm.tests.categories.IntegrationTest
</groups>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<reportSets>
<reportSet>
<id>integration-tests</id>
<reports>
<report>failsafe-report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</profile>
</profiles>

View File

@ -129,15 +129,15 @@ public class MultiPartArticleEditForm extends MultiPartArticleForm
.selectedLocale(state, selectedLanguageParam);
final String newName = (String) data.get(MultiPartArticleForm.NAME);
final String oldName = article.getName().getValue(selectedLocale);
final MultiPartArticleFormController controller = CdiUtil
.createCdiUtil()
.findBean(MultiPartArticleFormController.class);
final String oldName = controller.getName(article, selectedLocale);
final boolean valid;
if (newName.equalsIgnoreCase(oldName)) {
valid = true;
} else {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final MultiPartArticleFormController controller = cdiUtil
.findBean(MultiPartArticleFormController.class);
final Optional<Folder> folder = controller.getArticleFolder(article);
if (folder.isPresent()) {
valid = validateNameUniqueness(folder.get(), event);

View File

@ -233,14 +233,17 @@ public abstract class MultiPartArticleForm
final Locale selectedLocale = SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam);
final MultiPartArticleFormController controller = CdiUtil
.createCdiUtil()
.findBean(MultiPartArticleFormController.class);
if (article != null) {
data.put(NAME, article.getName().getValue(selectedLocale));
data.put(TITLE, article.getTitle().getValue(selectedLocale));
data.put(NAME, controller.getName(article, selectedLocale));
data.put(TITLE, controller.getTitle(article, selectedLocale));
if (!CMSConfig.getConfig().isHideLaunchDate()) {
data.put(LAUNCH_DATE, article.getLaunchDate());
}
data.put(SUMMARY, article.getSummary().getValue(selectedLocale));
data.put(SUMMARY, controller.getSummary(article, selectedLocale));
}
return article;

View File

@ -24,6 +24,8 @@ import org.librecms.contentsection.ContentItemRepository;
import org.librecms.contentsection.Folder;
import org.librecms.contenttypes.MultiPartArticle;
import java.util.Locale;
import java.util.Objects;
import java.util.Optional;
import javax.enterprise.context.RequestScoped;
@ -46,8 +48,9 @@ public class MultiPartArticleFormController {
@Transactional(Transactional.TxType.REQUIRED)
protected Optional<Folder> getArticleFolder(final MultiPartArticle article) {
final Optional<ContentItem> mpa = itemRepo
.findById(article.getObjectId());
final Optional<ContentItem> mpa = itemRepo.findById(
article.getObjectId()
);
if (mpa.isPresent()) {
return itemManager.getItemFolder(mpa.get());
@ -56,4 +59,62 @@ public class MultiPartArticleFormController {
}
}
@Transactional(Transactional.TxType.REQUIRED)
public String getName(
final MultiPartArticle fromMpa, final Locale forLocale
) {
Objects.requireNonNull(fromMpa);
Objects.requireNonNull(forLocale);
final MultiPartArticle mpa = itemRepo
.findById(fromMpa.getObjectId(), MultiPartArticle.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No MultiPartArticle with ID %d available",
fromMpa.getObjectId()
)
)
);
return mpa.getName().getValue(forLocale);
}
@Transactional(Transactional.TxType.REQUIRED)
public String getTitle(
final MultiPartArticle fromMpa, final Locale forLocale
) {
Objects.requireNonNull(fromMpa);
Objects.requireNonNull(forLocale);
final MultiPartArticle mpa = itemRepo
.findById(fromMpa.getObjectId(), MultiPartArticle.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No MultiPartArticle with ID %d available",
fromMpa.getObjectId()
)
)
);
return mpa.getTitle().getValue(forLocale);
}
@Transactional(Transactional.TxType.REQUIRED)
public String getSummary(
final MultiPartArticle fromMpa, final Locale forLocale
) {
Objects.requireNonNull(fromMpa);
Objects.requireNonNull(forLocale);
final MultiPartArticle mpa = itemRepo
.findById(fromMpa.getObjectId(), MultiPartArticle.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No MultiPartArticle with ID %d available",
fromMpa.getObjectId()
)
)
);
return mpa.getSummary().getValue(forLocale);
}
}

View File

@ -25,6 +25,8 @@ import org.librecms.contenttypes.MultiPartArticleSectionManager;
import org.librecms.contenttypes.MultiPartArticleSectionRepository;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
@ -127,15 +129,81 @@ class MultiPartArticleSectionStepController {
protected void moveAfter(final MultiPartArticle article,
final MultiPartArticleSection section,
final MultiPartArticleSection after) {
final MultiPartArticle theArticle = itemRepo
.findById(article.getObjectId(),
MultiPartArticle.class)
.orElseThrow(() -> new IllegalArgumentException(String.format(
"No MultiPartArticle with ID %d in the database.",
article.getObjectId())));
sectionManager.moveSectionAfter(theArticle, section, after);
}
@Transactional(Transactional.TxType.REQUIRED)
public String getSectionTitle(
final MultiPartArticleSection ofSection, final Locale forLocale
) {
Objects.requireNonNull(ofSection);
Objects.requireNonNull(forLocale);
final MultiPartArticleSection section = sectionRepo
.findById(ofSection.getSectionId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No section with ID %d available.", ofSection
.getSectionId()
)
)
);
return section.getTitle().getValue(forLocale);
}
@Transactional(Transactional.TxType.REQUIRED)
public String getSectionText(
final MultiPartArticleSection ofSection, final Locale forLocale
) {
Objects.requireNonNull(ofSection);
Objects.requireNonNull(forLocale);
final MultiPartArticleSection section = sectionRepo
.findById(ofSection.getSectionId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No section with ID %d available.", ofSection
.getSectionId()
)
)
);
return section.getText().getValue(forLocale);
}
@Transactional(Transactional.TxType.REQUIRED)
public void updateSection(
final MultiPartArticleSection section,
final String title,
final String text,
final boolean pageBreak,
final Locale locale
) {
Objects.requireNonNull(section);
Objects.requireNonNull(locale);
final MultiPartArticleSection update = sectionRepo
.findById(section.getSectionId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No section with ID %d available.",
section.getSectionId()
)
)
);
update.getTitle().addValue(locale, title);
update.getText().addValue(locale, title);
update.setPageBreak(pageBreak);
}
}

View File

@ -158,11 +158,16 @@ public class MultiPartArticleSectionsStep extends ResettableContainer {
final Locale selectedLocale = SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam);
final MultiPartArticleSectionStepController controller = CdiUtil
.createCdiUtil()
.findBean(MultiPartArticleSectionStepController.class);
final Object[] parameterObj = {
controller.getSectionTitle(
moveSectionModel
.getSelectedSection(state)
.getTitle()
.getValue(selectedLocale)
.getSelectedSection(state),
selectedLocale
)
};
target.setLabel(new GlobalizedMessage(

View File

@ -35,7 +35,6 @@ import com.arsdigita.globalization.GlobalizedMessage;
import org.librecms.contenttypes.MultiPartArticle;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.libreccm.cdi.utils.CdiUtil;
@ -110,9 +109,14 @@ public class SectionDeleteForm extends Form
final Locale selectedLocale = SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam);
final MultiPartArticleSectionStepController controller = CdiUtil
.createCdiUtil()
.findBean(MultiPartArticleSectionStepController.class);
sectionNameLabel.setLabel(
section.getTitle().getValue(selectedLocale),
state);
controller.getSectionTitle(section, selectedLocale),
state
);
}
}

View File

@ -198,12 +198,19 @@ public class SectionEditForm extends Form {
final Locale selectedLocale = SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam);
final MultiPartArticleSectionStepController controller = CdiUtil
.createCdiUtil()
.findBean(MultiPartArticleSectionStepController.class);
final MultiPartArticleSection section = selectedSectionModel
.getSelectedSection(state);
data.put(TITLE, section.getTitle().getValue(selectedLocale));
data.put(TEXT, section.getText().getValue(selectedLocale));
data.put(
TITLE, controller.getSectionTitle(section, selectedLocale)
);
data.put(
TEXT, controller.getSectionText(section, selectedLocale)
);
if (section.isPageBreak()) {
data.put(PAGE_BREAK, new Object[]{"true"});
@ -281,9 +288,8 @@ public class SectionEditForm extends Form {
section = selectedSectionModel.getSelectedSection(state);
}
section.getTitle().addValue(selectedLocale,
(String) data.get(TITLE));
// section.getTitle().addValue(selectedLocale,
// (String) data.get(TITLE));
final Object[] pageBreakVal = (Object[]) data.get(PAGE_BREAK);
final boolean pageBreak;
if (pageBreakVal == null
@ -293,7 +299,7 @@ public class SectionEditForm extends Form {
} else {
pageBreak = true;
}
section.setPageBreak(pageBreak);
// section.setPageBreak(pageBreak);
final String text;
if (data.get(TEXT) == null) {
@ -301,12 +307,24 @@ public class SectionEditForm extends Form {
} else {
text = (String) data.get(TEXT);
}
section.getText().addValue(selectedLocale, text);
sectionRepo.save(section);
// section.getText().addValue(selectedLocale, text);
// sectionRepo.save(section);
if (selectedSectionModel.getSelectedKey(state) == null) {
section.getTitle().addValue(selectedLocale,
(String) data.get(TITLE));
section.setPageBreak(pageBreak);
section.getText().addValue(selectedLocale, text);
controller.addSection(article, section);
} else {
controller.updateSection(
section,
(String) data.get(TITLE),
text,
pageBreak,
selectedLocale
);
}
if (sectionsStep != null) {

View File

@ -34,6 +34,7 @@ import org.librecms.contenttypes.MultiPartArticleSection;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
class SectionTableModel implements TableModel {
@ -109,13 +110,20 @@ class SectionTableModel implements TableModel {
if (columnModel == null) {
return null;
}
final MultiPartArticleSectionStepController controller = CdiUtil
.createCdiUtil()
.findBean(MultiPartArticleSectionStepController.class);
switch (columnIndex) {
case SectionTable.COL_INDEX_TITLE:
return currentSection
.getTitle()
.getValue(SelectedLanguageUtil
.selectedLocale(pageState, selectedLanguageParam));
return controller.getSectionTitle(
currentSection,
SelectedLanguageUtil.selectedLocale(
pageState, selectedLanguageParam
)
)
;
case SectionTable.COL_PAGE_BREAK:
if (currentSection.isPageBreak()) {
return new Label(

View File

@ -18,8 +18,11 @@
*/
package com.arsdigita.cms.ui.authoring.news;
import org.libreccm.l10n.GlobalizationHelper;
import java.util.Collections;
import java.util.List;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionRepository;
@ -32,13 +35,18 @@ import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.transaction.Transactional;
import org.libreccm.security.PermissionChecker;
import org.libreccm.security.Role;
import org.libreccm.security.RoleRepository;
import org.libreccm.security.Shiro;
import org.libreccm.security.User;
import org.librecms.contentsection.ContentItemRepository;
import org.librecms.contentsection.ContentType;
import org.librecms.contentsection.ContentTypeRepository;
import org.librecms.contenttypes.News;
import java.util.Locale;
/**
* Controller class for the {@link NewItemForm}.
@ -53,7 +61,7 @@ class NewItemFormController {
@Inject
private Shiro shiro;
@Inject
private PermissionChecker permissionChecker;
@ -62,7 +70,7 @@ class NewItemFormController {
@Inject
private ContentSectionRepository sectionRepo;
@Inject
private ContentTypeRepository typeRepo;
@ -76,39 +84,41 @@ class NewItemFormController {
}
final List<Role> roles = user.get().getRoleMemberships().stream()
.map(membership -> membership.getRole())
.collect(Collectors.toList());
.map(membership -> membership.getRole())
.collect(Collectors.toList());
final TypedQuery<Boolean> query = entityManager.createNamedQuery(
"ContentSection.hasUsableContentTypes", Boolean.class);
"ContentSection.hasUsableContentTypes", Boolean.class);
query.setParameter("section", section);
query.setParameter("roles", roles);
query.setParameter("isSysAdmin", permissionChecker.isPermitted("*"));
return query.getSingleResult();
}
@Transactional(Transactional.TxType.REQUIRED)
protected List<ContentType> getContentTypes(final ContentSection section) {
Objects.requireNonNull(section);
final Optional<User> user = shiro.getUser();
if (!user.isPresent()) {
return Collections.EMPTY_LIST;
}
final List<Role> roles = user.get().getRoleMemberships().stream()
.map(membership -> membership.getRole())
.collect(Collectors.toList());
.map(membership -> membership.getRole())
.collect(Collectors.toList());
final TypedQuery<ContentType> query = entityManager.createNamedQuery(
"ContentSection.findUsableContentTypes",
ContentType.class);
"ContentSection.findUsableContentTypes",
ContentType.class);
query.setParameter("section", section);
query.setParameter("roles", roles);
query.setParameter("isSysAdmin", permissionChecker.isPermitted("*"));
return query.getResultList();
}
}

View File

@ -0,0 +1,108 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.ui.authoring.news;
import org.librecms.contentsection.ContentItemRepository;
import org.librecms.contenttypes.News;
import java.util.Date;
import java.util.Locale;
import java.util.Objects;
import javax.inject.Inject;
import javax.transaction.Transactional;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class NewsController {
@Inject
private ContentItemRepository itemRepo;
@Transactional
protected String getDescription(
final News fromNews, final Locale forLocale
) {
Objects.requireNonNull(fromNews);
final News news = itemRepo
.findById(fromNews.getObjectId(), News.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No News with ID %d available.", fromNews.getObjectId()
)
)
);
return news.getDescription().getValue(forLocale);
}
@Transactional
protected String getText(final News fromNews, final Locale forLocale) {
Objects.requireNonNull(fromNews);
final News news = itemRepo
.findById(fromNews.getObjectId(), News.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No News with ID %d available",
fromNews.getObjectId()
)
)
);
return news.getText().getValue(forLocale);
}
@Transactional
protected void updateText(
final News ofNews,
final Locale forLocale,
final String text
) {
Objects.requireNonNull(ofNews);
final News news = itemRepo
.findById(ofNews.getObjectId(), News.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No News with ID %d available",
ofNews.getObjectId()
)
)
);
news.getText().addValue(forLocale, text);
itemRepo.save(news);
}
@Transactional
protected void update(
final News news,
final Date releaseDate,
final Locale locale,
final String description
) {
Objects.requireNonNull(news);
final News update = itemRepo
.findById(news.getObjectId(), News.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No News with ID %d available",
news.getObjectId()
)
)
);
update.setReleaseDate(releaseDate);
update.getDescription().addValue(locale, description);
itemRepo.save(update);
}
}

View File

@ -36,7 +36,6 @@ import org.librecms.contenttypes.News;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SelectedLanguageUtil;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.KernelConfig;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.configuration.ConfigurationManager;
@ -45,6 +44,7 @@ import org.librecms.contentsection.ContentItemRepository;
import org.librecms.contenttypes.NewsConfig;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Objects;
@ -181,7 +181,10 @@ public class NewsPropertyForm extends BasicPageForm
releaseDateSelector.addYear(releaseDate);
data.put(NEWS_DATE, releaseDate);
data.put(LEAD, item.getDescription().getValue(selectedLocale));
final NewsController controller = CdiUtil
.createCdiUtil()
.findBean(NewsController.class);
data.put(LEAD, controller.getDescription(item, selectedLocale));
}
/**
@ -218,21 +221,15 @@ public class NewsPropertyForm extends BasicPageForm
.getSaveButton()
.isSelected(event.getPageState())) {
final NewsController controller = CdiUtil
.createCdiUtil()
.findBean(NewsController.class);
final Date releaseDate = (java.util.Date) data.get(NEWS_DATE);
final String description = (String) data.get(LEAD);
final Locale selectedLocale = SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam);
item.setReleaseDate((java.util.Date) data.get(NEWS_DATE));
item
.getDescription()
.addValue(
selectedLocale,
(String) data.get(LEAD));
final ContentItemRepository itemRepo = CdiUtil
.createCdiUtil()
.findBean(ContentItemRepository.class);
itemRepo.save(item);
controller.update(item, releaseDate, selectedLocale, description);
}
if (propertiesStep != null) {
propertiesStep.maybeForwardToNextStep(event.getPageState());

View File

@ -83,10 +83,13 @@ public class NewsTextBody extends TextBody {
final News news = getSelectedNews(state);
return news
.getText()
.getValue(SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam));
final NewsController controller = CdiUtil
.createCdiUtil()
.findBean(NewsController.class);
return controller.getText(
news,
SelectedLanguageUtil.selectedLocale(state, selectedLanguageParam)
);
}
@Override
@ -97,11 +100,10 @@ public class NewsTextBody extends TextBody {
final Locale selectedLocale = SelectedLanguageUtil
.selectedLocale(state, selectedLanguageParam);
news.getText().addValue(selectedLocale, text);
final ContentItemRepository itemRepo = CdiUtil
final NewsController controller = CdiUtil
.createCdiUtil()
.findBean(ContentItemRepository.class);
itemRepo.save(news);
.findBean(NewsController.class);
controller.updateText(news, selectedLocale, text);
}
}

View File

@ -35,12 +35,12 @@ class FolderEditForm extends FolderBaseForm {
private static Logger LOGGER = LogManager.getLogger(FolderEditForm.class);
private final FolderRequestLocal m_folder;
private final FolderRequestLocal folderRequestLocal;
public FolderEditForm(final FolderRequestLocal folder) {
super("folder-edit");
m_folder = folder;
folderRequestLocal = folder;
// XXX need to do name uniqueness valdation on m_fragment here
// as well.
@ -68,7 +68,7 @@ class FolderEditForm extends FolderBaseForm {
public final void init(final FormSectionEvent e) {
final PageState state = e.getPageState();
final Category folder = m_folder.getFolder(state);
final Category folder = folderRequestLocal.getFolder(state);
m_title.setValue(state, folder.getDisplayName());
m_fragment.setValue(state, folder.getName());
@ -80,7 +80,7 @@ class FolderEditForm extends FolderBaseForm {
throws FormProcessException {
final PageState state = e.getPageState();
final Category folder = m_folder.getFolder(state);
final Category folder = folderRequestLocal.getFolder(state);
folder.setDisplayName((String) m_title.getValue(state));
folder.setName((String) m_fragment.getValue(state));

View File

@ -63,12 +63,10 @@ public class FolderEditorForm extends FolderForm {
final Folder folder = getCurrentFolder(state);
data.put(NAME, folder.getName());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ConfigurationManager confManager = cdiUtil.findBean(
ConfigurationManager.class);
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class);
data.put(TITLE,
folder.getTitle().getValue(kernelConfig.getDefaultLocale()));
final FolderEditorFormController controller = cdiUtil.findBean(
FolderEditorFormController.class
);
data.put(TITLE, controller.getFolderTitle(folder));
}
/**

View File

@ -0,0 +1,50 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.ui.folder;
import com.arsdigita.kernel.KernelConfig;
import org.libreccm.configuration.ConfigurationManager;
import org.librecms.contentsection.Folder;
import org.librecms.contentsection.FolderRepository;
import java.util.Objects;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RequestScoped
public class FolderEditorFormController {
@Inject
private ConfigurationManager confManager;
@Inject
private FolderRepository folderRepository;
@Transactional(Transactional.TxType.REQUIRED)
public String getFolderTitle(final Folder ofFolder) {
final Folder folder = folderRepository
.findById(Objects.requireNonNull(ofFolder).getObjectId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format("No folder with ID %d available.",
ofFolder.getObjectId())
)
);
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class
);
return folder.getTitle().getValue(kernelConfig.getDefaultLocale());
}
}

View File

@ -47,7 +47,7 @@ import org.librecms.lifecycle.LifecycleDefinitionRepository;
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class LifecycleAdminPane extends BaseAdminPane {
private final SingleSelectionModel selectionModel;
private final LifecycleDefinitionRequestLocal selectionLifecycleDefinition;

View File

@ -18,9 +18,12 @@
*/
package com.arsdigita.cms.ui.lifecycle;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.KernelConfig;
import com.arsdigita.toolbox.ui.Property;
import org.libreccm.configuration.ConfigurationManager;
import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager;
import org.librecms.contentsection.ContentSectionRepository;
@ -30,9 +33,12 @@ import org.librecms.lifecycle.PhaseDefinition;
import org.librecms.lifecycle.PhaseDefinititionRepository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
@ -72,7 +78,73 @@ class LifecycleAdminPaneController {
section.getObjectId())));
return new ArrayList<>(contentSection.getLifecycleDefinitions());
}
@Transactional
public List<Map<String, String>> listLifecyclesForContentSection(
final ContentSection section
) {
return getLifecyclesForContentSection(section)
.stream()
.map(this::buildLifecycleListItem)
.collect(Collectors.toList());
}
private Map<String, String> buildLifecycleListItem(
final LifecycleDefinition lifecycleDefinition) {
final Map<String, String> item = new HashMap<>();
item.put(
LifecycleListModelBuilder.LIFECYCLE_DEF_ID,
Long.toString(lifecycleDefinition.getDefinitionId())
);
item.put(
LifecycleListModelBuilder.LIFECYCLE_DEF_LABEL,
lifecycleDefinition
.getLabel()
.getValue(KernelConfig.getConfig().getDefaultLocale())
);
return item;
}
@Transactional(Transactional.TxType.REQUIRED)
public List<Property> getLifecycleProperties(
final LifecycleDefinition ofLifecycleDefinition
) {
final LifecycleDefinition definition = lifecycleDefRepo
.findById(ofLifecycleDefinition.getDefinitionId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No LifecycleDefinition with ID %d found.",
ofLifecycleDefinition.getDefinitionId()
)
)
);
final KernelConfig kernelConfig = confManager
.findConfiguration(KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale();
final List<Property> properties = new ArrayList<>();
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.lifecycle.name",
CmsConstants.CMS_BUNDLE
),
definition.getLabel().getValue(defaultLocale)
)
);
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.lifecycle.description",
CmsConstants.CMS_BUNDLE
),
definition.getDescription().getValue(defaultLocale)
)
);
return properties;
}
/**
@ -178,7 +250,7 @@ class LifecycleAdminPaneController {
.orElseThrow(() -> new IllegalArgumentException(String.format(
"No ContentSection with ID %d in the database. "
+ "Where did that ID come from?",
section.getObjectId())));
section.getObjectId())));
sectionManager.removeLifecycleDefinitionFromContentSection(
lifecycleDefinition,
@ -290,7 +362,46 @@ class LifecycleAdminPaneController {
phaseDefinition.setDefaultDuration(duration);
phaseDefRepo.save(phaseDefinition);
}
@Transactional(Transactional.TxType.REQUIRED)
public String getLifecycleDefinitionName(
final LifecycleDefinition ofCycle
) {
final LifecycleDefinition cycle = lifecycleDefRepo.findById(
Objects.requireNonNull(ofCycle).getDefinitionId()
).orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No LifecycleDefinition with ID %d available",
ofCycle.getDefinitionId()
)
)
);
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class
);
return cycle.getLabel().getValue(kernelConfig.getDefaultLocale());
}
@Transactional(Transactional.TxType.REQUIRED)
public String getLifecycleDefinitionDescription(
final LifecycleDefinition ofCycle
) {
final LifecycleDefinition cycle = lifecycleDefRepo.findById(
Objects.requireNonNull(ofCycle).getDefinitionId()
).orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No LifecycleDefinition with ID %d available",
ofCycle.getDefinitionId()
)
)
);
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class
);
return cycle.getDescription().getValue(kernelConfig.getDefaultLocale());
}
}

View File

@ -59,8 +59,17 @@ class LifecycleEditForm extends BaseLifecycleForm {
final LifecycleDefinition cycle = selectedDefinition
.getLifecycleDefinition(state);
getLifecycleName().setValue(state, cycle.getLabel());
getLifecycleDescription().setValue(state, cycle.getDescription());
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final LifecycleAdminPaneController controller = cdiUtil.findBean(
LifecycleAdminPaneController.class
);
getLifecycleName().setValue(
state, controller.getLifecycleDefinitionName(cycle)
);
getLifecycleDescription().setValue(
state, controller.getLifecycleDefinitionDescription(cycle)
);
}
}

View File

@ -61,9 +61,11 @@ import java.util.Locale;
class LifecycleItemPane extends BaseItemPane {
private final LifecycleDefinitionRequestLocal selectedLifecycle;
private final PhaseRequestLocal selectedPhase;
private final Container detailPane;
private final Table phasesTable;
public LifecycleItemPane(
@ -144,23 +146,27 @@ class LifecycleItemPane extends BaseItemPane {
final PageState state) {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ConfigurationManager confManager = cdiUtil.findBean(
ConfigurationManager.class);
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale();
// final ConfigurationManager confManager = cdiUtil.findBean(
// ConfigurationManager.class);
// final KernelConfig kernelConfig = confManager.findConfiguration(
// KernelConfig.class);
// final Locale defaultLocale = kernelConfig.getDefaultLocale();
final LifecycleAdminPaneController controller = cdiUtil
.findBean(LifecycleAdminPaneController.class);
final java.util.List<Property> props = super.properties(state);
final LifecycleDefinition cycle = selectedLifecycle
.getLifecycleDefinition(state);
props.add(new Property(
gz("cms.ui.lifecycle.name"),
cycle.getLabel().getValue(defaultLocale)));
props.add(new Property(
gz("cms.ui.lifecycle.description"),
cycle.getDescription().getValue(defaultLocale)));
props.addAll(controller.getLifecycleProperties(cycle));
// props.add(new Property(
// gz("cms.ui.lifecycle.name"),
// cycle.getLabel().getValue(defaultLocale)));
// props.add(new Property(
// gz("cms.ui.lifecycle.description"),
// cycle.getDescription().getValue(defaultLocale)));
return props;
}

View File

@ -38,6 +38,7 @@ import org.librecms.lifecycle.LifecycleDefinition;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
/**
* Loads all the current lifecycles from the database so that they may be
@ -50,6 +51,10 @@ import java.util.Locale;
public final class LifecycleListModelBuilder extends LockableImpl
implements ListModelBuilder {
protected static final String LIFECYCLE_DEF_ID = "lifecycleDefId";
protected static final String LIFECYCLE_DEF_LABEL = "lifecycleDefLabel";
@Override
public final ListModel makeModel(final com.arsdigita.bebop.List list,
final PageState state) {
@ -57,20 +62,20 @@ public final class LifecycleListModelBuilder extends LockableImpl
final LifecycleAdminPaneController controller = cdiUtil
.findBean(LifecycleAdminPaneController.class);
final ContentSection section = CMS.getContext().getContentSection();
return new Model(controller.getLifecyclesForContentSection(section));
return new Model(controller.listLifecyclesForContentSection(section));
}
private class Model implements ListModel {
private final Iterator<LifecycleDefinition> iterator;
private LifecycleDefinition currentLifecycleDef;
private final Locale defaultLocale;
private final Iterator<Map<String, String>> iterator;
public Model(final List<LifecycleDefinition> lifecycles) {
private Map<String, String> currentLifecycleDef;
public Model(final List<Map<String, String>> lifecycles) {
iterator = lifecycles.iterator();
defaultLocale = KernelConfig.getConfig().getDefaultLocale();
}
@Override
@Override
public boolean next() throws NoSuchElementException {
if (iterator.hasNext()) {
currentLifecycleDef = iterator.next();
@ -82,12 +87,12 @@ public final class LifecycleListModelBuilder extends LockableImpl
@Override
public Object getElement() {
return currentLifecycleDef.getLabel().getValue(defaultLocale);
return currentLifecycleDef.get(LIFECYCLE_DEF_LABEL);
}
@Override
public String getKey() {
return Long.toString(currentLifecycleDef.getDefinitionId());
return currentLifecycleDef.get(LIFECYCLE_DEF_ID);
}
}

View File

@ -0,0 +1,54 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.ui.pages;
import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.pagemodel.PageModel;
import org.libreccm.pagemodel.PageModelRepository;
import org.librecms.pages.Pages;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RequestScoped
class PageModelAdminPageController {
@Inject
private GlobalizationHelper globalizationHelper;
@Inject
private PageModelRepository pageModelRepository;
@Transactional(Transactional.TxType.REQUIRED)
protected List<PageModelData> findDraftPageModelsByApplication(
final Pages pages
) {
final List<PageModel> pageModels = pageModelRepository
.findDraftByApplication(pages);
return pageModels.stream().map(this::buildPageModelData).collect(
Collectors.toList()
);
}
private PageModelData buildPageModelData(final PageModel fromPageModel) {
final PageModelData result = new PageModelData();
result.setPageModelId(fromPageModel.getPageModelId());
result.setTitle(globalizationHelper.getValueFromLocalizedString(
fromPageModel.getTitle()));
return result;
}
}

View File

@ -0,0 +1,34 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.ui.pages;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
class PageModelData {
private long pageModelId;
private String title;
public long getPageModelId() {
return pageModelId;
}
public void setPageModelId(long pageModelId) {
this.pageModelId = pageModelId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

View File

@ -50,7 +50,6 @@ import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryRepository;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.pagemodel.PageModel;
import org.libreccm.pagemodel.PageModelRepository;
import org.librecms.CmsConstants;
@ -62,6 +61,7 @@ import java.util.List;
import java.util.Optional;
import java.util.TooManyListenersException;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -69,19 +69,27 @@ import java.util.TooManyListenersException;
public class PagesAdminPage extends CMSApplicationPage {
private static final String INDEX_PAGE_MODEL_SELECT = "indexPageModelSelect";
private static final String ITEM_PAGE_MODEL_SELECT = "itemPageModelSelect";
private static final String INHERIT_PAGEMODEL = "--inherit--";
private final ParameterSingleSelectionModel<String> selectedCategory;
private final Tree categoryTree;
private final Label nothingSelectedLabel;
private final Form pageModelForm;
private final SingleSelect indexPageModelSelect;
private final SingleSelect itemPageModelSelect;
private final SaveCancelSection saveCancelSection;
private Pages pagesInstance;
private PagesContextBar pagesContextBar;
public PagesAdminPage() {
@ -163,7 +171,7 @@ public class PagesAdminPage extends CMSApplicationPage {
pagesContextBar = new PagesContextBar();
super.add(pagesContextBar);
final TabbedPane tabbedPane = new TabbedPane();
tabbedPane.addTab(new Label(new GlobalizedMessage(
"cms.ui.pages.tab.pages", CmsConstants.CMS_BUNDLE)),
@ -261,22 +269,38 @@ public class PagesAdminPage extends CMSApplicationPage {
"cms.ui.pages.assigned_page_model.inherit",
CmsConstants.CMS_BUNDLE))));
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final PageModelRepository pageModelRepo = cdiUtil
.findBean(PageModelRepository.class);
final List<PageModel> pageModels = pageModelRepo
.findDraftByApplication(pagesInstance);
final GlobalizationHelper globalizationHelper = cdiUtil
.findBean(GlobalizationHelper.class);
for (final PageModel pageModel : pageModels) {
target.addOption(new Option(
Long.toString(pageModel.getPageModelId()),
new Text(globalizationHelper.getValueFromLocalizedString(
pageModel
.getTitle()))));
// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
// final PageModelRepository pageModelRepo = cdiUtil.findBean(
// PageModelRepository.class
// );
// final List<PageModel> pageModels = pageModelRepo
// .findDraftByApplication(pagesInstance);
// final GlobalizationHelper globalizationHelper = cdiUtil
// .findBean(GlobalizationHelper.class);
// for (final PageModel pageModel : pageModels) {
// target.addOption(
// new Option(
// Long.toString(pageModel.getPageModelId()),
// new Text(
// globalizationHelper.getValueFromLocalizedString(
// pageModel.getTitle()
// )
// )
// )
// );
// }
final PageModelAdminPageController controller = CdiUtil.createCdiUtil()
.findBean(PageModelAdminPageController.class);
final List<PageModelData> pageModels = controller
.findDraftPageModelsByApplication(pagesInstance);
for (final PageModelData pageModel : pageModels) {
target.addOption(
new Option(
Long.toString(pageModel.getPageModelId()),
new Text(pageModel.getTitle())
)
);
}
}
private void categoryTreeStateChanged(final ChangeEvent event) {

View File

@ -35,16 +35,12 @@ import com.arsdigita.cms.ui.BaseItemPane;
import com.arsdigita.cms.ui.PartySearchForm;
import com.arsdigita.cms.ui.VisibilityComponent;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.KernelConfig;
import com.arsdigita.toolbox.ui.ActionGroup;
import com.arsdigita.toolbox.ui.Property;
import com.arsdigita.toolbox.ui.PropertyList;
import com.arsdigita.toolbox.ui.Section;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.configuration.ConfigurationManager;
import org.libreccm.security.Party;
import org.libreccm.security.PartyRepository;
import org.libreccm.security.PermissionChecker;
@ -129,40 +125,53 @@ class BaseRoleItemPane extends BaseItemPane {
@Override
protected final java.util.List<Property> properties(
final PageState state) {
final PageState state
) {
final java.util.List<Property> properties = super.properties(
state);
state
);
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ConfigurationManager manager = cdiUtil.findBean(
ConfigurationManager.class);
final KernelConfig config = manager.findConfiguration(
KernelConfig.class);
final RoleAdminPaneController controller = cdiUtil
.findBean(RoleAdminPaneController.class);
final Role role = roleRequestLocal.getRole(state);
properties.add(new Property(lz("cms.ui.role.name"),
role.getName()));
// Right now just loads the default locale description.
properties.add(new Property(
lz("cms.ui.role.description"),
role.getDescription().getValue(config.getDefaultLocale())));
properties.add(
new Property(lz("cms.ui.role.name"), role.getName())
);
// Since Permissions don't seem to have a "pretty" form, the granted privilege is used.
final RoleAdminPaneController controller = cdiUtil.findBean(
RoleAdminPaneController.class);
// Right now just loads the default locale description.
properties.add(
new Property(
lz("cms.ui.role.description"),
controller.getRoleDescription(role)
)
);
// Since Permissions don't seem to have a "pretty" form, the
// granted privilege is used.
final String permissions = controller
.generateGrantedPermissionsString(
role,
CMS.getContext().getContentSection());
CMS.getContext().getContentSection()
);
if (permissions.length() > 0) {
properties.add(new Property(lz("cms.ui.role.privileges"),
permissions));
properties.add(
new Property(
lz("cms.ui.role.privileges"),
permissions
)
);
} else {
properties.add(new Property(lz("cms.ui.role.privileges"),
lz("cms.ui.role.privilege.none")));
properties.add(
new Property(
lz("cms.ui.role.privileges"),
lz("cms.ui.role.privilege.none")
)
);
}
return properties;
@ -192,7 +201,9 @@ class BaseRoleItemPane extends BaseItemPane {
private class MemberTable extends Table {
private static final int COL_NAME = 0;
private static final int COL_EMAIL = 1;
private static final int COL_REMOVE = 2;
MemberTable() {

View File

@ -66,7 +66,7 @@ class RoleAdminPaneController {
@Inject
private RoleManager roleManager;
@Inject
private RoleRepository roleRepo;
@ -88,6 +88,22 @@ class RoleAdminPaneController {
return new ArrayList<>(contentSection.getRoles());
}
@Transactional
public String getRoleDescription(final Role ofRole) {
final Role role = roleRepo
.findById(ofRole.getRoleId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No role with ID %d found.", ofRole.getRoleId()
)
)
);
final KernelConfig config = confManager
.findConfiguration(KernelConfig.class);
return role.getDescription().getValue(config.getDefaultLocale());
}
public String[] getGrantedPrivileges(final Role role,
final ContentSection section) {
final List<Permission> sectionPermissions = permissionManager
@ -217,10 +233,10 @@ class RoleAdminPaneController {
KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale();
role.setName(roleName);
role.getDescription().addValue(defaultLocale, roleDescription);
roleToSave.setName(roleName);
roleToSave.getDescription().addValue(defaultLocale, roleDescription);
roleRepo.save(role);
roleRepo.save(roleToSave);
final ContentSection contentSection = sectionRepo.findById(
CMS.getContext().getContentSection().getObjectId())
@ -241,28 +257,28 @@ class RoleAdminPaneController {
final Folder rootAssetsFolder = contentSection.getRootAssetsFolder();
final List<Permission> currentPermissionsSection = permissionManager
.findPermissionsForRoleAndObject(role, contentSection);
.findPermissionsForRoleAndObject(roleToSave, contentSection);
final List<Permission> currentPermissionsDocuments = permissionManager
.findPermissionsForRoleAndObject(role, rootDocumentsFolder);
.findPermissionsForRoleAndObject(roleToSave, rootDocumentsFolder);
final List<Permission> currentPermissionsAssets = permissionManager
.findPermissionsForRoleAndObject(role, rootAssetsFolder);
.findPermissionsForRoleAndObject(roleToSave, rootAssetsFolder);
//Revoke permissions not in selectedPermissions
revokeNotSelectedPrivileges(selectedPermissions,
role,
roleToSave,
currentPermissionsSection);
revokeNotSelectedPrivileges(selectedPermissions,
role,
roleToSave,
currentPermissionsDocuments);
revokeNotSelectedPrivileges(selectedPermissions,
role,
roleToSave,
currentPermissionsAssets);
// Grant selected privileges
for (final String privilege : adminPrivileges) {
if (isPrivilegeSelected(selectedPermissions, privilege)) {
permissionManager.grantPrivilege(privilege,
role,
roleToSave,
contentSection);
}
}
@ -270,7 +286,7 @@ class RoleAdminPaneController {
for (final String privilege : itemPrivileges) {
if (isPrivilegeSelected(selectedPermissions, privilege)) {
permissionManager.grantPrivilege(privilege,
role,
roleToSave,
rootDocumentsFolder);
}
}
@ -278,7 +294,7 @@ class RoleAdminPaneController {
for (final String privilege : assetPrivileges) {
if (isPrivilegeSelected(selectedPermissions, privilege)) {
permissionManager.grantPrivilege(privilege,
role,
roleToSave,
rootAssetsFolder);
}
}

View File

@ -24,20 +24,10 @@ import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.CMS;
import com.arsdigita.kernel.KernelConfig;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.configuration.ConfigurationManager;
import org.libreccm.l10n.LocalizedString;
import org.libreccm.security.Permission;
import org.libreccm.security.PermissionManager;
import org.libreccm.security.Role;
import org.libreccm.security.RoleRepository;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
/**
* Represents a {@link com.arsdigita.bebop.Form Form} to edit
@ -76,17 +66,15 @@ final class RoleEditForm extends BaseRoleForm {
final PageState state = event.getPageState();
final Role role = roleRequestLocal.getRole(state);
final KernelConfig kernelConfig = KernelConfig.getConfig();
final Locale defaultLocale = kernelConfig.getDefaultLocale();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final RoleAdminPaneController controller = cdiUtil.findBean(
RoleAdminPaneController.class);
getRoleName().setValue(state, role.getName());
getRoleDescription().setValue(
state,
role.getDescription().getValue(defaultLocale));
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final RoleAdminPaneController controller = cdiUtil.findBean(
RoleAdminPaneController.class);
controller.getRoleDescription(role)
);
final String[] permissions = controller.getGrantedPrivileges(
role, CMS.getContext().getContentSection());

View File

@ -20,8 +20,10 @@ package com.arsdigita.cms.ui.type;
import org.libreccm.workflow.Workflow;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager;
import org.librecms.contentsection.ContentSectionRepository;
import org.librecms.contentsection.ContentType;
import org.librecms.contentsection.ContentTypeManager;
import org.librecms.contentsection.ContentTypeRepository;
import org.librecms.contenttypes.ContentTypeInfo;
import org.librecms.contenttypes.ContentTypesManager;
@ -39,11 +41,6 @@ import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Root;
import javax.transaction.Transactional;
/**
@ -63,9 +60,15 @@ class ContentTypeAdminPaneController {
@Inject
private ContentSectionRepository sectionRepo;
@Inject
private ContentSectionManager sectionManager;
@Inject
private ContentTypeRepository typeRepo;
@Inject
private ContentTypeManager typeManager;
@Inject
private ContentTypesManager typesManager;
@ -78,6 +81,27 @@ class ContentTypeAdminPaneController {
.collect(Collectors.toList());
}
@Transactional
protected List<String> getContentItemClassesList(
final ContentSection ofSection
) {
final ContentSection section = sectionRepo.findById(
ofSection.getObjectId()
)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No ContentSection with ID %d found.",
ofSection.getObjectId()
)
)
);
return section.getContentTypes()
.stream()
.map(type -> type.getContentItemClass())
.collect(Collectors.toList());
}
private String[] generateListEntry(final ContentType type) {
final String[] entry = new String[2];
@ -126,8 +150,9 @@ class ContentTypeAdminPaneController {
}
@Transactional(Transactional.TxType.REQUIRED)
protected Optional<String> getLifecycleDefinitionLabel(final ContentType type,
final Locale locale) {
protected Optional<String> getLifecycleDefinitionLabel(
final ContentType type,
final Locale locale) {
final LifecycleDefinition lifecycleDefinition = getLifecycleDefinition(
type);
@ -154,7 +179,7 @@ class ContentTypeAdminPaneController {
@Transactional(Transactional.TxType.REQUIRED)
protected Optional<String> getWorkflowTemplateName(final ContentType type,
final Locale locale) {
final Locale locale) {
final Workflow workflowTemplate = getWorkflowTemplate(type);
@ -193,4 +218,30 @@ class ContentTypeAdminPaneController {
return new ArrayList<>(contentSection.getWorkflowTemplates());
}
@Transactional(Transactional.TxType.REQUIRED)
protected void addContentTypeToContentSection(
final String type, final ContentSection toSection
) {
Objects.requireNonNull(type);
Objects.requireNonNull(toSection);
final ContentSection section = sectionRepo
.findById(toSection.getObjectId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No ContentSection identified by ID %d found.",
toSection.getObjectId()
)
)
);
sectionManager.addContentTypeToSection(
typeManager.classNameToClass(type),
section,
section.getLifecycleDefinitions().get(0),
section.getWorkflowTemplates().get(0)
);
}
}

View File

@ -101,6 +101,7 @@ public class SelectType extends CMSForm implements PrintListener,
/**
* Generate a checkbox list of all content type not associated with the
* current content section
* @param event
*/
@Override
public void prepare(final PrintEvent event) {
@ -111,18 +112,22 @@ public class SelectType extends CMSForm implements PrintListener,
final ContentSection section = CMS.getContext().getContentSection();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ContentTypeAdminPaneController controller = cdiUtil
.findBean(ContentTypeAdminPaneController.class);
final ContentTypesManager typesManager = cdiUtil.findBean(
ContentTypesManager.class);
final List<ContentTypeInfo> availableTypes = typesManager
.getAvailableContentTypes();
final List<String> assignedTypes = section.getContentTypes()
.stream()
.map(contentType -> contentType.getContentItemClass())
.collect(Collectors.toList());
final List<String> assignedTypes = controller
.getContentItemClassesList(section);
// = section.getContentTypes()
// .stream()
// .map(contentType -> contentType.getContentItemClass())
// .collect(Collectors.toList());
final List<ContentTypeInfo> notAssignedTypes = availableTypes.stream()
.filter(type -> assignedTypes.contains(type.getContentItemClass()
.filter(type -> !assignedTypes.contains(type.getContentItemClass()
.getName()))
.collect(Collectors.toList());
@ -184,18 +189,21 @@ public class SelectType extends CMSForm implements PrintListener,
final String[] types = (String[]) data.get(TYPES);
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ContentTypeManager typeManager = cdiUtil.findBean(
ContentTypeManager.class);
final ContentSectionManager sectionManager = cdiUtil.findBean(
ContentSectionManager.class);
// final ContentTypeManager typeManager = cdiUtil.findBean(
// ContentTypeManager.class);
// final ContentSectionManager sectionManager = cdiUtil.findBean(
// ContentSectionManager.class);
final ContentTypeAdminPaneController controller = cdiUtil
.findBean(ContentTypeAdminPaneController.class);
if (types != null) {
for (String type : types) {
sectionManager.addContentTypeToSection(
typeManager.classNameToClass(type),
section,
section.getLifecycleDefinitions().get(0),
section.getWorkflowTemplates().get(0));
// sectionManager.addContentTypeToSection(
// typeManager.classNameToClass(type),
// section,
// section.getLifecycleDefinitions().get(0),
// section.getWorkflowTemplates().get(0));
controller.addContentTypeToContentSection(type, section);
}
}
}

View File

@ -255,22 +255,28 @@ abstract class BaseWorkflowItemPane extends BaseItemPane {
= ((Optional<Workflow>) workflowRequestLocal
.get(state)).get();
final KernelConfig kernelConfig = KernelConfig.getConfig();
final Locale defaultLocale = kernelConfig.getDefaultLocale();
// final KernelConfig kernelConfig = KernelConfig.getConfig();
// final Locale defaultLocale = kernelConfig.getDefaultLocale();
props.add(new Property(gz("cms.ui.workflow.name"),
workflow.getName()
.getValue(defaultLocale)));
props.add(new Property(
gz("cms.ui.workflow.description"),
workflow.getDescription().getValue(defaultLocale)));
if (workflow.getState() == null) {
props.add(new Property(gz("cms.ui.workflow.current_state"),
gz("cms.ui.workflow.current_state.none")));
} else {
props.add(new Property(gz("cms.ui.workflow.current_state"),
workflow.getState().toString()));
}
final WorkflowAdminPaneController controller = CdiUtil
.createCdiUtil()
.findBean(WorkflowAdminPaneController.class);
props.addAll(controller.getWorkflowProperties(workflow));
// props.add(new Property(gz("cms.ui.workflow.name"),
// workflow.getName()
// .getValue(defaultLocale)));
// props.add(new Property(
// gz("cms.ui.workflow.description"),
// workflow.getDescription().getValue(defaultLocale)));
// if (workflow.getState() == null) {
// props.add(new Property(gz("cms.ui.workflow.current_state"),
// gz("cms.ui.workflow.current_state.none")));
// } else {
// props.add(new Property(gz("cms.ui.workflow.current_state"),
// workflow.getState().toString()));
// }
return props;
}

View File

@ -18,7 +18,9 @@
*/
package com.arsdigita.cms.ui.workflow;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.kernel.KernelConfig;
import com.arsdigita.toolbox.ui.Property;
import com.arsdigita.util.GraphSet;
import com.arsdigita.util.Graphs;
import com.arsdigita.util.UncheckedWrapperException;
@ -36,6 +38,7 @@ import org.libreccm.workflow.TaskManager;
import org.libreccm.workflow.TaskRepository;
import org.libreccm.workflow.Workflow;
import org.libreccm.workflow.WorkflowRepository;
import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager;
import org.librecms.contentsection.ContentSectionRepository;
@ -102,6 +105,97 @@ public class WorkflowAdminPaneController {
return new ArrayList<>(contentSection.getWorkflowTemplates());
}
@Transactional
public List<Map<String, String>> listWorkflowTemplates(
final ContentSection section
) {
final List<Workflow> templates = retrieveWorkflows(section);
return templates
.stream()
.map(this::buildWorkflowTemplateListItem)
.collect(Collectors.toList());
}
private Map<String, String> buildWorkflowTemplateListItem(
final Workflow workflow
) {
final Map<String, String> item = new HashMap<>();
item.put(
WorkflowListModelBuilder.WORKFLOW_TEMPLATE_ID,
Long.toString(workflow.getWorkflowId())
);
item.put(
WorkflowListModelBuilder.WORKFLOW_TEMPLATE_NAME,
workflow
.getName()
.getValue(KernelConfig.getConfig().getDefaultLocale()
)
);
return item;
}
@Transactional(Transactional.TxType.REQUIRED)
public List<Property> getWorkflowProperties(final Workflow ofWorkflow) {
final Workflow workflow = workflowRepo
.findById(ofWorkflow.getWorkflowId())
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No Workflow with ID %d available.",
ofWorkflow.getWorkflowId()
)
)
);
final KernelConfig kernelConfig = confManager
.findConfiguration(KernelConfig.class);
final Locale defaultLocale = kernelConfig.getDefaultLocale();
final List<Property> properties = new ArrayList<>();
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.name", CmsConstants.CMS_BUNDLE
),
workflow.getName().getValue(defaultLocale)
)
);
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.description",
CmsConstants.CMS_BUNDLE
),
workflow.getDescription().getValue(defaultLocale)
)
);
if (workflow.getState() == null) {
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.current_state",
CmsConstants.CMS_BUNDLE
),
new GlobalizedMessage(
"cms.ui.workflow.current_state.none",
CmsConstants.CMS_BUNDLE
)
)
);
} else {
properties.add(
new Property(
new GlobalizedMessage(
"cms.ui.workflow.current_state",
CmsConstants.CMS_BUNDLE
),
workflow.getState().toString()
)
);
}
return properties;
}
@Transactional(Transactional.TxType.REQUIRED)
public Workflow createWorkflow(final ContentSection section,
final String name,

View File

@ -30,6 +30,7 @@ import org.libreccm.workflow.Workflow;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
/**
* Builds a list of workflow templates registered to the current content
@ -41,6 +42,11 @@ import java.util.Locale;
*/
class WorkflowListModelBuilder extends AbstractListModelBuilder {
protected static final String WORKFLOW_TEMPLATE_ID = "workflowTemplateId";
protected static final String WORKFLOW_TEMPLATE_NAME
= "workflowTemplateName";
@Override
public final ListModel makeModel(final List list, final PageState state) {
return new Model();
@ -48,8 +54,9 @@ class WorkflowListModelBuilder extends AbstractListModelBuilder {
private class Model implements ListModel {
private final Iterator<Workflow> templates;
private Workflow currentTemplate;
private final Iterator<Map<String, String>> templates;
private Map<String, String> currentTemplate;
public Model() {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
@ -57,7 +64,7 @@ class WorkflowListModelBuilder extends AbstractListModelBuilder {
WorkflowAdminPaneController.class);
templates = controller
.retrieveWorkflows(CMS.getContext().getContentSection())
.listWorkflowTemplates(CMS.getContext().getContentSection())
.iterator();
}
@ -73,14 +80,12 @@ class WorkflowListModelBuilder extends AbstractListModelBuilder {
@Override
public Object getElement() {
final KernelConfig kernelConfig = KernelConfig.getConfig();
final Locale defaultLocale = kernelConfig.getDefaultLocale();
return currentTemplate.getName().getValue(defaultLocale);
return currentTemplate.get(WORKFLOW_TEMPLATE_NAME);
}
@Override
public String getKey() {
return Long.toString(currentTemplate.getWorkflowId());
return currentTemplate.get(WORKFLOW_TEMPLATE_ID);
}
}

View File

@ -0,0 +1,150 @@
package db.migrations.org.librecms.ccm_cms;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class V7_0_0_24__add_lifecycle_uuid extends BaseJavaMigration {
@Override
public void migrate(final Context context) throws Exception {
final Connection connection = context.getConnection();
final List<Long> lifecycleIds = retrieveLifecycleIds(connection);
final List<Long> definitionIds = retrieveDefinitionIds(
connection
);
addLifecycleUuidCol(connection);
addDefinitionLifecycleCol(connection);
setLifecycleUuid(connection, lifecycleIds);
setDefinitionUuid(connection, definitionIds);
addLifecycleUniqueConstraint(connection);
addDefinitionUniqueConstraint(connection);
}
private List<Long> retrieveLifecycleIds(final Connection connection)
throws Exception {
final List<Long> result = new ArrayList<>();
try (PreparedStatement stmt = connection
.prepareStatement("select LIFECYCLE_ID from LIFECYCLES");
ResultSet resultSet = stmt.executeQuery()) {
while (resultSet.next()) {
result.add(resultSet.getLong("LIFECYCLE_ID"));
}
}
return result;
}
private List<Long> retrieveDefinitionIds(final Connection connection)
throws Exception {
final List<Long> result = new ArrayList<>();
try (PreparedStatement stmt = connection
.prepareStatement(
"select LIFECYCLE_DEFINITION_ID "
+ "from LIFECYLE_DEFINITIONS"
);
ResultSet resultSet = stmt.executeQuery()) {
while (resultSet.next()) {
result.add(resultSet.getLong("LIFECYCLE_ID"));
}
}
return result;
}
private void addLifecycleUuidCol(final Connection connection)
throws Exception {
try (PreparedStatement stmt = connection.prepareStatement(
"alter table LIFECYCLES add column UUID varchar(255)"
)) {
stmt.execute();
}
}
private void addDefinitionLifecycleCol(final Connection connection)
throws Exception {
try (PreparedStatement stmt = connection.prepareStatement(
"alter table lifecyle_definitions "
+ "add column UUID varchar(255)"
)) {
stmt.execute();
}
}
private void setLifecycleUuid(
final Connection connection, final List<Long> lifecycleIds
) throws Exception {
try (PreparedStatement stmt = connection.prepareStatement(
"update LIFECYCLES set UUID = ? where LIFECYCLE_ID = ?"
)) {
for (final Long lifecycleId : lifecycleIds) {
stmt.setString(1, UUID.randomUUID().toString());
stmt.setLong(2, lifecycleId);
stmt.executeUpdate();
stmt.clearParameters();
}
}
}
private void setDefinitionUuid(
final Connection connection, final List<Long> definitionIds
) throws Exception {
try (PreparedStatement stmt = connection.prepareStatement(
"update LIFECYLE_DEFINITIONS set UUID = ? "
+ "where LIFECYCLE_DEFINITION_ID = ?"
)) {
for (final Long lifecycleId : definitionIds) {
stmt.setString(1, UUID.randomUUID().toString());
stmt.setLong(2, lifecycleId);
stmt.executeUpdate();
stmt.clearParameters();
}
}
}
private void addLifecycleUniqueConstraint(
final Connection connection
) throws Exception {
try (PreparedStatement stmt = connection.prepareStatement(
"alter table LIFECYCLES "
+ "add constraint UK_40o4njo54m8c4xlwq6ctnsimd "
+ "unique (UUID)"
)) {
stmt.execute();
}
}
private void addDefinitionUniqueConstraint(
final Connection connection
) throws Exception {
try (PreparedStatement stmt = connection.prepareStatement(
"alter table LIFECYLE_DEFINITIONS "
+ "add constraint UK_n6ki3s5im2k2nccpocuctqqe3 "
+ "unique (UUID)"
)) {
stmt.execute();
}
}
}

View File

@ -0,0 +1,22 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package db.migrations.org.librecms.ccm_cms.h2;
import org.flywaydb.core.api.migration.Context;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class V7_0_0_24__add_lifecycle_uuid
extends db.migrations.org.librecms.ccm_cms.V7_0_0_24__add_lifecycle_uuid {
@Override
public void migrate(final Context context) throws Exception {
super.migrate(context);
}
}

View File

@ -0,0 +1,22 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package db.migrations.org.librecms.ccm_cms.pgsql;
import org.flywaydb.core.api.migration.Context;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class V7_0_0_24__add_lifecycle_uuid
extends db.migrations.org.librecms.ccm_cms.V7_0_0_24__add_lifecycle_uuid {
@Override
public void migrate(final Context context) throws Exception {
super.migrate(context);
}
}

View File

@ -0,0 +1,45 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.librecms.contentsection;
import org.libreccm.categorization.Category;
import org.libreccm.imexport.AbstractEntityImExporter;
import org.libreccm.imexport.Exportable;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import javax.transaction.Transactional;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
* @param <T>
*/
public abstract class AbstractContentItemImExporter<T extends ContentItem>
extends AbstractEntityImExporter<T> {
@Inject
private ContentItemRepository itemRepository;
@Override
protected Set<Class<? extends Exportable>> getRequiredEntities() {
final Set<Class<? extends Exportable>> entities = new HashSet<>();
entities.add(Category.class);
entities.add(ContentSection.class);
return entities;
}
@Override
@Transactional(Transactional.TxType.REQUIRED)
public void saveImportedEntity(final T entity) {
itemRepository.save(entity);
}
}

View File

@ -313,7 +313,7 @@ import static org.librecms.CmsConstants.*;
+ " '" + AssetPrivileges.VIEW + "' "
+ " ) "
+ " OR true = :isSystemUser OR true = :isAdmin"
+ ")")
+ ") ORDER BY a.displayName")
,
@NamedQuery(
name = "Asset.countFilterByFolderAndTitle",

View File

@ -18,6 +18,8 @@
*/
package org.librecms.contentsection;
import com.fasterxml.jackson.annotation.JsonIgnore;
import static org.librecms.CmsConstants.*;
import org.hibernate.envers.Audited;
@ -56,9 +58,12 @@ import org.hibernate.search.annotations.IndexedEmbedded;
import javax.persistence.FetchType;
import org.hibernate.envers.NotAudited;
import org.libreccm.imexport.Exportable;
import org.librecms.contentsection.privileges.ItemPrivileges;
import javax.persistence.OrderBy;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
/**
@ -594,12 +599,13 @@ import javax.persistence.OrderBy;
+ " )"
)
})
public class ContentItem extends CcmObject implements Serializable {
public class ContentItem extends CcmObject implements Serializable, Exportable {
private static final long serialVersionUID = 5897287630227129653L;
@Column(name = "ITEM_UUID", nullable = false)
@Field
@XmlElement(name = "item-uuid", namespace = CMS_XML_NS)
private String itemUuid;
/**
@ -619,6 +625,7 @@ public class ContentItem extends CcmObject implements Serializable {
)
)
// @Field
@XmlElement(name = "name", namespace = CMS_XML_NS)
private LocalizedString name;
/**
@ -628,6 +635,7 @@ public class ContentItem extends CcmObject implements Serializable {
@JoinColumn(name = "CONTENT_TYPE_ID")
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
// @Field
@XmlElement(name = "content-type", namespace = CMS_XML_NS)
private ContentType contentType;
/**
@ -644,6 +652,7 @@ public class ContentItem extends CcmObject implements Serializable {
)
)
@IndexedEmbedded
@XmlElement(name = "title", namespace = CMS_XML_NS)
private LocalizedString title;
/**
@ -658,6 +667,7 @@ public class ContentItem extends CcmObject implements Serializable {
@JoinColumn(name = "OBJECT_ID")}
))
@IndexedEmbedded
@XmlElement(name = "description", namespace = CMS_XML_NS)
private LocalizedString description;
/**
@ -666,6 +676,7 @@ public class ContentItem extends CcmObject implements Serializable {
@Column(name = "VERSION")
@Enumerated(EnumType.STRING)
@Field
@XmlElement(name = "version", namespace = CMS_XML_NS)
private ContentItemVersion version;
/**
@ -673,6 +684,7 @@ public class ContentItem extends CcmObject implements Serializable {
*/
@Column(name = "LAUNCH_DATE")
@Temporal(TemporalType.DATE)
@XmlElement(name = "launch-date", namespace = CMS_XML_NS)
private Date launchDate;
/**
@ -684,16 +696,20 @@ public class ContentItem extends CcmObject implements Serializable {
@OneToMany(mappedBy = "item", fetch = FetchType.LAZY)
@OrderBy("order ASC")
@XmlElementWrapper(name = "attachments", namespace = CMS_XML_NS)
@JsonIgnore
private List<AttachmentList> attachments;
@OneToOne()
@JoinColumn(name = "LIFECYCLE_ID")
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@XmlElement(name = "lifecycle", namespace = CMS_XML_NS)
private Lifecycle lifecycle;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "WORKFLOW_ID")
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@XmlElement(name = "workflow", namespace = CMS_XML_NS)
private Workflow workflow;
/**
@ -706,6 +722,7 @@ public class ContentItem extends CcmObject implements Serializable {
@Column(name = "CREATION_DATE")
@Temporal(TemporalType.TIMESTAMP)
@NotAudited
@XmlElement(name = "creation-date", namespace = CMS_XML_NS)
private Date creationDate;
/**
@ -718,6 +735,7 @@ public class ContentItem extends CcmObject implements Serializable {
@Column(name = "LAST_MODIFIED")
@Temporal(TemporalType.TIMESTAMP)
@NotAudited
@XmlElement(name = "last-modified", namespace = CMS_XML_NS)
private Date lastModified;
/**
@ -732,6 +750,7 @@ public class ContentItem extends CcmObject implements Serializable {
*/
@Column(name = "CREATION_USER_NAME")
@NotAudited
@XmlElement(name = "creation-username", namespace = CMS_XML_NS)
private String creationUserName;
/**
@ -746,6 +765,7 @@ public class ContentItem extends CcmObject implements Serializable {
*/
@Column(name = "LAST_MODIFYING_USER_NAME")
@NotAudited
@XmlElement(name = "last-modifying-username", namespace = CMS_XML_NS)
private String lastModifyingUserName;
public ContentItem() {

Some files were not shown because too many files have changed in this diff Show More