Compare commits
19 Commits
master
...
embedded-t
| Author | SHA1 | Date |
|---|---|---|
|
|
2f31c5b3a8 | |
|
|
179ca1fc5e | |
|
|
1fc48eb39c | |
|
|
8956a5d9f5 | |
|
|
ede3d639f5 | |
|
|
132df428ed | |
|
|
c49dc8e31a | |
|
|
12cc5f5ea7 | |
|
|
87172c1f27 | |
|
|
047aaf0645 | |
|
|
85fabbf29e | |
|
|
bbe69cbd2f | |
|
|
05b722e61c | |
|
|
f03e63a443 | |
|
|
0eea72225e | |
|
|
7d3475a480 | |
|
|
04789fd327 | |
|
|
a50e1fb99b | |
|
|
a369979f79 |
|
|
@ -11,6 +11,7 @@ import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemMiscStep;
|
|||
import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemPositionStep;
|
||||
import com.arsdigita.cms.contenttypes.ui.ProfileSiteItemPropertiesStep;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
import org.librecms.assets.Person;
|
||||
import org.librecms.contentsection.ContentItem;
|
||||
|
|
@ -21,6 +22,7 @@ import org.librecms.contenttypes.ContentTypeDescription;
|
|||
import java.util.Objects;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
|
|
@ -85,43 +87,49 @@ public class ProfileSiteItem extends ContentItem {
|
|||
@JoinColumn(name = "OWNER_ID")
|
||||
private Person owner;
|
||||
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "PROFILE_SITE_ITEMS_POSITION",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PROFILE_SITE_ITEM_ID")
|
||||
}
|
||||
)
|
||||
)
|
||||
// @Embedded
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "PROFILE_SITE_ITEMS_POSITION",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "PROFILE_SITE_ITEM_ID")
|
||||
// }
|
||||
// )
|
||||
// )
|
||||
@Column(name = "POSITION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString position;
|
||||
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "PROFILE_SITE_ITEMS_INTERESTS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PROFILE_SITE_ITEM_ID")
|
||||
}
|
||||
)
|
||||
)
|
||||
// @Embedded
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "PROFILE_SITE_ITEMS_INTERESTS",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "PROFILE_SITE_ITEM_ID")
|
||||
// }
|
||||
// )
|
||||
// )
|
||||
@Column(name = "INTERESTS")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString interests;
|
||||
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "PROFILE_SITE_ITEMS_MISC",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PROFILE_SITE_ITEM_ID")
|
||||
}
|
||||
)
|
||||
)
|
||||
// @Embedded
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "PROFILE_SITE_ITEMS_MISC",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "PROFILE_SITE_ITEM_ID")
|
||||
// }
|
||||
// )
|
||||
// )
|
||||
@Column(name = "MISC")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString misc;
|
||||
|
||||
public ProfileSiteItem() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* 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.rs;
|
||||
|
||||
import org.librecms.contentsection.ContentItem;
|
||||
import org.librecms.contentsection.ContentItemRepository;
|
||||
import org.librecms.contentsection.ContentSection;
|
||||
import org.librecms.contentsection.ContentSectionRepository;
|
||||
import org.librecms.contentsection.Folder;
|
||||
import org.librecms.contentsection.FolderRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.transaction.Transactional;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
import static javax.ws.rs.core.MediaType.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@Path("/{content-section}/items/{path: .*}")
|
||||
public class ContentItemController {
|
||||
|
||||
@Inject
|
||||
private FolderRepository folderRepo;
|
||||
|
||||
@Inject
|
||||
private ContentItemRepository itemRepo;
|
||||
|
||||
@Inject
|
||||
private ContentSectionRepository sectionRepo;
|
||||
|
||||
@GET
|
||||
@Path("/")
|
||||
@Produces(APPLICATION_JSON)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public ContentItem getContentItem(
|
||||
@PathParam("content-section") final String sectionName,
|
||||
@PathParam("path") final String path
|
||||
) {
|
||||
final String[] pathTokens = path.split("/");
|
||||
|
||||
final ContentSection section = sectionRepo
|
||||
.findByLabel(sectionName)
|
||||
.orElseThrow(
|
||||
() -> new WebApplicationException(
|
||||
String.format(
|
||||
"ContentSection \"%s\" does not exist.",
|
||||
sectionName),
|
||||
Response.Status.NOT_FOUND
|
||||
)
|
||||
);
|
||||
|
||||
final Folder rootFolder = section.getRootDocumentsFolder();
|
||||
final StringBuilder folderPathBuilder = new StringBuilder("/");
|
||||
Folder folder = rootFolder;
|
||||
for (int i = 0; i < pathTokens.length - 1; i++) {
|
||||
final String pathToken = pathTokens[i];
|
||||
folderPathBuilder.append(pathToken);
|
||||
final Optional<Folder> result = folder
|
||||
.getSubFolders()
|
||||
.stream()
|
||||
.filter(subFolder -> subFolder.getName().equals(pathToken))
|
||||
.findAny();
|
||||
if (result.isPresent()) {
|
||||
folder = result.get();
|
||||
} else {
|
||||
throw new WebApplicationException(
|
||||
String.format(
|
||||
"Folder %s not found in ContentSection %s.",
|
||||
folderPathBuilder.toString(),
|
||||
sectionName
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
final String itemName = pathTokens[pathTokens.length - 1];
|
||||
final ContentItem item = itemRepo
|
||||
.findByNameInFolder(folder, itemName)
|
||||
.orElseThrow(
|
||||
() -> new WebApplicationException(
|
||||
String.format(
|
||||
"No ContentItem %s in folder %s of ContentSection %s.",
|
||||
itemName,
|
||||
folderPathBuilder.toString()
|
||||
),
|
||||
Response.Status.NOT_FOUND
|
||||
)
|
||||
);
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
|
@ -38,6 +38,7 @@ public class ContentSectionsApplication extends Application{
|
|||
|
||||
classes.add(Assets.class);
|
||||
classes.add(ContentItems.class);
|
||||
classes.add(ContentItemController.class);
|
||||
classes.add(ContentSections.class);
|
||||
classes.add(Images.class);
|
||||
|
||||
|
|
|
|||
|
|
@ -333,11 +333,15 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>oracle12c</param>
|
||||
<param>postgresql9</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm.categorization</param>
|
||||
<param>org.libreccm.core</param>
|
||||
|
|
@ -656,11 +660,15 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>postgresql9</param>
|
||||
<param>oracle12c</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm</param>
|
||||
</packages>
|
||||
|
|
@ -738,10 +746,14 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>postgresql9</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm</param>
|
||||
</packages>
|
||||
|
|
@ -820,10 +832,14 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>postgresql9</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm</param>
|
||||
</packages>
|
||||
|
|
@ -897,10 +913,14 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>postgresql9</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm</param>
|
||||
</packages>
|
||||
|
|
@ -978,10 +998,14 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>postgresql9</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm</param>
|
||||
</packages>
|
||||
|
|
@ -1055,10 +1079,14 @@
|
|||
<groupId>de.jpdigital</groupId>
|
||||
<artifactId>hibernate53-ddl-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<dialects>
|
||||
<!-- <dialects>
|
||||
<param>h2</param>
|
||||
<param>postgresql9</param>
|
||||
</dialects>
|
||||
</dialects>-->
|
||||
<customDialects>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmH2Dialect</param>
|
||||
<param>org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect</param>
|
||||
</customDialects>
|
||||
<packages>
|
||||
<param>org.libreccm</param>
|
||||
</packages>
|
||||
|
|
|
|||
|
|
@ -80,8 +80,7 @@ public class UserBanner extends SimpleComponent {
|
|||
contentElem.addAttribute("screenName",
|
||||
user.get().getName());
|
||||
contentElem.addAttribute("primaryEmail",
|
||||
user.get().getPrimaryEmailAddress()
|
||||
.getAddress());
|
||||
user.get().getPrimaryEmailAddress());
|
||||
contentElem.addAttribute("userID",
|
||||
Long.toString(user.get().getPartyId()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ class GroupAddMemberForm extends Form {
|
|||
case COL_MEMBER_GIVEN_NAME:
|
||||
return user.getGivenName();
|
||||
case COL_MEMBER_EMAIL:
|
||||
return user.getPrimaryEmailAddress().getAddress();
|
||||
return user.getPrimaryEmailAddress();
|
||||
case COL_MEMBER_ADD:
|
||||
return new Label(new GlobalizedMessage(
|
||||
"ui.admin.group_details.add_member.table.add",
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ class GroupMembersTable extends Table {
|
|||
case COL_MEMBER_GIVEN_NAME:
|
||||
return member.getGivenName();
|
||||
case COL_MEMBER_EMAIL:
|
||||
return member.getPrimaryEmailAddress().getAddress();
|
||||
return member.getPrimaryEmailAddress();
|
||||
case COL_MEMBER_REMOVE:
|
||||
return new Label(new GlobalizedMessage(
|
||||
"ui.admin.group_details.members_table.remove",
|
||||
|
|
|
|||
|
|
@ -95,8 +95,11 @@ class EmailForm extends Form {
|
|||
final User user = userRepository.findById(Long.parseLong(
|
||||
userIdStr)).get();
|
||||
EmailAddress email = null;
|
||||
if (user.getPrimaryEmailAddress().getAddress().equals(selected)) {
|
||||
email = user.getPrimaryEmailAddress();
|
||||
if (user.getPrimaryEmailAddress().equals(selected)) {
|
||||
email = new EmailAddress();
|
||||
email.setAddress(user.getPrimaryEmailAddress());
|
||||
email.setBouncing(user.isPrimaryEmailAddressBouncing());
|
||||
email.setVerified(user.isPrimaryEmailAddressVerified());
|
||||
} else {
|
||||
for (EmailAddress current : user.getEmailAddresses()) {
|
||||
if (current.getAddress().equals(selected)) {
|
||||
|
|
@ -152,9 +155,12 @@ class EmailForm extends Form {
|
|||
if (selected == null) {
|
||||
email = new EmailAddress();
|
||||
user.addEmailAddress(email);
|
||||
} else if (user.getPrimaryEmailAddress().getAddress().equals(
|
||||
} else if (user.getPrimaryEmailAddress().equals(
|
||||
selected)) {
|
||||
email = user.getPrimaryEmailAddress();
|
||||
email = new EmailAddress();
|
||||
email.setAddress(user.getPrimaryEmailAddress());
|
||||
email.setBouncing(user.isPrimaryEmailAddressBouncing());
|
||||
email.setVerified(user.isPrimaryEmailAddressVerified());
|
||||
} else {
|
||||
for (EmailAddress current : user.getEmailAddresses()) {
|
||||
if (current.getAddress().equals(selected)) {
|
||||
|
|
|
|||
|
|
@ -64,11 +64,11 @@ class PrimaryEmailTableModel implements TableModel {
|
|||
public Object getElementAt(final int columnIndex) {
|
||||
switch(columnIndex) {
|
||||
case COL_ADDRESS:
|
||||
return user.getPrimaryEmailAddress().getAddress();
|
||||
return user.getPrimaryEmailAddress();
|
||||
case COL_VERIFIED:
|
||||
return Boolean.toString(user.getPrimaryEmailAddress().isVerified());
|
||||
return Boolean.toString(user.isPrimaryEmailAddressVerified());
|
||||
case COL_BOUNCING:
|
||||
return Boolean.toString(user.getPrimaryEmailAddress().isBouncing());
|
||||
return Boolean.toString(user.isPrimaryEmailAddressBouncing());
|
||||
case COL_ACTION:
|
||||
return new Label(new GlobalizedMessage(
|
||||
"ui.admin.user.primary_email_address.edit", ADMIN_BUNDLE));
|
||||
|
|
@ -79,7 +79,7 @@ class PrimaryEmailTableModel implements TableModel {
|
|||
|
||||
@Override
|
||||
public Object getKeyAt(final int columnIndex) {
|
||||
return user.getPrimaryEmailAddress().getAddress();
|
||||
return user.getPrimaryEmailAddress();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ class UsersTable extends Table {
|
|||
case COL_GIVEN_NAME:
|
||||
return user.getGivenName();
|
||||
case COL_PRIMARY_EMAIL:
|
||||
return user.getPrimaryEmailAddress().getAddress();
|
||||
return user.getPrimaryEmailAddress();
|
||||
case COL_SCREEN_NAME:
|
||||
return user.getName();
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class EmailInitListener implements FormInitListener {
|
|||
|
||||
|
||||
|
||||
data.put(m_param.getName(), user.getPrimaryEmailAddress().getAddress());
|
||||
data.put(m_param.getName(), user.getPrimaryEmailAddress());
|
||||
|
||||
LOGGER.debug("SUCCESS");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,11 +116,9 @@ public class UserEditForm extends UserForm
|
|||
user.setFamilyName((String) m_lastName.getValue(state));
|
||||
user.setName((String) m_screenName.getValue(state));
|
||||
final String emailValue = (String) data.get(FORM_EMAIL);
|
||||
if (!emailValue.equals(user.getPrimaryEmailAddress().getAddress())) {
|
||||
final EmailAddress newAddress = new EmailAddress();
|
||||
newAddress.setAddress(data.get(FORM_EMAIL).toString());
|
||||
newAddress.setVerified(false);
|
||||
user.setPrimaryEmailAddress(newAddress);
|
||||
if (!emailValue.equals(user.getPrimaryEmailAddress())) {
|
||||
user.setPrimaryEmailAddress(data.get(FORM_EMAIL).toString());
|
||||
user.setPrimaryEmailAddressVerified(false);
|
||||
|
||||
final ChallengeManager challengeManager = CdiUtil.createCdiUtil()
|
||||
.findBean(ChallengeManager.class);
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ public abstract class UserForm extends Form
|
|||
}
|
||||
m_firstName.setValue(state, user.getGivenName());
|
||||
m_lastName.setValue(state, user.getFamilyName());
|
||||
m_email.setValue(state, user.getPrimaryEmailAddress().getAddress());
|
||||
m_email.setValue(state, user.getPrimaryEmailAddress());
|
||||
m_screenName.setValue(state, user.getName());
|
||||
|
||||
}
|
||||
|
|
@ -283,7 +283,7 @@ public abstract class UserForm extends Form
|
|||
}
|
||||
}
|
||||
|
||||
final String oldEmail = user.getPrimaryEmailAddress().getAddress();
|
||||
final String oldEmail = user.getPrimaryEmailAddress();
|
||||
final String email = (String) m_email.getValue(state);
|
||||
if (KernelConfig.getConfig().emailIsPrimaryIdentifier()
|
||||
&& email != null && !email.equals(oldEmail)) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,354 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package db.migrations.org.libreccm.ccm_core.pgsql;
|
||||
|
||||
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
||||
import org.flywaydb.core.api.migration.Context;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonObjectBuilder;
|
||||
import javax.json.JsonWriter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class V7_0_0_37__localized_string_embedded_to_json extends BaseJavaMigration {
|
||||
|
||||
private static final String[] ADD_COLUMN_STATEMENTS = new String[]{
|
||||
"alter table CCM_CORE.CATEGORIES add column TITLE jsonb",
|
||||
"alter table CCM_CORE.CATEGORIES add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.CATEGORY_DOMAINS add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.CATEGORY_DOMAINS add column TITLE jsonb",
|
||||
"alter table CCM_ROLES add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.FORMBUILDER_COMPONENTS add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.FORMBUILDER_DATA_QUERIES add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.FORMBUILDER_DATA_QUERIES add column QUERY_NAME jsonb",
|
||||
"alter table CCM_CORE.FORMBUILDER_OPTIONS add column LABEL jsonb",
|
||||
"alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.FORMBUILDER_PROCESS_LISTENERS add column LISTENER_NAME jsonb",
|
||||
"alter table CCM_CORE.PAGE_MODELS add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.PAGE_MODELS add column TITLE jsonb",
|
||||
"alter table CCM_CORE.RESOURCE_TYPES add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.RESOURCES add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.RESOURCES add column TITLE jsonb",
|
||||
"alter table CCM_CORE.SETTINGS add column SETTING_VALUE_LOCALIZED_STRING jsonb",
|
||||
"alter table CCM_CORE.WORKFLOW_TASKS add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.WORKFLOW_TASKS add column LABEL jsonb",
|
||||
"alter table CCM_CORE.WORKFLOWS add column DESCRIPTION jsonb",
|
||||
"alter table CCM_CORE.WORKFLOWS add column NAME jsonb"
|
||||
};
|
||||
|
||||
private static final int OBJECT_TABLE = 0;
|
||||
|
||||
private static final int LOCALIZED_STR_TABLE = 1;
|
||||
|
||||
private static final int OBJECT_ID_COL = 2;
|
||||
|
||||
private static final int VALUE_ID_COL = 3;
|
||||
|
||||
private static final int TARGET_COL = 4;
|
||||
|
||||
private static final String[][] MIGRATE = new String[][]{
|
||||
new String[]{
|
||||
"CCM_CORE.CATEGORIES",
|
||||
"CCM_CORE.CATEGORY_TITLES",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"TITLE"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.CATEGORIES",
|
||||
"CCM_CORE.CATEGORY_DESCRIPTIONS",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.CATEGORY_DOMAINS",
|
||||
"CCM_CORE.DOMAIN_TITLES",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"TITLE"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.CATEGORY_DOMAINS",
|
||||
"CCM_CORE.DOMAIN_DESCRIPTIONS",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"DESCRIPTIONS"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.CCM_ROLES",
|
||||
"CCM_CORE.ROLE_DESCRIPTIONS",
|
||||
"ROLE_ID",
|
||||
"ROLE_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.FORMBUILDER_COMPONENTS",
|
||||
"CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.FORMBUILDER_DATA_QUERIES",
|
||||
"FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.FORMBUILDER_DATA_QUERIES",
|
||||
"FORMBUILDER_DATA_QUERY_NAMES",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"QUERY_NAME"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.FORMBUILDER_OPTIONS",
|
||||
"FORMBUILDER_OPTION_LABELS",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"LABEL"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.FORMBUILDER_PROCESS_LISTENERS",
|
||||
"FORMBUILDER_LISTENER_DESCRIPTIONS",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.FORMBUILDER_PROCESS_LISTENERS",
|
||||
"FORMBUILDER_LISTENER_NAMES",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"LISTENER_NAME"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.PAGE_MODELS",
|
||||
"CCM_CORE.PAGE_MODEL_DESCRIPTIONS",
|
||||
"PAGE_MODEL_ID",
|
||||
"PAGE_MODEL_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.PAGE_MODELS",
|
||||
"CCM_CORE.PAGE_MODEL_TITLES",
|
||||
"PAGE_MODEL_ID",
|
||||
"PAGE_MODEL_ID",
|
||||
"TITLE"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.RESOURCE_TYPES",
|
||||
"CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS",
|
||||
"RESOURCE_TYPE_ID",
|
||||
"RESOURCE_TYPE_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.RESOURCES",
|
||||
"CCM_CORE.RESOURCE_DESCRIPTIONS",
|
||||
"OBJECT_ID", "OBJECT_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.RESOURCES",
|
||||
"CCM_CORE.RESOURCE_TITLES",
|
||||
"OBJECT_ID",
|
||||
"OBJECT_ID",
|
||||
"TITLE"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.SETTINGS",
|
||||
"CCM_CORE.SETTINGS_L10N_STR_VALUES",
|
||||
"SETTING_ID",
|
||||
"ENTRY_ID",
|
||||
"SETTING_VALUE_LOCALIZED_STRING"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.WORKFLOW_TASKS",
|
||||
"CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS",
|
||||
"TASK_ID",
|
||||
"TASK_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.WORKFLOW_TASKS",
|
||||
"CCM_CORE.WORKFLOW_TASK_LABELS",
|
||||
"TASK_ID",
|
||||
"TASK_ID",
|
||||
"LABEL"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.WORKFLOWS",
|
||||
"CCM_CORE.WORKFLOW_DESCRIPTIONS",
|
||||
"WORKFLOW_ID",
|
||||
"WORKFLOW_ID",
|
||||
"DESCRIPTION"
|
||||
},
|
||||
new String[]{
|
||||
"CCM_CORE.WORKFLOWS",
|
||||
"CCM_CORE.WORKFLOW_NAMES",
|
||||
"WORKFLOW_ID",
|
||||
"WORKFLOW_ID",
|
||||
"NAME"
|
||||
}
|
||||
};
|
||||
|
||||
private static final String SELECT_IDS_QUERY_TEMPLATE = "select %s from %s";
|
||||
|
||||
private static final String SELECT_VALUES_QUERY_TEMPLATE
|
||||
= "select locale, localized_value from %s where %s = ?";
|
||||
|
||||
private static final String SET_VALUES_QUERY_TEMPLATE
|
||||
= "update %s set %s = ? where %s = ?";
|
||||
|
||||
private static final String[] DROP_TABLES = new String[]{
|
||||
"CCM_CORE.CATEGORY_TITLES",
|
||||
"CCM_CORE.CATEGORY_DESCRIPTIONS",
|
||||
"CCM_CORE.DOMAIN_TITLES",
|
||||
"CCM_CORE.DOMAIN_DESCRIPTIONS",
|
||||
"CCM_CORE.ROLE_DESCRIPTIONS",
|
||||
"CCM_CORE.FORMBUILDER_COMPONENT_DESCRIPTIONS",
|
||||
"FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
|
||||
"FORMBUILDER_DATA_QUERY_NAMES",
|
||||
"FORMBUILDER_OPTION_LABELS",
|
||||
"FORMBUILDER_LISTENER_DESCRIPTIONS",
|
||||
"FORMBUILDER_LISTENER_NAMES",
|
||||
"CCM_CORE.PAGE_MODEL_DESCRIPTIONS",
|
||||
"CCM_CORE.PAGE_MODEL_TITLES",
|
||||
"CCM_CORE.RESOURCE_TYPE_DESCRIPTIONS",
|
||||
"CCM_CORE.RESOURCE_DESCRIPTIONS",
|
||||
"CCM_CORE.RESOURCE_TITLES",
|
||||
"CCM_CORE.SETTINGS_L10N_STR_VALUES",
|
||||
"CCM_CORE.WORKFLOW_TASK_DESCRIPTIONS",
|
||||
"CCM_CORE.WORKFLOW_TASK_LABELS",
|
||||
"CCM_CORE.WORKFLOW_DESCRIPTIONS",
|
||||
"CCM_CORE.WORKFLOW_NAMES",};
|
||||
|
||||
private static final String DROP_TABLES_QUERY_TEMPLATE = "drop table %s";
|
||||
|
||||
@Override
|
||||
public void migrate(final Context context) throws Exception {
|
||||
final Connection connection = context.getConnection();
|
||||
|
||||
// Add columns for localized strings
|
||||
for (final String addColStatement : ADD_COLUMN_STATEMENTS) {
|
||||
try (PreparedStatement statement = connection.prepareStatement(
|
||||
addColStatement
|
||||
)) {
|
||||
statement.execute();
|
||||
}
|
||||
}
|
||||
|
||||
for (final String[] migrate : MIGRATE) {
|
||||
final String objectTable = migrate[OBJECT_TABLE];
|
||||
final String localizedStringTable = migrate[LOCALIZED_STR_TABLE];
|
||||
final String objectIdCol = migrate[OBJECT_ID_COL];
|
||||
final String valueIdCol = migrate[VALUE_ID_COL];
|
||||
final String targetCol = migrate[TARGET_COL];
|
||||
|
||||
final List<Long> objectIds = new ArrayList<>();
|
||||
final String selectIdsQuerySql = String.format(
|
||||
SELECT_IDS_QUERY_TEMPLATE,
|
||||
objectIdCol,
|
||||
objectTable
|
||||
);
|
||||
try (PreparedStatement stmt = connection.prepareStatement(
|
||||
selectIdsQuerySql
|
||||
);
|
||||
ResultSet resultSet = stmt.executeQuery()) {
|
||||
while (resultSet.next()) {
|
||||
objectIds.add(resultSet.getLong(objectIdCol));
|
||||
}
|
||||
}
|
||||
|
||||
final String valuesQuerySql = String.format(
|
||||
SELECT_VALUES_QUERY_TEMPLATE,
|
||||
localizedStringTable,
|
||||
valueIdCol
|
||||
);
|
||||
final String setValuesQuerySql = String.format(
|
||||
SET_VALUES_QUERY_TEMPLATE,
|
||||
objectTable,
|
||||
targetCol,
|
||||
objectIdCol
|
||||
);
|
||||
try (PreparedStatement selectValuesStmt = connection
|
||||
.prepareStatement(valuesQuerySql);
|
||||
PreparedStatement setValuesStmt = connection.prepareStatement(
|
||||
setValuesQuerySql
|
||||
)) {
|
||||
for (final Long objectId : objectIds) {
|
||||
selectValuesStmt.setLong(1, objectId);
|
||||
final JsonObjectBuilder jsonObjBuilder = Json
|
||||
.createObjectBuilder();
|
||||
try (ResultSet resultSet = selectValuesStmt.executeQuery()) {
|
||||
while (resultSet.next()) {
|
||||
final String locale = resultSet.getString(
|
||||
"locale"
|
||||
);
|
||||
final String localizedValue = resultSet.getString(
|
||||
"localizedValue"
|
||||
);
|
||||
jsonObjBuilder.add(locale, localizedValue);
|
||||
}
|
||||
}
|
||||
|
||||
try (StringWriter strWriter = new StringWriter();
|
||||
JsonWriter jsonWriter = Json.createWriter(strWriter)) {
|
||||
jsonWriter.writeObject(jsonObjBuilder.build());
|
||||
setValuesStmt.setString(1, strWriter.toString());
|
||||
}
|
||||
setValuesStmt.setLong(2, objectId);
|
||||
setValuesStmt.execute();
|
||||
|
||||
setValuesStmt.clearParameters();
|
||||
selectValuesStmt.clearParameters();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (final String dropTable : DROP_TABLES) {
|
||||
try(PreparedStatement stmt = connection.prepareStatement(
|
||||
String.format(DROP_TABLES_QUERY_TEMPLATE, dropTable)
|
||||
)) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
// SELECT object_id FROM ... order by object_id;
|
||||
// for all object_id SELECT locale, localized_value FROM ... WHERE object_id = :object_id
|
||||
// build json
|
||||
// INSERT INTO ... WHERE object_id = :object_id
|
||||
// Drop tables
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -40,15 +40,13 @@ import java.util.Objects;
|
|||
import static org.libreccm.categorization.CategorizationConstants.CAT_XML_NS;
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedAttributeNode;
|
||||
import javax.persistence.NamedEntityGraph;
|
||||
|
|
@ -77,59 +75,48 @@ import javax.persistence.Table;
|
|||
@NamedQueries({
|
||||
@NamedQuery(
|
||||
name = "Category.topLevelCategories",
|
||||
query = "SELECT c FROM Category c WHERE c.parentCategory IS NULL")
|
||||
,
|
||||
query = "SELECT c FROM Category c WHERE c.parentCategory IS NULL"),
|
||||
@NamedQuery(
|
||||
name = "Category.findByName",
|
||||
query = "SELECT c FROM Category c WHERE c.name = :name")
|
||||
,
|
||||
query = "SELECT c FROM Category c WHERE c.name = :name"),
|
||||
@NamedQuery(
|
||||
name = "Category.findByUuid",
|
||||
query = "SELECT c FROM Category c WHERE c.uuid = :uuid")
|
||||
,
|
||||
query = "SELECT c FROM Category c WHERE c.uuid = :uuid"),
|
||||
@NamedQuery(
|
||||
name = "Category.findParentCategory",
|
||||
query = "SELECT c.parentCategory FROM Category c WHERE c = :category")
|
||||
,
|
||||
query = "SELECT c.parentCategory FROM Category c WHERE c = :category"),
|
||||
@NamedQuery(
|
||||
name = "Category.countAssignedCategories",
|
||||
query = "SELECT COUNT(c) FROM Categorization c "
|
||||
+ "WHERE c.categorizedObject = :object"
|
||||
)
|
||||
,
|
||||
),
|
||||
@NamedQuery(
|
||||
name = "Category.isCategorized",
|
||||
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
|
||||
+ "FROM Categorization c "
|
||||
+ "WHERE c.categorizedObject = :object")
|
||||
,
|
||||
+ "WHERE c.categorizedObject = :object"),
|
||||
@NamedQuery(
|
||||
name = "Category.countObjects",
|
||||
query = "SELECT COUNT(c) FROM Categorization c "
|
||||
+ "WHERE c.category = :category")
|
||||
,
|
||||
+ "WHERE c.category = :category"),
|
||||
@NamedQuery(
|
||||
name = "Category.hasObjects",
|
||||
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
|
||||
+ "FROM Categorization c "
|
||||
+ "WHERE c.category = :category")
|
||||
,
|
||||
+ "WHERE c.category = :category"),
|
||||
@NamedQuery(
|
||||
name = "Category.countSubCategories",
|
||||
query = "SELECT COUNT(c) FROM Category c "
|
||||
+ "WHERE c.parentCategory =:category")
|
||||
,
|
||||
+ "WHERE c.parentCategory =:category"),
|
||||
@NamedQuery(
|
||||
name = "Category.hasSubCategories",
|
||||
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE false END) "
|
||||
+ "FROM Category c "
|
||||
+ "WHERE c.parentCategory = :category")
|
||||
,
|
||||
+ "WHERE c.parentCategory = :category"),
|
||||
@NamedQuery(
|
||||
name = "Category.findByNameAndParent",
|
||||
query = "SELECT c FROM Category c "
|
||||
+ "WHERE c.name = :name AND c.parentCategory = :parent")
|
||||
,
|
||||
+ "WHERE c.name = :name AND c.parentCategory = :parent"),
|
||||
@NamedQuery(
|
||||
name = "Category.hasSubCategoryWithName",
|
||||
query = "SELECT (CASE WHEN COUNT(c) > 0 THEN true ELSE False END) "
|
||||
|
|
@ -174,28 +161,16 @@ public class Category extends CcmObject implements Serializable, Exportable {
|
|||
/**
|
||||
* The human readable and localisable title of the category.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "CATEGORY_TITLES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OBJECT_ID")}
|
||||
))
|
||||
@Column(name = "TITLE")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
@XmlElement(name = "title", namespace = CAT_XML_NS)
|
||||
private LocalizedString title;
|
||||
|
||||
/**
|
||||
* A localisable description of the category.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "CATEGORY_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OBJECT_ID")}
|
||||
))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
@XmlElement(name = "description", namespace = CAT_XML_NS)
|
||||
private LocalizedString description;
|
||||
|
||||
|
|
@ -469,14 +444,14 @@ public class Category extends CcmObject implements Serializable, Exportable {
|
|||
public String toString(final String data) {
|
||||
return super.toString(String.format(", uniqueId = %s, "
|
||||
+ "name = \"%s\", "
|
||||
// + "title = %s, "
|
||||
// + "title = %s, "
|
||||
+ "enabled = %b, "
|
||||
+ "visible = %b, "
|
||||
+ "abstractCategory = %s, "
|
||||
+ "categoryOrder = %d%s",
|
||||
uniqueId,
|
||||
name,
|
||||
// Objects.toString(title),
|
||||
// Objects.toString(title),
|
||||
enabled,
|
||||
visible,
|
||||
abstractCategory,
|
||||
|
|
|
|||
|
|
@ -142,9 +142,10 @@ public class CategoryTreeModelLite implements TreeModel {
|
|||
return category.getName();
|
||||
} else {
|
||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||
final CategoryTreeModelLiteController controller = cdiUtil
|
||||
.findBean(CategoryTreeModelLiteController.class);
|
||||
return controller.getTitle(category);
|
||||
final GlobalizationHelper globalizationHelper = cdiUtil
|
||||
.findBean(GlobalizationHelper.class);
|
||||
return globalizationHelper
|
||||
.getValueFromLocalizedString(category.getTitle());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import java.io.Serializable;
|
|||
import static org.libreccm.categorization.CategorizationConstants.CAT_XML_NS;
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -48,12 +49,9 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedAttributeNode;
|
||||
import javax.persistence.NamedEntityGraph;
|
||||
|
|
@ -160,26 +158,16 @@ public class Domain extends CcmObject implements Serializable, Exportable {
|
|||
* A human readable title for the {@code Domain}. The title can be
|
||||
* localised.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "DOMAIN_TITLES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OBJECT_ID")}))
|
||||
@Column(name = "TITLE")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
@XmlElement(name = "title", namespace = CAT_XML_NS)
|
||||
private LocalizedString title;
|
||||
|
||||
/**
|
||||
* A description of the domain. The description can be localised.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "DOMAIN_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OBJECT_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
@XmlElement(name = "description", namespace = CAT_XML_NS)
|
||||
private LocalizedString description;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,13 +23,10 @@ import org.libreccm.l10n.LocalizedString;
|
|||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
|
||||
/**
|
||||
* A setting which stores a {@link LocalizedString} . This can be used for
|
||||
|
|
@ -44,13 +41,8 @@ public class LocalizedStringSetting
|
|||
|
||||
private static final long serialVersionUID = 667750736151545279L;
|
||||
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "SETTINGS_L10N_STR_VALUES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "ENTRY_ID")}))
|
||||
@Column(name = "SETTING_VALUE_LOCALIZED_STRING")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString value;
|
||||
|
||||
public LocalizedStringSetting() {
|
||||
|
|
|
|||
|
|
@ -18,11 +18,6 @@
|
|||
*/
|
||||
package org.libreccm.core;
|
||||
|
||||
import org.hibernate.validator.constraints.Email;
|
||||
import org.hibernate.validator.constraints.NotBlank;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
|
|
@ -32,38 +27,39 @@ import java.util.Objects;
|
|||
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonObject;
|
||||
import javax.json.JsonObjectBuilder;
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* An embeddable entity for storing email addresses.
|
||||
*
|
||||
* In contrast to its predecessor {@code com.arsdigita.kernel.EmailAddress}
|
||||
* this class does not provide verification methods. Verification is done using
|
||||
* the <em>Bean Validiation API</em> (Hibernate Validator is used as
|
||||
* implementation).
|
||||
*
|
||||
* Because this class is an embeddable JPA entity it can be used in other
|
||||
* entities to store eMail addresses.
|
||||
*
|
||||
* In contrast to its predecessor {@code com.arsdigita.kernel.EmailAddress} this
|
||||
* class does not provide verification methods. Verification is done using the
|
||||
* <em>Bean Validiation API</em> (Hibernate Validator is used as
|
||||
* implementation).
|
||||
*
|
||||
* This class is inteded to maps a JSONB column using the
|
||||
* {@link EmailAddressType}, or if a list of email addresses should be stored,
|
||||
* the {@link EmailAddressListType}.
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@Embeddable
|
||||
@Deprecated
|
||||
@XmlRootElement(name = "email-address", namespace = CORE_XML_NS)
|
||||
public class EmailAddress implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4076089589412432766L;
|
||||
|
||||
@Column(name = "EMAIL_ADDRESS", length = 512, nullable = false)
|
||||
@XmlElement(name = "address", namespace = CORE_XML_NS, required = true)
|
||||
@NotBlank
|
||||
@Email
|
||||
private String address;
|
||||
|
||||
@Column(name = "BOUNCING")
|
||||
@XmlElement(name = "bouncing", namespace = CORE_XML_NS)
|
||||
private boolean bouncing;
|
||||
|
||||
@Column(name = "VERIFIED")
|
||||
@XmlElement(name = "verified", namespace = CORE_XML_NS)
|
||||
private boolean verified;
|
||||
|
||||
|
|
@ -112,7 +108,7 @@ public class EmailAddress implements Serializable {
|
|||
if (!other.canEqual(this)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (!Objects.equals(address, other.getAddress())) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -121,11 +117,19 @@ public class EmailAddress implements Serializable {
|
|||
}
|
||||
return verified == other.isVerified();
|
||||
}
|
||||
|
||||
|
||||
public boolean canEqual(final Object obj) {
|
||||
return obj instanceof EmailAddress;
|
||||
}
|
||||
|
||||
public static EmailAddress fromJson(final JsonObject jsonObject) {
|
||||
final EmailAddress address = new EmailAddress();
|
||||
address.setAddress(jsonObject.getString("address"));
|
||||
address.setBouncing(jsonObject.getBoolean("bouncing"));
|
||||
address.setVerified(jsonObject.getBoolean("verified"));
|
||||
return address;
|
||||
}
|
||||
|
||||
public JsonObjectBuilder buildJson() {
|
||||
return Json
|
||||
.createObjectBuilder()
|
||||
|
|
@ -133,7 +137,11 @@ public class EmailAddress implements Serializable {
|
|||
.add("bouncing", bouncing)
|
||||
.add("verified", verified);
|
||||
}
|
||||
|
||||
|
||||
public JsonObject toJson() {
|
||||
return buildJson().build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%s{ "
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.core;
|
||||
|
||||
import org.libreccm.hibernate.AbstractCcmJsonUserType;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonArrayBuilder;
|
||||
import javax.json.JsonReader;
|
||||
import javax.json.JsonValue;
|
||||
import javax.json.JsonWriter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class EmailAddressListType extends AbstractCcmJsonUserType {
|
||||
|
||||
@Override
|
||||
protected Object nullSafeGet(final JsonReader jsonReader) {
|
||||
return jsonReader
|
||||
.readArray()
|
||||
.stream()
|
||||
.map(JsonValue::asJsonObject)
|
||||
.map(EmailAddress::fromJson)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void nullSafeSet(
|
||||
final Object value, final JsonWriter jsonWriter
|
||||
) {
|
||||
@SuppressWarnings("unchecked")
|
||||
final List<EmailAddress> addresses = (List<EmailAddress>) value;
|
||||
final JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
|
||||
addresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.forEach(jsonArrayBuilder::add);
|
||||
jsonWriter.writeArray(jsonArrayBuilder.build());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.core;
|
||||
|
||||
import org.libreccm.hibernate.AbstractCcmJsonUserType;
|
||||
|
||||
import javax.json.JsonReader;
|
||||
import javax.json.JsonWriter;
|
||||
|
||||
/**
|
||||
* Hibernate User type mapping instances of {@link EmailAddress} to a JSON.
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class EmailAddressType extends AbstractCcmJsonUserType {
|
||||
|
||||
@Override
|
||||
protected Object nullSafeGet(final JsonReader jsonReader) {
|
||||
return EmailAddress.fromJson(jsonReader.readObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void nullSafeSet(
|
||||
final Object value, final JsonWriter jsonWriter
|
||||
) {
|
||||
jsonWriter.writeObject(((EmailAddress) value).toJson());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -29,6 +29,7 @@ import java.io.Serializable;
|
|||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -37,13 +38,9 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
|
|
@ -82,25 +79,15 @@ public class Resource extends CcmObject implements Serializable, Exportable {
|
|||
/**
|
||||
* A localisable title for the {@code Resource}.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "RESOURCE_TITLES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OBJECT_ID")}))
|
||||
@Column(name = "TITLE")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString title;
|
||||
|
||||
/**
|
||||
* A localisable description for the {@code Resource}.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "RESOURCE_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OBJECT_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
@ManyToOne
|
||||
|
|
|
|||
|
|
@ -27,17 +27,14 @@ import java.util.Objects;
|
|||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
import javax.persistence.Table;
|
||||
|
|
@ -87,13 +84,8 @@ public class ResourceType implements Serializable, Exportable {
|
|||
@Column(name = "TITLE", length = 254, nullable = false)
|
||||
private String title;
|
||||
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "RESOURCE_TYPE_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "RESOURCE_TYPE_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
@Column(name = "WORKSPACE_APP")
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ package org.libreccm.formbuilder;
|
|||
import org.libreccm.core.CcmObject;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
@ -29,6 +28,14 @@ import java.util.Objects;
|
|||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
|
|
@ -46,13 +53,8 @@ public class Component extends CcmObject implements Serializable {
|
|||
@Column(name = "ADMIN_NAME")
|
||||
private String adminName;
|
||||
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "FORMBUILDER_COMPONENT_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "COMPONENT_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
@Column(name = "ATTRIBUTE_STRING")
|
||||
|
|
|
|||
|
|
@ -20,12 +20,17 @@ package org.libreccm.formbuilder;
|
|||
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
|
|
@ -39,12 +44,14 @@ public class Option extends Component implements Serializable {
|
|||
@Column(name = "PARAMETER_VALUE")
|
||||
private String parameterValue;
|
||||
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "FORMBUILDER_OPTION_LABELS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "OPTION_ID")}))
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(name = "FORMBUILDER_OPTION_LABELS",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "OPTION_ID")}))
|
||||
@Column(name = "LABEL")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString label;
|
||||
|
||||
public String getParameterValue() {
|
||||
|
|
|
|||
|
|
@ -21,12 +21,20 @@ package org.libreccm.formbuilder;
|
|||
import org.libreccm.core.CcmObject;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
|
|
@ -40,22 +48,26 @@ public class PersistentDataQuery extends CcmObject implements Serializable {
|
|||
@Column(name = "QUERY_ID")
|
||||
private String queryId;
|
||||
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "FORMBUILDER_DATA_QUERY_NAMES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "DATA_QUERY_ID")}))
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "FORMBUILDER_DATA_QUERY_NAMES",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "DATA_QUERY_ID")}))
|
||||
@Column(name = "QUERY_NAME")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString name;
|
||||
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "DATA_QUERY_ID")}))
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "FORMBUILDER_DATA_QUERY_DESCRIPTIONS",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "DATA_QUERY_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
public PersistentDataQuery() {
|
||||
|
|
|
|||
|
|
@ -26,11 +26,10 @@ import java.util.Objects;
|
|||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
|
|
@ -44,23 +43,26 @@ public class ProcessListener extends CcmObject implements Serializable {
|
|||
|
||||
private static final long serialVersionUID = -3029184333026605708L;
|
||||
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "FORMBUILDER_PROCESS_LISTENER_NAMES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PROCESS_LISTENER_ID")}))
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "FORMBUILDER_PROCESS_LISTENER_NAMES",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "PROCESS_LISTENER_ID")}))
|
||||
@Column(name = "LISTENER_NAME")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString name;
|
||||
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(
|
||||
name = "FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PROCESS_LISTENER_ID")}))
|
||||
|
||||
// @AssociationOverride(
|
||||
// name = "values",
|
||||
// joinTable = @JoinTable(
|
||||
// name = "FORMBUILDER_PROCESS_LISTENER_DESCRIPTIONS",
|
||||
// schema = DB_SCHEMA,
|
||||
// joinColumns = {
|
||||
// @JoinColumn(name = "PROCESS_LISTENER_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
@Column(name = "LISTENER_CLASS")
|
||||
|
|
@ -77,7 +79,7 @@ public class ProcessListener extends CcmObject implements Serializable {
|
|||
name = new LocalizedString();
|
||||
description = new LocalizedString();
|
||||
}
|
||||
|
||||
|
||||
public LocalizedString getName() {
|
||||
return name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,163 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.hibernate;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
||||
import org.hibernate.usertype.UserType;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Types;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonReader;
|
||||
import javax.json.JsonWriter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public abstract class AbstractCcmJsonUserType implements UserType {
|
||||
|
||||
@Override
|
||||
public int[] sqlTypes() {
|
||||
return new int[]{Types.JAVA_OBJECT};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<LocalizedString> returnedClass() {
|
||||
return LocalizedString.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj1, final Object obj2)
|
||||
throws HibernateException {
|
||||
return Objects.equals(obj1, obj2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode(final Object obj) throws HibernateException {
|
||||
return Objects.hashCode(obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object nullSafeGet(
|
||||
final ResultSet resultSet,
|
||||
final String[] names,
|
||||
final SharedSessionContractImplementor session,
|
||||
final Object owner
|
||||
) throws HibernateException, SQLException {
|
||||
final String cellContent = resultSet.getString(names[0]);
|
||||
if (cellContent == null) {
|
||||
return null;
|
||||
} else {
|
||||
try (StringReader strReader = new StringReader(cellContent);
|
||||
JsonReader jsonReader = Json.createReader(strReader)) {
|
||||
return nullSafeGet(jsonReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract Object nullSafeGet(final JsonReader jsonReader);
|
||||
|
||||
@Override
|
||||
public void nullSafeSet(
|
||||
final PreparedStatement statement,
|
||||
final Object value,
|
||||
final int index,
|
||||
final SharedSessionContractImplementor session
|
||||
) throws HibernateException, SQLException {
|
||||
if (value == null) {
|
||||
statement.setObject(index, null, Types.OTHER);
|
||||
} else {
|
||||
try (StringWriter strWriter = new StringWriter();
|
||||
JsonWriter jsonWriter = Json.createWriter(strWriter)) {
|
||||
nullSafeSet(value, jsonWriter);
|
||||
statement.setObject(index, strWriter.toString(), Types.OTHER);
|
||||
}catch (IOException ex) {
|
||||
throw new HibernateException(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void nullSafeSet(
|
||||
final Object value, final JsonWriter jsonWriter
|
||||
);
|
||||
|
||||
@Override
|
||||
public Object deepCopy(final Object value) throws HibernateException {
|
||||
final byte[] serialized;
|
||||
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
|
||||
oos.writeObject(value);
|
||||
oos.flush();
|
||||
serialized = bos.toByteArray();
|
||||
} catch (IOException ex) {
|
||||
throw new HibernateException(ex);
|
||||
}
|
||||
|
||||
final Object obj;
|
||||
try (ByteArrayInputStream bais = new ByteArrayInputStream(serialized);
|
||||
ObjectInputStream ois = new ObjectInputStream(bais)) {
|
||||
obj = ois.readObject();
|
||||
} catch (IOException | ClassNotFoundException ex) {
|
||||
throw new HibernateException(ex);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMutable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Serializable disassemble(final Object value)
|
||||
throws HibernateException {
|
||||
return (Serializable) deepCopy(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object assemble(final Serializable cached, final Object owner) throws
|
||||
HibernateException {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object replace(
|
||||
final Object original,
|
||||
final Object target,
|
||||
final Object owner
|
||||
) throws HibernateException {
|
||||
return deepCopy(original);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.hibernate.dialects;
|
||||
|
||||
import org.hibernate.dialect.H2Dialect;
|
||||
|
||||
import java.sql.Types;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class LibreCcmH2Dialect extends H2Dialect {
|
||||
|
||||
public LibreCcmH2Dialect() {
|
||||
super();
|
||||
super.registerColumnType(Types.JAVA_OBJECT, "json");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.hibernate.dialects;
|
||||
|
||||
import org.hibernate.dialect.PostgreSQL9Dialect;
|
||||
|
||||
import java.sql.Types;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class LibreCcmPgSql9Dialect extends PostgreSQL9Dialect {
|
||||
|
||||
public LibreCcmPgSql9Dialect() {
|
||||
super();
|
||||
super.registerColumnType(Types.JAVA_OBJECT, "jsonb");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -19,22 +19,14 @@
|
|||
package org.libreccm.l10n;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.hibernate.search.annotations.Field;
|
||||
import org.libreccm.l10n.jaxb.LocalizedStringValuesAdapter;
|
||||
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.ElementCollection;
|
||||
import javax.persistence.Embeddable;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.Lob;
|
||||
import javax.persistence.MapKeyColumn;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -45,31 +37,38 @@ import java.util.Set;
|
|||
|
||||
import static org.libreccm.l10n.L10NConstants.L10N_XML_NS;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonObject;
|
||||
import javax.json.JsonObjectBuilder;
|
||||
import javax.persistence.Column;
|
||||
|
||||
/**
|
||||
* A helper class for localisable string properties. This class is declared as
|
||||
* embeddable, so that it can be used in every other entity. The localised
|
||||
* A helper class for localisable string properties. For using this class a
|
||||
* Hibernate User type is provided ({@link LocalizedStringType} which maps
|
||||
* instances of this class to a JSONB column in the database. The localised
|
||||
* values are stored in a {@link Map}. This class is <em>not</em> designed to be
|
||||
* overwritten. But because it is an entity class we can't make the class final.
|
||||
*
|
||||
* To use this class you must annoate this property with the {@link Type}
|
||||
* annotation provided by hibernate. The {@link Column} annotation can used
|
||||
* a usual to set the name of the database column. Example
|
||||
*
|
||||
* <pre>
|
||||
* @Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
* </pre>
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@Embeddable
|
||||
@XmlRootElement(name = "localized-string", namespace = L10N_XML_NS)
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class LocalizedString implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7378282657084330425L;
|
||||
|
||||
/**
|
||||
* The localised values of the string.
|
||||
*/
|
||||
@ElementCollection(fetch = FetchType.LAZY)
|
||||
@MapKeyColumn(name = "LOCALE")
|
||||
@Column(name = "LOCALIZED_VALUE")
|
||||
@Basic
|
||||
@Lob
|
||||
@Type(type = "org.hibernate.type.TextType")
|
||||
@Field
|
||||
@XmlElement(name = "values", namespace = L10N_XML_NS)
|
||||
@XmlJavaTypeAdapter(LocalizedStringValuesAdapter.class)
|
||||
private Map<Locale, String> values;
|
||||
|
|
@ -202,6 +201,41 @@ public class LocalizedString implements Serializable {
|
|||
return obj instanceof LocalizedString;
|
||||
}
|
||||
|
||||
public static LocalizedString fromJson(final JsonObject jsonObject) {
|
||||
final LocalizedString localizedString = new LocalizedString();
|
||||
|
||||
jsonObject
|
||||
.entrySet()
|
||||
.stream()
|
||||
.forEach(
|
||||
entry -> localizedString.addValue(
|
||||
new Locale(entry.getKey()),
|
||||
jsonObject.getString(entry.getKey())
|
||||
)
|
||||
);
|
||||
|
||||
return localizedString;
|
||||
}
|
||||
|
||||
public JsonObjectBuilder buildJson() {
|
||||
final JsonObjectBuilder builder = Json.createObjectBuilder();
|
||||
|
||||
values
|
||||
.entrySet()
|
||||
.stream()
|
||||
.forEach(
|
||||
entry -> builder.add(
|
||||
entry.getKey().toString(), entry.getValue()
|
||||
)
|
||||
);
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public JsonObject toJson() {
|
||||
return buildJson().build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (C) 2020 LibreCCM Foundation.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.libreccm.l10n;
|
||||
|
||||
import org.libreccm.hibernate.AbstractCcmJsonUserType;
|
||||
|
||||
import javax.json.JsonReader;
|
||||
import javax.json.JsonWriter;
|
||||
|
||||
/**
|
||||
* Hibernate User type mapping instances of {@link LocalizedString} to a JSON.
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class LocalizedStringType extends AbstractCcmJsonUserType {
|
||||
|
||||
@Override
|
||||
protected Object nullSafeGet(final JsonReader jsonReader) {
|
||||
return LocalizedString.fromJson(jsonReader.readObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void nullSafeSet(
|
||||
final Object value, final JsonWriter jsonWriter
|
||||
) {
|
||||
jsonWriter.writeObject(((LocalizedString) value).toJson());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
package org.libreccm.pagemodel;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.core.CoreConstants;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
import org.libreccm.web.CcmApplication;
|
||||
|
|
@ -33,9 +34,7 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
|
|
@ -45,7 +44,6 @@ import javax.persistence.Id;
|
|||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
|
|
@ -225,27 +223,15 @@ public class PageModel implements Serializable {
|
|||
* The localised title of this {@code PageModel} (shown in the
|
||||
* administration UI),
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "PAGE_MODEL_TITLES",
|
||||
schema = CoreConstants.DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PAGE_MODEL_ID")
|
||||
}))
|
||||
@Column(name = "TITLE")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString title;
|
||||
|
||||
/**
|
||||
* A description of this {@code PageModel} describing its purpose.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "PAGE_MODEL_DESCRIPTIONS",
|
||||
schema = CoreConstants.DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "PAGE_MODEL_ID")
|
||||
}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ public class ChallengeManager {
|
|||
submittedToken,
|
||||
OneTimeAuthTokenPurpose.EMAIL_VERIFICATION)) {
|
||||
|
||||
user.getPrimaryEmailAddress().setVerified(true);
|
||||
user.setPrimaryEmailAddressVerified(true);
|
||||
userRepository.save(user);
|
||||
|
||||
} else {
|
||||
|
|
@ -344,7 +344,7 @@ public class ChallengeManager {
|
|||
.getURL());
|
||||
|
||||
final ParameterMap params = new ParameterMap();
|
||||
params.setParameter("email", user.getPrimaryEmailAddress().getAddress());
|
||||
params.setParameter("email", user.getPrimaryEmailAddress());
|
||||
params.setParameter("token", token.getToken());
|
||||
values.put("full_link",
|
||||
URL.there(request,
|
||||
|
|
@ -505,7 +505,7 @@ public class ChallengeManager {
|
|||
final KernelConfig kernelConfig = configurationManager
|
||||
.findConfiguration(KernelConfig.class);
|
||||
|
||||
final Mail mail = new Mail(user.getPrimaryEmailAddress().getAddress(),
|
||||
final Mail mail = new Mail(user.getPrimaryEmailAddress(),
|
||||
kernelConfig.getSystemEmailAddress(),
|
||||
subject);
|
||||
mail.setBody(text);
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import org.libreccm.workflow.TaskAssignment;
|
|||
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
@ -39,16 +40,12 @@ import java.util.List;
|
|||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.NamedAttributeNode;
|
||||
import javax.persistence.NamedEntityGraph;
|
||||
import javax.persistence.NamedEntityGraphs;
|
||||
|
|
@ -182,16 +179,10 @@ public class Role implements Serializable, Exportable {
|
|||
/**
|
||||
* An optional description for a role.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "ROLE_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "ROLE_ID")
|
||||
}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
@XmlElement(name = "description", namespace = CORE_XML_NS)
|
||||
private LocalizedString description = new LocalizedString();
|
||||
private LocalizedString description;
|
||||
|
||||
/**
|
||||
* All memberships of the roles.
|
||||
|
|
@ -200,7 +191,7 @@ public class Role implements Serializable, Exportable {
|
|||
@XmlElementWrapper(name = "role-memberships", namespace = CORE_XML_NS)
|
||||
@XmlElement(name = "role-membership", namespace = CORE_XML_NS)
|
||||
@JsonIgnore
|
||||
private Set<RoleMembership> memberships = new HashSet<>();
|
||||
private Set<RoleMembership> memberships;
|
||||
|
||||
/**
|
||||
* Permissions granted to the role.
|
||||
|
|
@ -210,14 +201,18 @@ public class Role implements Serializable, Exportable {
|
|||
@XmlElementWrapper(name = "permissions", namespace = CORE_XML_NS)
|
||||
@XmlElement(name = "permission", namespace = CORE_XML_NS)
|
||||
@JsonIgnore
|
||||
private List<Permission> permissions = new ArrayList<>();
|
||||
private List<Permission> permissions;
|
||||
|
||||
@OneToMany(mappedBy = "role", fetch = FetchType.LAZY)
|
||||
@JsonIgnore
|
||||
private List<TaskAssignment> assignedTasks = new ArrayList<>();
|
||||
private List<TaskAssignment> assignedTasks;
|
||||
|
||||
public Role() {
|
||||
super();
|
||||
description = new LocalizedString();
|
||||
memberships = new HashSet<>();
|
||||
permissions = new ArrayList<>();
|
||||
assignedTasks = new ArrayList<>();
|
||||
}
|
||||
|
||||
public long getRoleId() {
|
||||
|
|
@ -254,7 +249,7 @@ public class Role implements Serializable, Exportable {
|
|||
}
|
||||
|
||||
protected void setMemberships(final Set<RoleMembership> memberships) {
|
||||
this.memberships = memberships;
|
||||
this.memberships = new HashSet<>(memberships);
|
||||
}
|
||||
|
||||
protected void addMembership(final RoleMembership membership) {
|
||||
|
|
@ -274,7 +269,7 @@ public class Role implements Serializable, Exportable {
|
|||
}
|
||||
|
||||
protected void setPermissions(final List<Permission> permissions) {
|
||||
this.permissions = permissions;
|
||||
this.permissions = new ArrayList<>(permissions);
|
||||
}
|
||||
|
||||
protected void addPermission(final Permission permission) {
|
||||
|
|
@ -294,7 +289,7 @@ public class Role implements Serializable, Exportable {
|
|||
}
|
||||
|
||||
protected void setAssignedTasks(final List<TaskAssignment> assignedTasks) {
|
||||
this.assignedTasks = assignedTasks;
|
||||
this.assignedTasks = new ArrayList<>(assignedTasks);
|
||||
}
|
||||
|
||||
public void addAssignedTask(final TaskAssignment taskAssignment) {
|
||||
|
|
@ -306,7 +301,7 @@ public class Role implements Serializable, Exportable {
|
|||
}
|
||||
|
||||
public LocalizedString getDescription() {
|
||||
return this.description;
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(final LocalizedString description) {
|
||||
|
|
|
|||
|
|
@ -85,9 +85,9 @@ public class SystemUsersSetup {
|
|||
admin.setName(adminName);
|
||||
admin.setFamilyName(adminFamilyName);
|
||||
admin.setGivenName(adminGivenName);
|
||||
final EmailAddress adminEmail = new EmailAddress();
|
||||
adminEmail.setAddress(adminEmailAddress);
|
||||
admin.setPrimaryEmailAddress(adminEmail);
|
||||
admin.setPrimaryEmailAddress(adminEmailAddress);
|
||||
admin.setPrimaryEmailAddressBouncing(false);
|
||||
admin.setPrimaryEmailAddressVerified(true);
|
||||
admin.setPassword(adminPassword);
|
||||
|
||||
final Role adminRole = new Role();
|
||||
|
|
@ -119,9 +119,9 @@ public class SystemUsersSetup {
|
|||
user.setName("public-user");
|
||||
user.setFamilyName("LibreCCM");
|
||||
user.setGivenName("Public User");
|
||||
final EmailAddress email = new EmailAddress();
|
||||
email.setAddress("public-user@localhost");
|
||||
user.setPrimaryEmailAddress(email);
|
||||
user.setPrimaryEmailAddress("public-user@localhost");
|
||||
user.setPrimaryEmailAddressBouncing(false);
|
||||
user.setPrimaryEmailAddressVerified(true);
|
||||
|
||||
entityManager.persist(user);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import java.io.Serializable;
|
|||
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.core.api.JsonArrayCollector;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
|
|
@ -43,22 +44,23 @@ import java.util.Set;
|
|||
import javax.json.Json;
|
||||
import javax.json.JsonArrayBuilder;
|
||||
import javax.json.JsonObjectBuilder;
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.CollectionTable;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.ElementCollection;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.ColumnResult;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EntityResult;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.FieldResult;
|
||||
import javax.persistence.NamedAttributeNode;
|
||||
import javax.persistence.NamedEntityGraph;
|
||||
import javax.persistence.NamedEntityGraphs;
|
||||
import javax.persistence.NamedNativeQueries;
|
||||
import javax.persistence.NamedNativeQuery;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
import javax.persistence.NamedSubgraph;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.SqlResultSetMapping;
|
||||
import javax.persistence.SqlResultSetMappings;
|
||||
import javax.persistence.Table;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
|
@ -76,43 +78,45 @@ import javax.xml.bind.annotation.XmlTransient;
|
|||
@Entity
|
||||
@Table(name = "USERS", schema = DB_SCHEMA)
|
||||
@NamedQueries({
|
||||
@NamedQuery(name = "User.findByUuid",
|
||||
query = "SELECT u FROM User u WHERE u.uuid = :uuid"),
|
||||
@NamedQuery(name = "User.findByName",
|
||||
query = "SELECT u FROM User u WHERE u.name = :name "
|
||||
+ "ORDER BY u.name, "
|
||||
+ " u.familyName, "
|
||||
+ " u.givenName, "
|
||||
+ " u.primaryEmailAddress.address"),
|
||||
@NamedQuery(
|
||||
name = "User.findByUuid",
|
||||
query = "SELECT u FROM User u WHERE u.uuid = :uuid"
|
||||
),
|
||||
@NamedQuery(
|
||||
name = "User.findByName",
|
||||
query = "SELECT u FROM User u WHERE u.name = :name "
|
||||
+ "ORDER BY u.name, "
|
||||
+ " u.familyName, "
|
||||
+ " u.givenName"
|
||||
),
|
||||
@NamedQuery(name = "User.countByName",
|
||||
query = "SELECT COUNT(u) FROM User u WHERE u.name = :name"),
|
||||
@NamedQuery(name = "User.findByEmailAddress",
|
||||
query = "SELECT u FROM User u WHERE "
|
||||
+ "u.primaryEmailAddress.address = :emailAddress "
|
||||
+ "u.primaryEmailAddress = :emailAddress "
|
||||
+ "ORDER BY u.name, "
|
||||
+ " u.familyName, "
|
||||
+ " u.givenName, "
|
||||
+ " u.primaryEmailAddress.address"),
|
||||
+ " u.primaryEmailAddress"),
|
||||
@NamedQuery(name = "User.countByPrimaryEmailAddress",
|
||||
query = "SELECT COUNT(u) FROM User u "
|
||||
+ "WHERE u.primaryEmailAddress.address = :emailAddress"),
|
||||
+ "WHERE u.primaryEmailAddress = :emailAddress"),
|
||||
@NamedQuery(
|
||||
name = "User.filterByNameAndEmail",
|
||||
query = "SELECT u FROM User u WHERE "
|
||||
+ "LOWER(u.name) LIKE CONCAT(LOWER(:term), '%') "
|
||||
+ "OR LOWER(u.givenName) LIKE CONCAT(LOWER(:term), '%') "
|
||||
+ "OR LOWER(u.familyName) LIKE CONCAT(LOWER(:term), '%') "
|
||||
+ "OR LOWER(u.primaryEmailAddress.address) LIKE CONCAT('%', LOWER(:term), '%') "
|
||||
+ "ORDER BY u.name,"
|
||||
+ "OR LOWER(u.familyName) LIKE CONCAT(LOWER(:term), '%')"
|
||||
+ "ORDER BY u.name,"
|
||||
+ "u.familyName, "
|
||||
+ "u.givenName, "
|
||||
+ "u.primaryEmailAddress.address"),
|
||||
+ "u.givenName"
|
||||
),
|
||||
@NamedQuery(
|
||||
name = "User.findAllOrderedByUsername",
|
||||
query = "SELECT u FROM User u ORDER BY u.name, "
|
||||
+ " u.familyName, "
|
||||
+ " u.givenName, "
|
||||
+ " u.primaryEmailAddress.address"),
|
||||
+ " u.primaryEmailAddress"),
|
||||
@NamedQuery(name = "User.findByGroup",
|
||||
query = "SELECT u FROM User u "
|
||||
+ "JOIN u.groupMemberships m "
|
||||
|
|
@ -170,26 +174,23 @@ public class User extends Party implements Serializable, Exportable {
|
|||
/**
|
||||
* The primary email address of the user.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "USER_PRIMARY_EMAIL_ADDRESSES",
|
||||
joinTable = @JoinTable(name = "USER_PRIMARY_EMAIL_ADDRESSES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "USER_ID")
|
||||
}))
|
||||
@Column(name = "PRIMARY_EMAIL_ADDRESS")
|
||||
@NotNull
|
||||
@XmlElement(name = "primary-email-address", namespace = CORE_XML_NS)
|
||||
private EmailAddress primaryEmailAddress;
|
||||
private String primaryEmailAddress;
|
||||
|
||||
@Column(name = "PRIMARY_EMAIL_ADDRESS_BOUNCING")
|
||||
private boolean primaryEmailAddressBouncing;
|
||||
|
||||
@Column(name = "PRIMARY_EMAIL_ADDRESS_VERIFIED")
|
||||
private boolean primaryEmailAddressVerified;
|
||||
|
||||
/**
|
||||
* Additional email addresses of the user.
|
||||
*/
|
||||
@ElementCollection(fetch = FetchType.EAGER)
|
||||
@CollectionTable(name = "USER_EMAIL_ADDRESSES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "USER_ID")})
|
||||
@Column(name = "EMAIL_ADDRESSES")
|
||||
@Type(type = "org.libreccm.core.EmailAddressListType")
|
||||
@Deprecated
|
||||
@XmlElementWrapper(name = "email-addresses", namespace = CORE_XML_NS)
|
||||
@XmlElement(name = "email-address", namespace = CORE_XML_NS)
|
||||
private List<EmailAddress> emailAddresses;
|
||||
|
|
@ -250,14 +251,31 @@ public class User extends Party implements Serializable, Exportable {
|
|||
this.familyName = familyName;
|
||||
}
|
||||
|
||||
public EmailAddress getPrimaryEmailAddress() {
|
||||
public String getPrimaryEmailAddress() {
|
||||
return primaryEmailAddress;
|
||||
}
|
||||
|
||||
public void setPrimaryEmailAddress(final EmailAddress primaryEmailAddress) {
|
||||
public void setPrimaryEmailAddress(final String primaryEmailAddress) {
|
||||
this.primaryEmailAddress = primaryEmailAddress;
|
||||
}
|
||||
|
||||
public boolean isPrimaryEmailAddressBouncing() {
|
||||
return primaryEmailAddressBouncing;
|
||||
}
|
||||
|
||||
public void setPrimaryEmailAddressBouncing(final boolean bouncing) {
|
||||
primaryEmailAddressBouncing = bouncing;
|
||||
}
|
||||
|
||||
public boolean isPrimaryEmailAddressVerified() {
|
||||
return primaryEmailAddressVerified;
|
||||
}
|
||||
|
||||
public void setPrimaryEmailAddressVerified(final boolean verified) {
|
||||
primaryEmailAddressVerified = verified;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public List<EmailAddress> getEmailAddresses() {
|
||||
if (emailAddresses == null) {
|
||||
return null;
|
||||
|
|
@ -266,6 +284,7 @@ public class User extends Party implements Serializable, Exportable {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void setEmailAddresses(final List<EmailAddress> emailAddresses) {
|
||||
this.emailAddresses = new ArrayList<>(emailAddresses);
|
||||
}
|
||||
|
|
@ -363,36 +382,39 @@ public class User extends Party implements Serializable, Exportable {
|
|||
|
||||
@Override
|
||||
public JsonObjectBuilder buildJson() {
|
||||
final JsonArrayBuilder emailAddressesArrayBuilder = Json.createArrayBuilder();
|
||||
|
||||
final JsonArrayBuilder emailAddressesArrayBuilder = Json
|
||||
.createArrayBuilder();
|
||||
|
||||
emailAddresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.forEach(emailAddressesArrayBuilder::add);
|
||||
|
||||
|
||||
return super
|
||||
.buildJson()
|
||||
.add("givenName", givenName)
|
||||
.add("familyName", familyName)
|
||||
.add("primaryEmailAddress", primaryEmailAddress.buildJson())
|
||||
.add(
|
||||
"emailAddresses",
|
||||
emailAddresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
)
|
||||
.add("banned", banned)
|
||||
.add("passwordResetRequired", passwordResetRequired)
|
||||
.add(
|
||||
"groupMemberships",
|
||||
groupMemberships
|
||||
.stream()
|
||||
.map(GroupMembership::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
);
|
||||
.add("primaryEmailAddress", primaryEmailAddress)
|
||||
.add("primaryEmailAddressBouncing", primaryEmailAddressBouncing)
|
||||
.add("primaryEmailAddressVerified", primaryEmailAddressVerified)
|
||||
.add(
|
||||
"emailAddresses",
|
||||
emailAddresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
)
|
||||
.add("banned", banned)
|
||||
.add("passwordResetRequired", passwordResetRequired)
|
||||
.add(
|
||||
"groupMemberships",
|
||||
groupMemberships
|
||||
.stream()
|
||||
.map(GroupMembership::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -94,10 +94,9 @@ public class UserManager implements Serializable {
|
|||
user.setGivenName(givenName);
|
||||
user.setFamilyName(familyName);
|
||||
user.setName(name);
|
||||
final EmailAddress email = new EmailAddress();
|
||||
email.setAddress(emailAddress);
|
||||
user.setPrimaryEmailAddress(email);
|
||||
email.setVerified(true);
|
||||
user.setPrimaryEmailAddress(emailAddress);
|
||||
user.setPrimaryEmailAddressBouncing(false);
|
||||
user.setPrimaryEmailAddressVerified(true);
|
||||
if (password == null) {
|
||||
user.setPassword(null);
|
||||
} else {
|
||||
|
|
@ -131,7 +130,7 @@ public class UserManager implements Serializable {
|
|||
final KernelConfig kernelConfig = confManager.findConfiguration(
|
||||
KernelConfig.class);
|
||||
if (kernelConfig.emailIsPrimaryIdentifier()) {
|
||||
userIdentifier = user.getPrimaryEmailAddress().getAddress();
|
||||
userIdentifier = user.getPrimaryEmailAddress();
|
||||
} else {
|
||||
userIdentifier = user.getName();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,8 +18,11 @@
|
|||
*/
|
||||
package org.libreccm.security;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.libreccm.core.AbstractEntityRepository;
|
||||
import org.libreccm.core.CoreConstants;
|
||||
import org.libreccm.core.EmailAddressListType;
|
||||
import org.libreccm.core.EmailAddressType;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.persistence.EntityGraph;
|
||||
|
|
@ -30,6 +33,9 @@ import java.util.List;
|
|||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.Query;
|
||||
|
||||
/**
|
||||
* Repository for user objects.
|
||||
*
|
||||
|
|
@ -49,7 +55,7 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
|
|||
public String getIdAttributeName() {
|
||||
return "partyId";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Long getIdOfEntity(final User entity) {
|
||||
return entity.getPartyId();
|
||||
|
|
@ -70,7 +76,7 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
|
|||
|
||||
return getSingleResult(query);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Finds a user by its user name.
|
||||
*
|
||||
|
|
@ -138,11 +144,15 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
|
|||
* is no matching user {@code null} is returned.
|
||||
*/
|
||||
public Optional<User> findByEmailAddress(final String emailAddress) {
|
||||
final TypedQuery<User> query = getEntityManager().createNamedQuery(
|
||||
"User.findByEmailAddress", User.class);
|
||||
query.setParameter("emailAddress", emailAddress);
|
||||
|
||||
return getSingleResult(query);
|
||||
try {
|
||||
return getSingleResult(
|
||||
getEntityManager()
|
||||
.createNamedQuery("User.findByEmailAddress", User.class)
|
||||
.setParameter("emailAddress", emailAddress)
|
||||
);
|
||||
} catch (NoResultException ex) {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public Optional<User> findByEmailAddress(final String emailAddress,
|
||||
|
|
@ -206,12 +216,10 @@ public class UserRepository extends AbstractEntityRepository<Long, User> {
|
|||
|
||||
@Override
|
||||
protected void initNewEntity(final User entity) {
|
||||
|
||||
|
||||
entity.setUuid(UUID.randomUUID().toString());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ import java.util.Objects;
|
|||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import org.hibernate.annotations.Type;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
|
|
@ -49,7 +49,6 @@ import javax.persistence.Id;
|
|||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
|
|
@ -147,25 +146,15 @@ public class Task implements Identifiable, Serializable {
|
|||
/**
|
||||
* A human readable, localisable label for the task.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "WORKFLOW_TASK_LABELS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "TASK_ID")}))
|
||||
@Column(name = "LABEL")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString label;
|
||||
|
||||
/**
|
||||
* A description of the task.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "WORKFLOW_TASK_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "TASK_ID")}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -26,9 +26,7 @@ import org.libreccm.core.CcmObject;
|
|||
import org.libreccm.core.Identifiable;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
|
||||
import javax.persistence.AssociationOverride;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
|
|
@ -39,7 +37,6 @@ import javax.persistence.Id;
|
|||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.NamedQueries;
|
||||
import javax.persistence.NamedQuery;
|
||||
|
|
@ -56,6 +53,7 @@ import java.util.Objects;
|
|||
|
||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.libreccm.imexport.Exportable;
|
||||
|
||||
/**
|
||||
|
|
@ -116,26 +114,15 @@ public class Workflow implements Identifiable, Serializable, Exportable {
|
|||
/**
|
||||
* Human readable name of the workflow.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "WORKFLOW_NAMES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "WORKFLOW_ID")}))
|
||||
@Column(name = "NAME")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString name = new LocalizedString();
|
||||
|
||||
/**
|
||||
* Description of the workflow.
|
||||
*/
|
||||
@Embedded
|
||||
@AssociationOverride(
|
||||
name = "values",
|
||||
joinTable = @JoinTable(name = "WORKFLOW_DESCRIPTIONS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "WORKFLOW_ID")
|
||||
}))
|
||||
@Column(name = "DESCRIPTION")
|
||||
@Type(type = "org.libreccm.l10n.LocalizedStringType")
|
||||
private LocalizedString description = new LocalizedString();
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
ALTER TABLE ccm_core.users ADD COLUMN primary_email_address varchar(255);
|
||||
ALTER TABLE ccm_core.users ADD COLUMN primary_email_address_bouncing boolean;
|
||||
ALTER TABLE ccm_core.users ADD COLUMN primary_email_address_verified boolean;
|
||||
ALTER TABLE ccm_core.users ADD COLUMN email_addresses JSONB;
|
||||
UPDATE ccm_core.users
|
||||
SET primary_email_address = email_address,
|
||||
primary_email_address_bouncing = bouncing,
|
||||
primary_email_address_verified = verified
|
||||
);
|
||||
DROP TABLE ccm_core.user_email_addresses;
|
||||
ALTER TABLE ccm_core.users DROP COLUMN email_address;
|
||||
ALTER TABLE ccm_core.users DROP COLUMN bouncing;
|
||||
ALTER TABLE ccm_core.users DROP COLUMN verified;
|
||||
|
|
@ -70,8 +70,8 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -147,6 +147,16 @@ public class CategoryManagerTest {
|
|||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
@ -397,8 +407,7 @@ public class CategoryManagerTest {
|
|||
@UsingDataSet("datasets/org/libreccm/categorization/CategoryManagerTest"
|
||||
+ "/data.yml")
|
||||
@ShouldMatchDataSet(
|
||||
excludeColumns = {
|
||||
},
|
||||
excludeColumns = {},
|
||||
value = "datasets/org/libreccm/categorization/CategoryManagerTest"
|
||||
+ "/after-remove-obj-from-category.yml"
|
||||
)
|
||||
|
|
@ -751,7 +760,7 @@ public class CategoryManagerTest {
|
|||
/**
|
||||
* Tries to retrieve the index object from several categories and verifies
|
||||
* that the expected object is returned by null null null null null null
|
||||
* null null {@link CategoryManager#getIndexObject(org.libreccm.categorization.Category).
|
||||
* null null null {@link CategoryManager#getIndexObject(org.libreccm.categorization.Category).
|
||||
*/
|
||||
@Test
|
||||
@UsingDataSet(
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -133,6 +133,16 @@ public class CategoryRepositoryTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
@ -250,7 +260,7 @@ public class CategoryRepositoryTest {
|
|||
final Domain domain = domainRepo.findByDomainKey("test").get();
|
||||
|
||||
final Optional<Category> doesNotExist = categoryRepo.findByPath(domain,
|
||||
"/does/not/exist");
|
||||
"/does/not/exist");
|
||||
|
||||
assertThat(doesNotExist.isPresent(), is(false));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,8 +62,8 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -124,6 +124,16 @@ public class ConfigurationManagerTest {
|
|||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -105,15 +105,21 @@ public class CcmObjectRepositoryTest {
|
|||
.create(WebArchive.class,
|
||||
"LibreCCM-org.libreccm.core.CcmObjectRepositoryTest.war")
|
||||
.addPackage(org.libreccm.auditing.CcmRevision.class.getPackage())
|
||||
.addPackage(org.libreccm.categorization.Categorization.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.configuration.Configuration.class.
|
||||
getPackage())
|
||||
.addPackage(org.libreccm.core.CcmObject.class.getPackage())
|
||||
.addPackage(org.libreccm.jpa.EntityManagerProducer.class
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.jpa.utils.MimeTypeConverter.class
|
||||
.getPackage())
|
||||
.addPackage(
|
||||
org.libreccm.categorization.Categorization.class.getPackage()
|
||||
)
|
||||
.addPackage(
|
||||
org.libreccm.configuration.Configuration.class.getPackage()
|
||||
)
|
||||
.addPackage(
|
||||
org.libreccm.core.CcmObject.class.getPackage()
|
||||
)
|
||||
.addPackage(
|
||||
org.libreccm.jpa.EntityManagerProducer.class.getPackage()
|
||||
)
|
||||
.addPackage(
|
||||
org.libreccm.jpa.utils.MimeTypeConverter.class.getPackage()
|
||||
)
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage())
|
||||
.addClass(org.libreccm.modules.CcmModule.class)
|
||||
.addClass(org.libreccm.modules.ModuleEvent.class)
|
||||
|
|
@ -122,17 +128,30 @@ public class CcmObjectRepositoryTest {
|
|||
.addClass(org.libreccm.modules.UnInstallEvent.class)
|
||||
.addClass(org.libreccm.modules.ShutdownEvent.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addPackage(org.libreccm.security.PermissionChecker.class
|
||||
.getPackage())
|
||||
.addPackage(
|
||||
org.libreccm.security.PermissionChecker.class.getPackage()
|
||||
)
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addPackage(org.libreccm.testutils.EqualsVerifier.class.
|
||||
getPackage())
|
||||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
.getPackage())
|
||||
.addPackage(
|
||||
org.libreccm.testutils.EqualsVerifier.class.getPackage()
|
||||
)
|
||||
.addPackage(
|
||||
org.libreccm.tests.categories.IntegrationTest.class.getPackage()
|
||||
)
|
||||
.addPackage(org.libreccm.web.CcmApplication.class.getPackage())
|
||||
.addPackage(org.libreccm.workflow.Workflow.class.getPackage())
|
||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||
.getPackage())
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
@ -358,7 +377,8 @@ public class CcmObjectRepositoryTest {
|
|||
@Test(expected = NullPointerException.class)
|
||||
@ShouldThrowException(NullPointerException.class)
|
||||
@UsingDataSet("datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml")
|
||||
@ShouldMatchDataSet("datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml")
|
||||
@ShouldMatchDataSet(
|
||||
"datasets/org/libreccm/core/CcmObjectRepositoryTest/data.yml")
|
||||
@InSequence(700)
|
||||
public void deleteNullValue() {
|
||||
ccmObjectRepository.delete(null);
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ import static org.junit.Assert.*;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -82,20 +82,26 @@ public class GroupImportTest {
|
|||
private static final String IMPORT_MANIFEST_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.GroupImportTest"
|
||||
+ "/ccm-export.json";
|
||||
|
||||
private static final String IMPORT_GROUPS_TOC_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.GroupImportTest"
|
||||
+ "/org.libreccm.security.Group"
|
||||
+ "/org.libreccm.security.Group.json";
|
||||
|
||||
private static final String IMPORT_DATA_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.GroupImportTest"
|
||||
+ "/org.libreccm.security.Group"
|
||||
+ "/696592cd-db19-4aca-bb14-06490cfde243.json";
|
||||
|
||||
private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
|
||||
|
||||
private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests";
|
||||
|
||||
private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports";
|
||||
|
||||
private static final String GROUP_IMPORT_TEST_DIR = IMPORTS_DIR
|
||||
+ "/org.libreccm.imexport.GroupImportTest";
|
||||
|
||||
private static final String IMPORT_DATA_DIR = GROUP_IMPORT_TEST_DIR
|
||||
+ "/org.libreccm.security.Group";
|
||||
|
||||
|
|
@ -233,6 +239,16 @@ public class GroupImportTest {
|
|||
.getPackage())
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("imports", "imports")
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ import static org.junit.Assert.*;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -82,23 +82,29 @@ public class GroupMembershipImportTest {
|
|||
private static final String IMPORT_MANIFEST_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.GroupMembershipImportTest"
|
||||
+ "/ccm-export.json";
|
||||
|
||||
private static final String IMPORT_GROUPMEMBERSHIP_TOC_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.GroupMembershipImportTest"
|
||||
+ "/org.libreccm.security.GroupMembership"
|
||||
+ "/org.libreccm.security.GroupMembership.json";
|
||||
|
||||
private static final String IMPORT_GROUPMEMBERSHIP_DATA_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.GroupMembershipImportTest"
|
||||
+ "/org.libreccm.security.GroupMembership"
|
||||
+ "/f8ac4073-447e-4bd6-ac96-3bf92bdc8ce7.json";
|
||||
|
||||
private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
|
||||
|
||||
private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests";
|
||||
|
||||
private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports";
|
||||
|
||||
private static final String GROUPMEMBERSHIP_IMPORT_TEST_DIR = IMPORTS_DIR
|
||||
+ "/org.libreccm.imexport.GroupMembershipImportTest";
|
||||
|
||||
private static final String IMPORT_GROUPMEMBERSHIP_DATA_DIR
|
||||
= GROUPMEMBERSHIP_IMPORT_TEST_DIR
|
||||
+ "/org.libreccm.security.GroupMembership";
|
||||
= GROUPMEMBERSHIP_IMPORT_TEST_DIR
|
||||
+ "/org.libreccm.security.GroupMembership";
|
||||
|
||||
@Inject
|
||||
private ConfigurationManager confManager;
|
||||
|
|
@ -157,7 +163,7 @@ public class GroupMembershipImportTest {
|
|||
final Path groupMembershipsTocTargetPath = importGroupMembershipDataPath
|
||||
.resolve("org.libreccm.security.GroupMembership.json");
|
||||
final Path groupMembership1DataTargetPath
|
||||
= importGroupMembershipDataPath
|
||||
= importGroupMembershipDataPath
|
||||
.resolve("f8ac4073-447e-4bd6-ac96-3bf92bdc8ce7.json");
|
||||
|
||||
copy(manifestInputStream, manifestTargetPath);
|
||||
|
|
@ -237,6 +243,16 @@ public class GroupMembershipImportTest {
|
|||
.getPackage())
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("imports", "imports")
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ import static org.junit.Assert.*;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -82,20 +82,26 @@ public class UserImportTest {
|
|||
private static final String IMPORT_MANIFEST_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.UserImportTest"
|
||||
+ "/ccm-export.json";
|
||||
|
||||
private static final String IMPORT_USERS_TOC_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.UserImportTest"
|
||||
+ "/org.libreccm.security.User"
|
||||
+ "/org.libreccm.security.User.json";
|
||||
|
||||
private static final String IMPORT_DATA_SOURCE = "/imports"
|
||||
+ "/org.libreccm.imexport.UserImportTest"
|
||||
+ "/org.libreccm.security.User"
|
||||
+ "/7cb9aba4-8071-4f27-af19-096e1473d050.json";
|
||||
|
||||
private static final String TMP_DIR = System.getProperty("java.io.tmpdir");
|
||||
|
||||
private static final String CCM_TESTS_DIR = TMP_DIR + "/ccm-tests";
|
||||
|
||||
private static final String IMPORTS_DIR = CCM_TESTS_DIR + "/imports";
|
||||
|
||||
private static final String USER_IMPORT_TEST_DIR = IMPORTS_DIR
|
||||
+ "/org.libreccm.imexport.UserImportTest";
|
||||
|
||||
private static final String IMPORT_DATA_DIR = USER_IMPORT_TEST_DIR
|
||||
+ "/org.libreccm.security.User";
|
||||
|
||||
|
|
@ -232,6 +238,16 @@ public class UserImportTest {
|
|||
.getPackage())
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("imports", "imports")
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ import static org.libreccm.testutils.DependenciesHelpers.*;
|
|||
import org.jboss.arquillian.persistence.CleanupUsingScript;
|
||||
import org.jboss.arquillian.persistence.TestExecutionPhase;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
|
|
@ -55,8 +54,8 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -102,6 +101,16 @@ public class ConfigurationLoaderTest {
|
|||
.addPackage(org.libreccm.testutils.EqualsVerifier.class.
|
||||
getPackage())
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
@ -118,7 +127,7 @@ public class ConfigurationLoaderTest {
|
|||
@Test
|
||||
@ShouldMatchDataSet(
|
||||
value = "datasets/org/libreccm/modules/ConfigurationLoaderTest/"
|
||||
+ "after-load.yml",
|
||||
+ "after-load.xml",
|
||||
excludeColumns = {"setting_id", "entry_id"})
|
||||
public void loadConfiguration() {
|
||||
final ConfigurationLoader confLoader = new ConfigurationLoader(
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class DatasetsTest extends DatasetsVerifier {
|
|||
@Parameterized.Parameters(name = "Dataset {0}")
|
||||
public static Collection<String> data() {
|
||||
return Arrays.asList(new String[]{
|
||||
"/datasets/org/libreccm/modules/ConfigurationLoaderTest/after-load.yml",});
|
||||
"/datasets/org/libreccm/modules/ConfigurationLoaderTest/after-load.xml",});
|
||||
}
|
||||
|
||||
public DatasetsTest(final String datasetPath) {
|
||||
|
|
@ -60,7 +60,7 @@ public class DatasetsTest extends DatasetsVerifier {
|
|||
|
||||
@Override
|
||||
public DatasetType getDatasetType() {
|
||||
return YAML;
|
||||
return FLAT_XML;
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
|
|
|
|||
|
|
@ -113,6 +113,12 @@ public class DependencyTreeManagerCycleTest {
|
|||
org.libreccm.modules.dependencytree.test.cycle.TestModuleC.class)
|
||||
.addPackage(org.libreccm.pagemodel.PageModel.class.getPackage())
|
||||
.addClass(org.libreccm.web.ApplicationType.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
|
||||
.addAsResource(
|
||||
|
|
|
|||
|
|
@ -127,6 +127,12 @@ public class DependencyTreeManagerTest {
|
|||
// .addClass(org.libreccm.portation.Portable.class)
|
||||
.addPackage(org.libreccm.pagemodel.PageModel.class.getPackage())
|
||||
.addClass(org.libreccm.web.ApplicationType.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
|
||||
.addAsResource(
|
||||
|
|
|
|||
|
|
@ -133,6 +133,16 @@ public class AuthorizationInterceptorTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(com.arsdigita.util.UncheckedWrapperException.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -136,6 +136,16 @@ public class ChallengeManagerTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
|
|||
|
|
@ -126,6 +126,16 @@ public class GroupManagerTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -126,6 +126,16 @@ public class GroupRepositoryTest {
|
|||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
|
|||
|
|
@ -65,25 +65,19 @@ public class ListContainsTest {
|
|||
user1.setName("user1");
|
||||
user1.setGivenName("User");
|
||||
user1.setFamilyName("One");
|
||||
final EmailAddress user1mail = new EmailAddress();
|
||||
user1mail.setAddress("user.one@example.org");
|
||||
user1.setPrimaryEmailAddress(user1mail);
|
||||
user1.setPrimaryEmailAddress("user.one@example.org");
|
||||
|
||||
final User user2 = new User();
|
||||
user2.setName("user2");
|
||||
user2.setGivenName("User");
|
||||
user2.setFamilyName("Two");
|
||||
final EmailAddress user2mail = new EmailAddress();
|
||||
user2mail.setAddress("user.two@example.org");
|
||||
user2.setPrimaryEmailAddress(user1mail);
|
||||
user2.setPrimaryEmailAddress("user.two@example.org");
|
||||
|
||||
final User user3 = new User();
|
||||
user3.setName("user3");
|
||||
user3.setGivenName("User");
|
||||
user3.setFamilyName("Three");
|
||||
final EmailAddress user3mail = new EmailAddress();
|
||||
user3mail.setAddress("user.three@example.org");
|
||||
user3.setPrimaryEmailAddress(user1mail);
|
||||
user3.setPrimaryEmailAddress("user.three@example.org");
|
||||
|
||||
final List<User> users = new ArrayList<>();
|
||||
users.add(user1);
|
||||
|
|
|
|||
|
|
@ -130,6 +130,16 @@ public class OneTimeAuthManagerTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addClass(com.arsdigita.kernel.security.SecurityConfig.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
|
|||
|
|
@ -63,8 +63,8 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
|
|
@ -131,6 +131,16 @@ public class PartyRepositoryTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
@ -211,15 +221,12 @@ public class PartyRepositoryTest {
|
|||
public void saveNewParty() {
|
||||
final User mmuster = new User();
|
||||
|
||||
final EmailAddress emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress("max.mustermann@example.org");
|
||||
emailAddress.setBouncing(false);
|
||||
emailAddress.setVerified(true);
|
||||
|
||||
mmuster.setName("mmuster");
|
||||
mmuster.setGivenName("Max");
|
||||
mmuster.setFamilyName("Mustermann");
|
||||
mmuster.setPrimaryEmailAddress(emailAddress);
|
||||
mmuster.setPrimaryEmailAddress("max.mustermann@example.org");
|
||||
mmuster.setPrimaryEmailAddressBouncing(false);
|
||||
mmuster.setPrimaryEmailAddressVerified(true);
|
||||
mmuster.setPassword(
|
||||
"$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==");
|
||||
mmuster.setPasswordResetRequired(false);
|
||||
|
|
|
|||
|
|
@ -134,6 +134,16 @@ public class PermissionCheckerTest {
|
|||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||
.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -135,6 +135,16 @@ public class PermissionManagerTest {
|
|||
.getPackage())
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -123,6 +123,16 @@ public class RoleManagerTest {
|
|||
.getPackage())
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -69,15 +69,17 @@ import org.jboss.arquillian.persistence.TestExecutionPhase;
|
|||
@RunWith(Arquillian.class)
|
||||
@PersistenceTest
|
||||
@Transactional(TransactionMode.COMMIT)
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
@CreateSchema({"001_create_schema.sql",
|
||||
"002_create_ccm_core_tables.sql",
|
||||
"003_init_hibernate_sequence.sql"})
|
||||
@CleanupUsingScript(value = {"999_cleanup.sql"},
|
||||
phase = TestExecutionPhase.BEFORE)
|
||||
public class RoleRepositoryTest {
|
||||
|
||||
private static final String ADMINISTRATOR = "administrator";
|
||||
|
||||
private static final String USER = "user";
|
||||
|
||||
private static final String READER = "reader";
|
||||
|
||||
@Inject
|
||||
|
|
@ -119,7 +121,7 @@ public class RoleRepositoryTest {
|
|||
.getPackage())
|
||||
.addPackage(
|
||||
org.libreccm.configuration.ConfigurationManager.class
|
||||
.getPackage())
|
||||
.getPackage())
|
||||
.addPackage(org.libreccm.l10n.LocalizedString.class.getPackage()).
|
||||
addPackage(org.libreccm.web.CcmApplication.class.getPackage())
|
||||
.addPackage(org.libreccm.workflow.Workflow.class.getPackage())
|
||||
|
|
@ -132,6 +134,16 @@ public class RoleRepositoryTest {
|
|||
.addPackage(org.libreccm.tests.categories.IntegrationTest.class
|
||||
.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
@ -204,7 +216,8 @@ public class RoleRepositoryTest {
|
|||
@UsingDataSet("datasets/org/libreccm/security/RoleRepositoryTest/data.yml")
|
||||
@InSequence(200)
|
||||
public void findRoleByName() {
|
||||
final Optional<Role> administrator = roleRepository.findByName(ADMINISTRATOR);
|
||||
final Optional<Role> administrator = roleRepository.findByName(
|
||||
ADMINISTRATOR);
|
||||
final Optional<Role> user = roleRepository.findByName(USER);
|
||||
final Optional<Role> reader = roleRepository.findByName(READER);
|
||||
|
||||
|
|
|
|||
|
|
@ -149,7 +149,17 @@ public class SecuredCollectionTest {
|
|||
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
|
||||
.addPackage(com.arsdigita.kernel.security.SecurityConfig.class
|
||||
.getPackage())
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -152,6 +152,16 @@ public class SecuredIteratorTest {
|
|||
.getPackage())
|
||||
.addPackage(com.arsdigita.kernel.KernelConfig.class.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -125,6 +125,16 @@ public class ShiroTest {
|
|||
.getPackage())
|
||||
.addClass(org.libreccm.security.authorization.LabBean.class)
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -126,6 +126,16 @@ public class UserManagerTest {
|
|||
.getPackage())
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("test-persistence.xml",
|
||||
"META-INF/persistence.xml")
|
||||
|
|
|
|||
|
|
@ -131,6 +131,16 @@ public class UserRepositoryTest {
|
|||
.addClass(com.arsdigita.kernel.KernelConfig.class)
|
||||
.addPackage(org.libreccm.cdi.utils.CdiUtil.class.getPackage())
|
||||
.addClass(org.libreccm.imexport.Exportable.class)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory.class
|
||||
)
|
||||
.addClass(
|
||||
org.libreccm.testutils.dbunit.PgSqlJsonbType.class
|
||||
)
|
||||
.addClass(org.libreccm.hibernate.AbstractCcmJsonUserType.class)
|
||||
.addClass(
|
||||
org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect.class
|
||||
)
|
||||
.addAsLibraries(getModuleDependencies())
|
||||
.addAsResource("configs/shiro.ini", "shiro.ini")
|
||||
.addAsResource("test-persistence.xml",
|
||||
|
|
@ -253,15 +263,12 @@ public class UserRepositoryTest {
|
|||
public void saveNewUser() {
|
||||
final User user = new User();
|
||||
|
||||
final EmailAddress emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress("jane.doe@example.org");
|
||||
emailAddress.setBouncing(false);
|
||||
emailAddress.setVerified(false);
|
||||
|
||||
user.setName("jane");
|
||||
user.setGivenName("Jane");
|
||||
user.setFamilyName("Doe");
|
||||
user.setPrimaryEmailAddress(emailAddress);
|
||||
user.setPrimaryEmailAddress("jane.doe@example.org");
|
||||
user.setPrimaryEmailAddressBouncing(false);
|
||||
user.setPrimaryEmailAddressVerified(false);
|
||||
user.setPassword(
|
||||
"$shiro1$SHA-512$500000$24lA090z7GKYr4VFlZ6t4A==$/heoTHPA5huT1UfJ8Q+waXEG6AjUKhFYLFrj7KW/l0/z9O+QkiZTtfPfbcPblgjcEvrROMEIoQY4Z65S7rFLQg==");
|
||||
user.setPasswordResetRequired(false);
|
||||
|
|
@ -282,11 +289,9 @@ public class UserRepositoryTest {
|
|||
user.setPassword(
|
||||
"$shiro1$SHA-512$500000$AH1llRaMHE8W31Q7VG6jsA==$XXgKeyDCsrN23NvszQ5wt+uViQUlVqTAM+05LrE7Bd9sc0eaJT8HlAGvSdY+rqTLbiGm9YS4pohzoUt1x3kmKg==");
|
||||
|
||||
final EmailAddress emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress("jd@example.com");
|
||||
emailAddress.setBouncing(false);
|
||||
emailAddress.setVerified(true);
|
||||
user.setPrimaryEmailAddress(emailAddress);
|
||||
user.setPrimaryEmailAddress("jd@example.com");
|
||||
user.setPrimaryEmailAddressBouncing(false);
|
||||
user.setPrimaryEmailAddressVerified(true);
|
||||
|
||||
shiro.getSystemUser().execute(() -> userRepository.save(user));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<extension qualifier="persistence-dbunit">
|
||||
<property name="defaultDataSetFormat">json</property>
|
||||
<property name="datatypeFactory">org.dbunit.ext.h2.H2DataTypeFactory</property>
|
||||
<property name="datatypeFactory">org.libreccm.testutils.dbunit.CcmH2DataTypeFactory</property>
|
||||
<property name="excludePoi">true</property>
|
||||
<property name="qualifiedTableNames">true</property>
|
||||
</extension>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<extension qualifier="persistence-dbunit">
|
||||
<property name="defaultDataSetFormat">json</property>
|
||||
<property name="datatypeFactory">org.dbunit.ext.postgresql.PostgresqlDataTypeFactory</property>
|
||||
<property name="datatypeFactory">org.libreccm.testutils.dbunit.CcmPgSqlDataTypeFactory</property>
|
||||
<property name="excludePoi">true</property>
|
||||
<property name="qualifiedTableNames">true</property>
|
||||
</extension>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +1,5 @@
|
|||
DELETE FROM ccm_core.settings_string_list;
|
||||
|
||||
DELETE FROM ccm_core.settings_l10n_str_values;
|
||||
|
||||
DELETE FROM ccm_core.settings_enum_values;
|
||||
|
||||
DELETE FROM ccm_core.settings_enum_values;
|
||||
|
|
@ -28,8 +26,6 @@ DELETE FROM ccm_core.one_time_auth_tokens;
|
|||
|
||||
DELETE FROM ccm_core.users;
|
||||
|
||||
DELETE FROM ccm_core.user_email_addresses;
|
||||
|
||||
DELETE FROM ccm_core.parties;
|
||||
|
||||
DELETE FROM ccm_core.ccm_roles;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,11 @@
|
|||
<property name="hibernate.show_sql" value="true"/>
|
||||
<property name="hibernate.id.new_generator_mappings" value="true"/>
|
||||
<property name="hibernate.connection.autocommit" value="false" />
|
||||
<property
|
||||
name="hibernate.dialect"
|
||||
value="org.libreccm.hibernate.dialects.LibreCcmPgSql9Dialect"
|
||||
/>
|
||||
|
||||
|
||||
<!--
|
||||
Properties for Hibernate Envers
|
||||
|
|
@ -33,7 +38,7 @@
|
|||
when querying data than the DefaultStrategy
|
||||
-->
|
||||
<!--<property name="org.hibernate.envers.audit_strategy"
|
||||
value="org.hibernate.envers.strategy.ValidityAuditStrategy"/>-->
|
||||
value="org.hibernate.envers.strategy.ValidityAuditStrategy"/>-->
|
||||
</properties>
|
||||
</persistence-unit>
|
||||
|
||||
|
|
|
|||
|
|
@ -84,30 +84,30 @@ ccm_core.users:
|
|||
- party_id: 3000
|
||||
given_name: public
|
||||
family_name: user
|
||||
email_address: public-user@localhost
|
||||
primary_email_address: public-user@localhost
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
- party_id: 3100
|
||||
given_name: Jane
|
||||
family_name: Doe
|
||||
email_address: jane.doe@example.org
|
||||
primary_email_address: jane.doe@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
- party_id: 3200
|
||||
given_name: Maria
|
||||
family_name: Muster
|
||||
email_address: mmuster@example.com
|
||||
primary_email_address: mmuster@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
|
||||
ccm_core.ccm_roles:
|
||||
|
|
|
|||
|
|
@ -69,28 +69,28 @@ ccm_core.users:
|
|||
- party_id: 100
|
||||
given_name: public
|
||||
family_name: user
|
||||
email_address: public-user@localhost
|
||||
primary_email_address: public-user@localhost
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
- party_id: 200
|
||||
given_name: John
|
||||
family_name: Doe
|
||||
email_address: john.doe@example.org
|
||||
primary_email_address: john.doe@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
- party_id: 300
|
||||
given_name: Max
|
||||
family_name: Mustermann
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address: mmuster@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
|
||||
ccm_core.ccm_roles:
|
||||
|
|
|
|||
|
|
@ -59,28 +59,28 @@ ccm_core.users:
|
|||
- party_id: 100
|
||||
given_name: public
|
||||
family_name: user
|
||||
email_address: public-user@localhost
|
||||
primary_email_address: public-user@localhost
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
- party_id: 200
|
||||
given_name: John
|
||||
family_name: Doe
|
||||
email_address: john.doe@example.org
|
||||
primary_email_address: john.doe@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
- party_id: 300
|
||||
given_name: Max
|
||||
family_name: Mustermann
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address: mmuster@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
banned: false
|
||||
bouncing: false
|
||||
verified: true
|
||||
password_reset_required: false
|
||||
|
||||
ccm_core.ccm_roles:
|
||||
|
|
|
|||
|
|
@ -22,36 +22,36 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: john.doe@example.com
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: max.mustermann@example.org
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: joe.public@example.com
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
ccm_core.groups:
|
||||
# Group 1
|
||||
- party_id: 100
|
||||
|
|
|
|||
|
|
@ -22,36 +22,36 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: john.doe@example.com
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: max.mustermann@example.org
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: joe.public@example.com
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
ccm_core.groups:
|
||||
# Group 1
|
||||
- party_id: 100
|
||||
|
|
|
|||
|
|
@ -18,43 +18,43 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: john.doe@example.com
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: max.mustermann@example.org
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: joe.public@example.com
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Jane Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: jane.doe@libreccm.example
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: jane.doe@libreccm.example
|
||||
family_name: Doe
|
||||
given_name: Jane
|
||||
party_id: 40
|
||||
password: ofafodafa
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
|
|
|
|||
|
|
@ -14,33 +14,33 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: john.doe@example.com
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: max.mustermann@example.org
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address: joe.public@example.com
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
primary_email_address_verified: true
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<dataset>
|
||||
<ccm_core.settings
|
||||
dtype="LocalizedStringSetting"
|
||||
setting_id="120"
|
||||
configuration_class="org.libreccm.configuration.ExampleConfiguration"
|
||||
name="title"
|
||||
setting_value_localized_string='{"de": "Versuch", "en": "Test"}'
|
||||
/>
|
||||
<ccm_core.settings
|
||||
dtype="BooleanSetting"
|
||||
setting_id="100"
|
||||
configuration_class="org.libreccm.configuration.ExampleConfiguration"
|
||||
name="enabled"
|
||||
setting_value_boolean="true"
|
||||
/>
|
||||
<ccm_core.settings
|
||||
dtype="LongSetting"
|
||||
setting_id="110"
|
||||
configuration_class="org.libreccm.configuration.ExampleConfiguration"
|
||||
name="itemsPerPage"
|
||||
setting_value_long="100"
|
||||
/>
|
||||
</dataset>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
ccm_core.settings:
|
||||
- setting_id: 100
|
||||
configuration_class: org.libreccm.configuration.ExampleConfiguration
|
||||
name: enabled
|
||||
setting_value_boolean: true
|
||||
dtype: BooleanSetting
|
||||
- setting_id: 110
|
||||
configuration_class: org.libreccm.configuration.ExampleConfiguration
|
||||
name: itemsPerPage
|
||||
setting_value_long: 100
|
||||
dtype: LongSetting
|
||||
- setting_id: 120
|
||||
configuration_class: org.libreccm.configuration.ExampleConfiguration
|
||||
name: title
|
||||
dtype: LocalizedStringSetting
|
||||
ccm_core.settings_l10n_str_values:
|
||||
- entry_id: 120
|
||||
locale: de
|
||||
localized_value: Versuch
|
||||
- entry_id: 120
|
||||
locale: en
|
||||
localized_value: Test
|
||||
|
||||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
</dataset>
|
||||
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
</dataset>
|
||||
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="true"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
banned="false"
|
||||
password_reset_required="false" />
|
||||
</dataset>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -31,20 +31,20 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
</dataset>
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="true"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
banned="false"
|
||||
password_reset_required="false" />
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
|
|
@ -31,21 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
password_reset_required="false" />
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="true"
|
||||
password_reset_required="false"
|
||||
verified="false"/>
|
||||
banned="false"
|
||||
password_reset_required="false" />
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
|
|
@ -26,36 +26,36 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
ccm_core.groups:
|
||||
# admins
|
||||
- party_id: 40
|
||||
|
|
|
|||
|
|
@ -26,36 +26,37 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
|
||||
ccm_core.groups:
|
||||
# admins
|
||||
- party_id: 40
|
||||
|
|
|
|||
|
|
@ -26,36 +26,36 @@ ccm_core.parties:
|
|||
ccm_core.users:
|
||||
# John Doe
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: john.doe@example.com
|
||||
primary_email_address: john.doe@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Doe
|
||||
given_name: John
|
||||
party_id: 10
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
# Max Mustermann
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: max.mustermann@example.org
|
||||
primary_email_address: max.mustermann@example.org
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Mustermann
|
||||
given_name: Max
|
||||
party_id: 20
|
||||
# foo123
|
||||
password: $shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
# Joe Public
|
||||
- banned: false
|
||||
bouncing: false
|
||||
email_address: joe.public@example.com
|
||||
primary_email_address: joe.public@example.com
|
||||
primary_email_address_bouncing: false
|
||||
primary_email_address_verified: true
|
||||
family_name: Public
|
||||
given_name: Joe
|
||||
party_id: 30
|
||||
password: $shiro1$SHA-512$500000$RUCYXAQt+XzUmj3x8oG5gw==$qU+lX160Jc6sNUOI9X85wlf2lzn4/hLJNURtjmw9LOYJ7vAqUFFmhyNCMxpzuHIpzeMELr+A0XReoSmtcZnOOw==
|
||||
password_reset_required: false
|
||||
verified: true
|
||||
ccm_core.groups:
|
||||
# admins
|
||||
- party_id: 40
|
||||
|
|
|
|||
|
|
@ -31,21 +31,23 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
/>
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
/>
|
||||
|
||||
<ccm_core.one_time_auth_tokens token_id="-100"
|
||||
user_id="-10"
|
||||
|
|
|
|||
|
|
@ -31,19 +31,21 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
/>
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
/>
|
||||
</dataset>
|
||||
|
|
@ -31,21 +31,23 @@
|
|||
<ccm_core.users party_id="-10"
|
||||
family_name="Doe"
|
||||
given_name="John"
|
||||
email_address="john.doe@example.com"
|
||||
primary_email_address="john.doe@example.com"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$7xkDcZUN0/whJInHIvGsDw==$WhelBVmJU/cLV7lAkMOrE5B/mqCW0bUuid1WX+xBwzzAaekC5bYn9eeOFGJWhiDgmaC50ZCUmM96/iGsRoc4uA=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
/>
|
||||
<ccm_core.users party_id="-20"
|
||||
family_name="Mustermann"
|
||||
given_name="Max"
|
||||
email_address="max.muster@example.org"
|
||||
primary_email_address="max.muster@example.org"
|
||||
primary_email_address_bouncing="false"
|
||||
primary_email_address_verified="true"
|
||||
password="$shiro1$SHA-512$500000$Y7CnccN1h25sR7KCElMOXg==$CVLWBhetodaEzzhDfGjRcCFZtSW02xOnjH7xhBx0lbxO66grKIt6LWmXoUhLEydce1JZ7cbzNLYOxIwwTeqi5Q=="
|
||||
bouncing="false"
|
||||
banned="false"
|
||||
password_reset_required="false"
|
||||
verified="true"/>
|
||||
/>
|
||||
|
||||
<ccm_core.one_time_auth_tokens
|
||||
token_id="-100"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue