From e3e30cdffe995a275d071417869e7cf49c194b2b Mon Sep 17 00:00:00 2001 From: tosmers Date: Wed, 6 Sep 2017 13:45:39 +0000 Subject: [PATCH] [CCM][FEATURE] - adds import functionalities for core's ResourceType, CcmApplication, Domain and DomainOwnership - optimizes imports in some core packages git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4987 8810af33-2d31-482b-a856-94f89814c4df --- .../categorization/Categorization.java | 18 +- .../CategorizationIdGenerator.java | 3 +- .../org/libreccm/categorization/Category.java | 17 +- .../categorization/CategoryIdResolver.java | 2 - .../categorization/CategoryManager.java | 13 +- .../org/libreccm/categorization/Domain.java | 47 ++-- .../categorization/DomainIdResolver.java | 59 ++++++ .../categorization/DomainManager.java | 5 +- .../categorization/DomainMarshaller.java | 47 ++++ .../categorization/DomainOwnership.java | 34 ++- .../DomainOwnershipIdGenerator.java | 69 ++++++ .../DomainOwnershipMarshaller.java | 52 +++++ .../categorization/DomainRepository.java | 55 +++-- .../libreccm/categorization/package-info.java | 4 +- .../core/AbstractEntityRepository.java | 7 +- .../main/java/org/libreccm/core/CcmCore.java | 25 +-- .../java/org/libreccm/core/CcmObject.java | 12 +- .../java/org/libreccm/core/EmailAddress.java | 9 +- .../main/java/org/libreccm/core/Resource.java | 35 ++- .../org/libreccm/core/ResourceIdResolver.java | 59 ++++++ .../org/libreccm/core/ResourceRepository.java | 74 +++++++ .../java/org/libreccm/core/ResourceType.java | 28 +-- .../libreccm/core/ResourceTypeIdResolver.java | 59 ++++++ .../libreccm/core/ResourceTypeMarshaller.java | 47 ++++ .../libreccm/core/ResourceTypeRepository.java | 68 ++++++ .../java/org/libreccm/core/package-info.java | 4 +- .../libreccm/l10n/GlobalizationHelper.java | 6 +- .../org/libreccm/l10n/LocalizedString.java | 30 +-- .../java/org/libreccm/l10n/package-info.java | 4 +- .../security/AuthorizationInterceptor.java | 5 +- .../security/AuthorizationRequired.java | 7 +- .../security/CcmShiroRealmController.java | 7 +- .../libreccm/security/ChallengeManager.java | 8 +- .../java/org/libreccm/security/Group.java | 10 +- .../org/libreccm/security/GroupManager.java | 3 +- .../libreccm/security/GroupMembership.java | 11 +- .../libreccm/security/GroupRepository.java | 11 +- .../libreccm/security/OneTimeAuthManager.java | 25 +-- .../libreccm/security/OneTimeAuthToken.java | 18 +- .../security/OneTimeAuthTokenCleaner.java | 7 +- .../java/org/libreccm/security/Party.java | 16 +- .../org/libreccm/security/Permission.java | 14 +- .../libreccm/security/PermissionChecker.java | 17 +- .../libreccm/security/PermissionManager.java | 18 +- .../security/RegistrationManager.java | 4 +- .../libreccm/security/RequiresPrivilege.java | 6 +- .../org/libreccm/security/RequiresRole.java | 6 +- .../main/java/org/libreccm/security/Role.java | 31 +-- .../org/libreccm/security/RoleManager.java | 11 +- .../org/libreccm/security/RoleMembership.java | 11 +- .../org/libreccm/security/RoleRepository.java | 12 +- .../org/libreccm/security/SecuredHelper.java | 4 +- .../org/libreccm/security/SecuredList.java | 3 +- .../security/SecuredListIterator.java | 4 +- .../security/SecuredNavigableSet.java | 3 +- .../org/libreccm/security/SecuredSet.java | 3 +- .../libreccm/security/SecuredSortedSet.java | 4 +- .../java/org/libreccm/security/Shiro.java | 19 +- .../libreccm/security/SystemUsersSetup.java | 3 +- .../main/java/org/libreccm/security/User.java | 33 +-- .../org/libreccm/security/UserManager.java | 11 +- .../org/libreccm/security/UserRepository.java | 5 +- .../web/AbstractCcmApplicationSetup.java | 3 +- .../org/libreccm/web/ApplicationManager.java | 9 +- .../libreccm/web/ApplicationRepository.java | 25 ++- .../org/libreccm/web/ApplicationType.java | 6 +- .../java/org/libreccm/web/CcmApplication.java | 38 ++-- .../web/CcmApplicationIdResolver.java | 59 ++++++ .../web/CcmApplicationMarshaller.java | 47 ++++ .../src/main/java/org/libreccm/web/Host.java | 11 +- .../java/org/libreccm/web/ServletPath.java | 5 +- .../org/libreccm/workflow/AssignableTask.java | 17 +- .../workflow/AssignableTaskManager.java | 17 +- .../workflow/AssignableTaskRepository.java | 1 - .../main/java/org/libreccm/workflow/Task.java | 20 +- .../org/libreccm/workflow/TaskAssignment.java | 9 +- .../org/libreccm/workflow/TaskComment.java | 16 +- .../org/libreccm/workflow/TaskManager.java | 7 +- .../java/org/libreccm/workflow/Workflow.java | 20 +- .../libreccm/workflow/WorkflowManager.java | 28 +-- .../libreccm/workflow/WorkflowRepository.java | 5 +- .../workflow/WorkflowTemplateRepository.java | 3 +- .../portation/CoreDataImportTest.java | 8 +- .../org/libreccm/portation/ImportHelper.java | 200 ++++++++++++------ 84 files changed, 1087 insertions(+), 709 deletions(-) create mode 100644 ccm-core/src/main/java/org/libreccm/categorization/DomainIdResolver.java create mode 100644 ccm-core/src/main/java/org/libreccm/categorization/DomainMarshaller.java create mode 100644 ccm-core/src/main/java/org/libreccm/categorization/DomainOwnershipIdGenerator.java create mode 100644 ccm-core/src/main/java/org/libreccm/categorization/DomainOwnershipMarshaller.java create mode 100644 ccm-core/src/main/java/org/libreccm/core/ResourceIdResolver.java create mode 100644 ccm-core/src/main/java/org/libreccm/core/ResourceRepository.java create mode 100644 ccm-core/src/main/java/org/libreccm/core/ResourceTypeIdResolver.java create mode 100644 ccm-core/src/main/java/org/libreccm/core/ResourceTypeMarshaller.java create mode 100644 ccm-core/src/main/java/org/libreccm/core/ResourceTypeRepository.java create mode 100644 ccm-core/src/main/java/org/libreccm/web/CcmApplicationIdResolver.java create mode 100644 ccm-core/src/main/java/org/libreccm/web/CcmApplicationMarshaller.java diff --git a/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java b/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java index 51cb96e39..23dd5254a 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java @@ -18,32 +18,18 @@ */ package org.libreccm.categorization; -import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIdentityReference; import org.libreccm.core.CcmObject; import org.libreccm.portation.Portable; +import org.libreccm.security.Relation; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; - +import javax.persistence.*; import java.io.Serializable; import java.util.Objects; import static org.libreccm.core.CoreConstants.DB_SCHEMA; -import org.libreccm.security.Relation; - -import javax.persistence.FetchType; - /** * Association class describing the association between a category and an * object. Instances of these class should not created manually. The methods diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategorizationIdGenerator.java b/ccm-core/src/main/java/org/libreccm/categorization/CategorizationIdGenerator.java index ea1d12d4b..ad54542dd 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategorizationIdGenerator.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategorizationIdGenerator.java @@ -47,9 +47,8 @@ public class CategorizationIdGenerator extends ObjectIdGenerator { @Override public IdKey key(Object key) { - if (key == null) { + if (key == null) return null; - } return new IdKey(Categorization.class, Categorization.class, key); } diff --git a/ccm-core/src/main/java/org/libreccm/categorization/Category.java b/ccm-core/src/main/java/org/libreccm/categorization/Category.java index 4cb7701b1..36b648ce8 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/Category.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/Category.java @@ -28,22 +28,7 @@ import org.libreccm.l10n.LocalizedString; import org.libreccm.portation.Portable; import org.libreccm.security.RecursivePermissions; -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; -import javax.persistence.NamedEntityGraphs; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.validation.constraints.Pattern; +import javax.persistence.*; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java index 7849b879e..24d0868b3 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryIdResolver.java @@ -22,8 +22,6 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdResolver; import org.libreccm.cdi.utils.CdiUtil; -import javax.enterprise.context.RequestScoped; - /** * @author owners; public Domain() { diff --git a/ccm-core/src/main/java/org/libreccm/categorization/DomainIdResolver.java b/ccm-core/src/main/java/org/libreccm/categorization/DomainIdResolver.java new file mode 100644 index 000000000..4071c74f1 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/categorization/DomainIdResolver.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015 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.categorization; + +import com.fasterxml.jackson.annotation.ObjectIdGenerator; +import com.fasterxml.jackson.annotation.ObjectIdResolver; +import org.libreccm.cdi.utils.CdiUtil; + +/** + * @author query = getEntityManager() + .createNamedQuery("Domain.findByKey", Domain.class); query.setParameter("key", domainKey); - final EntityGraph graph = entityManager.getEntityGraph( - "Domain.allCategories"); + final EntityGraph graph = getEntityManager() + .getEntityGraph( "Domain.allCategories"); query.setHint("javax.persistence.fetchgraph", graph); try { @@ -106,19 +100,38 @@ public class DomainRepository extends AbstractEntityRepository { * if there is so such {@code Domain}. */ public Domain findByUri(final URI uri) { - final TypedQuery query = entityManager.createNamedQuery( - "Domain.findByUri", Domain.class); + final TypedQuery query = getEntityManager() + .createNamedQuery("Domain.findByUri", Domain.class); query.setParameter("uri", uri); return query.getSingleResult(); } + /** + * Finds a {@link Domain} by its uuid. + * + * @param uuid The uuid of the item to find + * + * @return An optional either with the found item or empty + */ + public Optional findByUuid(final String uuid) { + final TypedQuery query = getEntityManager() + .createNamedQuery("Domain.findByUuid", Domain.class); + query.setParameter("uuid", uuid); + + try { + return Optional.of(query.getSingleResult()); + } catch (NoResultException ex) { + return Optional.empty(); + } + } + public List search(final String term) { - final TypedQuery query = entityManager.createNamedQuery( - "Domain.search", Domain.class); + final TypedQuery query = getEntityManager() + .createNamedQuery("Domain.search", Domain.class); query.setParameter("term", term); - final EntityGraph graph = entityManager.getEntityGraph( - "Domain.withOwners"); + final EntityGraph graph = getEntityManager() + .getEntityGraph("Domain.withOwners"); query.setHint("javax.persistence.fetchgraph", graph); return query.getResultList(); diff --git a/ccm-core/src/main/java/org/libreccm/categorization/package-info.java b/ccm-core/src/main/java/org/libreccm/categorization/package-info.java index 399a83c4e..a89abab6f 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/package-info.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/package-info.java @@ -20,9 +20,9 @@ @XmlAccessorType(XmlAccessType.NONE) package org.libreccm.categorization; -import static org.libreccm.categorization.CategorizationConstants.*; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; + +import static org.libreccm.categorization.CategorizationConstants.CAT_XML_NS; diff --git a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java index 6220a36da..0bce27bea 100644 --- a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java +++ b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java @@ -21,12 +21,6 @@ package org.libreccm.core; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - import javax.inject.Inject; import javax.persistence.EntityGraph; import javax.persistence.EntityManager; @@ -35,6 +29,7 @@ import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import javax.transaction.Transactional; +import java.util.*; /** * A base class providing common method needed by every repository. diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java index d05d7c810..69851b1fd 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java @@ -18,36 +18,27 @@ */ package org.libreccm.core; -import com.arsdigita.ui.admin.applications.AdminApplicationCreator; import com.arsdigita.ui.admin.AdminServlet; import com.arsdigita.ui.admin.AdminUiConstants; +import com.arsdigita.ui.admin.applications.AdminApplicationCreator; import com.arsdigita.ui.admin.applications.AdminApplicationSetup; import com.arsdigita.ui.login.LoginApplicationCreator; -import com.arsdigita.ui.login.LoginServlet; import com.arsdigita.ui.login.LoginApplicationSetup; import com.arsdigita.ui.login.LoginConstants; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import javax.persistence.EntityManager; - +import com.arsdigita.ui.login.LoginServlet; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.libreccm.admin.ui.AdminJsfApplicationCreator; import org.libreccm.admin.ui.AdminJsfApplicationSetup; - -import org.libreccm.modules.CcmModule; -import org.libreccm.modules.InitEvent; -import org.libreccm.modules.InstallEvent; -import org.libreccm.modules.Module; -import org.libreccm.modules.ShutdownEvent; -import org.libreccm.modules.UnInstallEvent; +import org.libreccm.modules.*; import org.libreccm.security.SystemUsersSetup; - import org.libreccm.web.ApplicationType; +import javax.persistence.EntityManager; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + /** * * @author Jens Pelzetter diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmObject.java b/ccm-core/src/main/java/org/libreccm/core/CcmObject.java index d4a722d0c..a45301dd1 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmObject.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmObject.java @@ -29,17 +29,7 @@ import org.libreccm.categorization.Category; import org.libreccm.categorization.CategoryManager; import org.libreccm.security.Permission; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import javax.persistence.*; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; diff --git a/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java b/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java index cf948bc27..6ac47fbe4 100644 --- a/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java +++ b/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java @@ -18,18 +18,17 @@ */ package org.libreccm.core; -import static org.libreccm.core.CoreConstants.*; - import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotBlank; -import java.io.Serializable; -import java.util.Objects; - import javax.persistence.Column; import javax.persistence.Embeddable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import java.io.Serializable; +import java.util.Objects; + +import static org.libreccm.core.CoreConstants.CORE_XML_NS; /** * An embeddable entity for storing email addresses. diff --git a/ccm-core/src/main/java/org/libreccm/core/Resource.java b/ccm-core/src/main/java/org/libreccm/core/Resource.java index 810030288..51ec4ea91 100644 --- a/ccm-core/src/main/java/org/libreccm/core/Resource.java +++ b/ccm-core/src/main/java/org/libreccm/core/Resource.java @@ -18,29 +18,18 @@ */ package org.libreccm.core; -import static org.libreccm.core.CoreConstants.*; - +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.JsonIdentityReference; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; import org.libreccm.l10n.LocalizedString; import org.libreccm.web.CcmApplication; +import javax.persistence.*; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; -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.OneToMany; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import static org.libreccm.core.CoreConstants.DB_SCHEMA; /** * The {@code Resource} class is a base class for several other classes, for @@ -58,6 +47,13 @@ import javax.persistence.TemporalType; */ @Entity @Table(name = "RESOURCES", schema = DB_SCHEMA) +@NamedQueries({ + @NamedQuery(name = "Resource.findByUuid", + query = "SELECT r FROM Resource r WHERE r.uuid = :uuid"), +}) +@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, + resolver = ResourceIdResolver.class, + property = "uuid") public class Resource extends CcmObject implements Serializable { private static final long serialVersionUID = 7345482620613842781L; @@ -87,6 +83,7 @@ public class Resource extends CcmObject implements Serializable { private LocalizedString description; @ManyToOne + @JsonIdentityReference(alwaysAsId = true) private ResourceType resourceType; /** @@ -100,6 +97,7 @@ public class Resource extends CcmObject implements Serializable { * The child resources of this resource. */ @OneToMany(mappedBy = "parent") + @JsonIgnore private List childs; /** @@ -107,6 +105,7 @@ public class Resource extends CcmObject implements Serializable { * the property will be null. */ @ManyToOne + @JsonIdentityReference(alwaysAsId = true) private Resource parent; public Resource() { diff --git a/ccm-core/src/main/java/org/libreccm/core/ResourceIdResolver.java b/ccm-core/src/main/java/org/libreccm/core/ResourceIdResolver.java new file mode 100644 index 000000000..585fe3d10 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/core/ResourceIdResolver.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015 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 com.fasterxml.jackson.annotation.ObjectIdGenerator; +import com.fasterxml.jackson.annotation.ObjectIdResolver; +import org.libreccm.cdi.utils.CdiUtil; + +/** + * @author Tobias Osmers<\a> + * @version created the 8/10/17 + */ +@RequestScoped +public class ResourceTypeRepository extends AbstractEntityRepository { + + @Override + public Class getEntityClass() { + return ResourceType.class; + } + + @Override + public boolean isNew(final ResourceType entity) { + return entity.getTitle() == null; + } + + /** + * Finds a {@link ResourceType} by its title. + * + * @param title The title of the item to find + * + * @return An optional either with the found item or empty + */ + public Optional findByTitle(final String title) { + final TypedQuery query = getEntityManager() + .createNamedQuery("ResourceType.findByTitle", ResourceType.class); + query.setParameter("title", title); + + try { + return Optional.of(query.getSingleResult()); + } catch (NoResultException ex) { + return Optional.empty(); + } + } +} diff --git a/ccm-core/src/main/java/org/libreccm/core/package-info.java b/ccm-core/src/main/java/org/libreccm/core/package-info.java index 075ab6377..15f8b9762 100644 --- a/ccm-core/src/main/java/org/libreccm/core/package-info.java +++ b/ccm-core/src/main/java/org/libreccm/core/package-info.java @@ -25,10 +25,10 @@ @XmlAccessorType(XmlAccessType.NONE) package org.libreccm.core; -import static org.libreccm.core.CoreConstants.*; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; +import static org.libreccm.core.CoreConstants.CORE_XML_NS; + diff --git a/ccm-core/src/main/java/org/libreccm/l10n/GlobalizationHelper.java b/ccm-core/src/main/java/org/libreccm/l10n/GlobalizationHelper.java index 3e24bb380..5ed8d6440 100644 --- a/ccm-core/src/main/java/org/libreccm/l10n/GlobalizationHelper.java +++ b/ccm-core/src/main/java/org/libreccm/l10n/GlobalizationHelper.java @@ -19,16 +19,14 @@ package org.libreccm.l10n; import com.arsdigita.kernel.KernelConfig; - import org.libreccm.configuration.ConfigurationManager; -import java.util.Enumeration; -import java.util.Locale; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import java.util.Enumeration; +import java.util.Locale; /** * Provides the locale which has been selected based on the available languages diff --git a/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java b/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java index caa4c7045..ec3ba3b69 100644 --- a/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java +++ b/ccm-core/src/main/java/org/libreccm/l10n/LocalizedString.java @@ -18,31 +18,19 @@ */ package org.libreccm.l10n; -import static org.libreccm.l10n.L10NConstants.*; - -import java.io.Serializable; -import java.util.Collections; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -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.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; - import com.fasterxml.jackson.annotation.JsonIgnore; import org.hibernate.annotations.Type; import org.hibernate.search.annotations.Field; +import javax.persistence.*; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import java.io.Serializable; +import java.util.*; + +import static org.libreccm.l10n.L10NConstants.L10N_XML_NS; + /** * 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 diff --git a/ccm-core/src/main/java/org/libreccm/l10n/package-info.java b/ccm-core/src/main/java/org/libreccm/l10n/package-info.java index eb5ae79b6..023849365 100644 --- a/ccm-core/src/main/java/org/libreccm/l10n/package-info.java +++ b/ccm-core/src/main/java/org/libreccm/l10n/package-info.java @@ -20,10 +20,10 @@ @XmlAccessorType(XmlAccessType.NONE) package org.libreccm.l10n; -import static org.libreccm.l10n.L10NConstants.*; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlSchema; +import static org.libreccm.l10n.L10NConstants.L10N_XML_NS; + diff --git a/ccm-core/src/main/java/org/libreccm/security/AuthorizationInterceptor.java b/ccm-core/src/main/java/org/libreccm/security/AuthorizationInterceptor.java index 1d21b3b39..514cebae6 100644 --- a/ccm-core/src/main/java/org/libreccm/security/AuthorizationInterceptor.java +++ b/ccm-core/src/main/java/org/libreccm/security/AuthorizationInterceptor.java @@ -23,13 +23,12 @@ import org.apache.logging.log4j.Logger; import org.apache.shiro.subject.Subject; import org.libreccm.core.CcmObject; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; - import javax.inject.Inject; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; /** * A CDI interceptor which can be used to secure methods of CDI beans. To use diff --git a/ccm-core/src/main/java/org/libreccm/security/AuthorizationRequired.java b/ccm-core/src/main/java/org/libreccm/security/AuthorizationRequired.java index eaa703acf..86b7db956 100644 --- a/ccm-core/src/main/java/org/libreccm/security/AuthorizationRequired.java +++ b/ccm-core/src/main/java/org/libreccm/security/AuthorizationRequired.java @@ -18,13 +18,8 @@ */ package org.libreccm.security; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - import javax.interceptor.InterceptorBinding; +import java.lang.annotation.*; /** * Use this annotation to secure a method by the diff --git a/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealmController.java b/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealmController.java index 648d96282..3ada249ad 100644 --- a/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealmController.java +++ b/ccm-core/src/main/java/org/libreccm/security/CcmShiroRealmController.java @@ -19,19 +19,16 @@ package org.libreccm.security; import com.arsdigita.kernel.KernelConfig; - import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.libreccm.configuration.ConfigurationManager; -import java.util.List; -import java.util.Optional; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; -import javax.persistence.EntityManager; import javax.transaction.Transactional; +import java.util.List; +import java.util.Optional; /** * This bean provides several services for the {@link CcmShiroRealm}. It wraps diff --git a/ccm-core/src/main/java/org/libreccm/security/ChallengeManager.java b/ccm-core/src/main/java/org/libreccm/security/ChallengeManager.java index 66267dfdd..be36424bc 100644 --- a/ccm-core/src/main/java/org/libreccm/security/ChallengeManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/ChallengeManager.java @@ -23,7 +23,6 @@ import com.arsdigita.mail.Mail; import com.arsdigita.ui.login.LoginConstants; import com.arsdigita.web.ParameterMap; import com.arsdigita.web.URL; - import org.apache.commons.lang.text.StrSubstitutor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -33,16 +32,11 @@ import org.libreccm.core.CoreConstants; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.l10n.LocalizedString; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.mail.MessagingException; import javax.servlet.http.HttpServletRequest; +import java.util.*; import static com.arsdigita.ui.login.LoginServlet.*; diff --git a/ccm-core/src/main/java/org/libreccm/security/Group.java b/ccm-core/src/main/java/org/libreccm/security/Group.java index cf2fa2611..61b84336f 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Group.java +++ b/ccm-core/src/main/java/org/libreccm/security/Group.java @@ -23,15 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.ObjectIdGenerators; import org.libreccm.portation.Portable; -import javax.persistence.Entity; -import javax.persistence.NamedAttributeNode; -import javax.persistence.NamedEntityGraph; -import javax.persistence.NamedEntityGraphs; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.NamedSubgraph; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import javax.persistence.*; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; diff --git a/ccm-core/src/main/java/org/libreccm/security/GroupManager.java b/ccm-core/src/main/java/org/libreccm/security/GroupManager.java index 16717ab25..263a16b4e 100644 --- a/ccm-core/src/main/java/org/libreccm/security/GroupManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/GroupManager.java @@ -20,14 +20,13 @@ package org.libreccm.security; import org.libreccm.core.CoreConstants; -import java.util.List; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.TypedQuery; import javax.transaction.Transactional; +import java.util.List; /** * Manager class providing methods for adding and removing members to and from diff --git a/ccm-core/src/main/java/org/libreccm/security/GroupMembership.java b/ccm-core/src/main/java/org/libreccm/security/GroupMembership.java index fe2d3b07b..1a735ce56 100644 --- a/ccm-core/src/main/java/org/libreccm/security/GroupMembership.java +++ b/ccm-core/src/main/java/org/libreccm/security/GroupMembership.java @@ -22,16 +22,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIdentityReference; import org.libreccm.portation.Portable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; +import javax.persistence.*; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; diff --git a/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java b/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java index 6141327a0..dc9d0ddf4 100644 --- a/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/GroupRepository.java @@ -18,17 +18,14 @@ */ package org.libreccm.security; -import java.util.List; - -import javax.enterprise.context.RequestScoped; -import javax.persistence.TypedQuery; - import org.libreccm.core.AbstractEntityRepository; import org.libreccm.core.CoreConstants; -import java.util.Optional; - +import javax.enterprise.context.RequestScoped; +import javax.persistence.TypedQuery; import javax.transaction.Transactional; +import java.util.List; +import java.util.Optional; /** * Repository for groups. diff --git a/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthManager.java b/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthManager.java index 6c05854ae..4ed853f1f 100644 --- a/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthManager.java @@ -19,20 +19,6 @@ package org.libreccm.security; import com.arsdigita.kernel.security.SecurityConfig; - -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.Date; -import java.util.List; - -import org.libreccm.configuration.ConfigurationManager; - -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.persistence.EntityManager; -import javax.persistence.TypedQuery; -import javax.transaction.Transactional; - import org.apache.commons.lang.RandomStringUtils; import org.apache.shiro.authc.credential.PasswordMatcher; import org.apache.shiro.authc.credential.PasswordService; @@ -43,8 +29,19 @@ import org.apache.shiro.crypto.hash.format.HashFormat; import org.apache.shiro.crypto.hash.format.HashFormatFactory; import org.apache.shiro.crypto.hash.format.Shiro1CryptFormat; import org.apache.shiro.util.ByteSource; +import org.libreccm.configuration.ConfigurationManager; import org.libreccm.core.CoreConstants; +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import javax.transaction.Transactional; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.Date; +import java.util.List; + /** * This class manages the generation and delation of {@link OneTimeAuthToken}s. * diff --git a/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthToken.java b/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthToken.java index de655c134..6c5dbafbb 100644 --- a/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthToken.java +++ b/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthToken.java @@ -18,26 +18,12 @@ */ package org.libreccm.security; +import javax.persistence.*; import java.io.Serializable; import java.util.Date; import java.util.Objects; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - -import static org.libreccm.core.CoreConstants.*; +import static org.libreccm.core.CoreConstants.DB_SCHEMA; /** * The {@code OneTimeAuthToken} is used as a one time authentication mechanism diff --git a/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthTokenCleaner.java b/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthTokenCleaner.java index d1622dd2c..01b518992 100644 --- a/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthTokenCleaner.java +++ b/ccm-core/src/main/java/org/libreccm/security/OneTimeAuthTokenCleaner.java @@ -22,10 +22,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.libreccm.configuration.ConfigurationManager; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.List; - import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.ejb.Singleton; @@ -36,6 +32,9 @@ import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import javax.transaction.Transactional; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.List; /** * This EJB uses the {@link TimerService} to run a cleanup task periodically to diff --git a/ccm-core/src/main/java/org/libreccm/security/Party.java b/ccm-core/src/main/java/org/libreccm/security/Party.java index 3e087954d..f1c201ff9 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Party.java +++ b/ccm-core/src/main/java/org/libreccm/security/Party.java @@ -22,24 +22,10 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.NamedAttributeNode; -import javax.persistence.NamedEntityGraph; -import javax.persistence.NamedEntityGraphs; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import javax.persistence.*; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; - import java.io.Serializable; import java.util.Collections; import java.util.HashSet; diff --git a/ccm-core/src/main/java/org/libreccm/security/Permission.java b/ccm-core/src/main/java/org/libreccm/security/Permission.java index c96fa5bca..73a62208f 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Permission.java +++ b/ccm-core/src/main/java/org/libreccm/security/Permission.java @@ -26,19 +26,7 @@ import org.hibernate.search.annotations.IndexedEmbedded; import org.libreccm.core.CcmObject; import org.libreccm.portation.Portable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import javax.persistence.*; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; diff --git a/ccm-core/src/main/java/org/libreccm/security/PermissionChecker.java b/ccm-core/src/main/java/org/libreccm/security/PermissionChecker.java index 195b75a10..d762a78bc 100644 --- a/ccm-core/src/main/java/org/libreccm/security/PermissionChecker.java +++ b/ccm-core/src/main/java/org/libreccm/security/PermissionChecker.java @@ -18,25 +18,20 @@ */ package org.libreccm.security; -import static org.libreccm.core.CoreConstants.*; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.apache.shiro.authz.AuthorizationException; import org.apache.shiro.subject.Subject; import org.libreccm.core.CcmObject; -import java.util.Optional; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; -import javax.transaction.Transactional; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.util.Objects; - import javax.persistence.EntityManager; import javax.persistence.TypedQuery; +import javax.transaction.Transactional; +import java.util.Optional; + +import static org.libreccm.core.CoreConstants.ACCESS_DENIED; /** * An utility class for checking permissions. Uses the current {@link Subject} diff --git a/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java b/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java index 20c6851e9..90d653e63 100644 --- a/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java @@ -20,29 +20,25 @@ package org.libreccm.security; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - -import java.util.List; - -import javax.inject.Inject; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.TypedQuery; - import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObjectRepository; import org.libreccm.core.CoreConstants; import org.libreccm.core.UnexpectedErrorException; +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.persistence.EntityManager; +import javax.persistence.Query; +import javax.persistence.TypedQuery; +import javax.transaction.Transactional; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Collection; +import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -import javax.enterprise.context.RequestScoped; -import javax.transaction.Transactional; - /** * Manager class for granting and revoking permissions. * diff --git a/ccm-core/src/main/java/org/libreccm/security/RegistrationManager.java b/ccm-core/src/main/java/org/libreccm/security/RegistrationManager.java index e9832b2d0..6bdb8d19b 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RegistrationManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/RegistrationManager.java @@ -19,15 +19,13 @@ package org.libreccm.security; import com.arsdigita.ui.login.UserNewForm; - import org.apache.logging.log4j.util.Strings; import org.libreccm.core.CoreConstants; -import java.util.Optional; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.mail.MessagingException; +import java.util.Optional; /** diff --git a/ccm-core/src/main/java/org/libreccm/security/RequiresPrivilege.java b/ccm-core/src/main/java/org/libreccm/security/RequiresPrivilege.java index 9a048d236..2dedda7cc 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RequiresPrivilege.java +++ b/ccm-core/src/main/java/org/libreccm/security/RequiresPrivilege.java @@ -20,11 +20,7 @@ package org.libreccm.security; import org.libreccm.core.CcmObject; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; +import java.lang.annotation.*; /** * This annotation is used together with the {@link AuthorizationRequired} diff --git a/ccm-core/src/main/java/org/libreccm/security/RequiresRole.java b/ccm-core/src/main/java/org/libreccm/security/RequiresRole.java index 4afa4a82f..4c722859b 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RequiresRole.java +++ b/ccm-core/src/main/java/org/libreccm/security/RequiresRole.java @@ -18,11 +18,7 @@ */ package org.libreccm.security; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; +import java.lang.annotation.*; /** * This annotation is used together with the {@link AuthorizationRequired} diff --git a/ccm-core/src/main/java/org/libreccm/security/Role.java b/ccm-core/src/main/java/org/libreccm/security/Role.java index b7a1376d1..9766d0155 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Role.java +++ b/ccm-core/src/main/java/org/libreccm/security/Role.java @@ -27,35 +27,10 @@ import org.libreccm.l10n.LocalizedString; import org.libreccm.portation.Portable; import org.libreccm.workflow.TaskAssignment; -import javax.persistence.AssociationOverride; -import javax.persistence.Column; -import javax.persistence.Embedded; -import javax.persistence.Entity; -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; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; - +import javax.persistence.*; +import javax.xml.bind.annotation.*; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import static org.libreccm.core.CoreConstants.CORE_XML_NS; import static org.libreccm.core.CoreConstants.DB_SCHEMA; diff --git a/ccm-core/src/main/java/org/libreccm/security/RoleManager.java b/ccm-core/src/main/java/org/libreccm/security/RoleManager.java index 3b36d4fc8..84974c8b6 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RoleManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/RoleManager.java @@ -20,18 +20,17 @@ package org.libreccm.security; import org.libreccm.core.CoreConstants; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.TypedQuery; import javax.transaction.Transactional; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * Manager for roles providing methods for assigning the role the {@link Party} diff --git a/ccm-core/src/main/java/org/libreccm/security/RoleMembership.java b/ccm-core/src/main/java/org/libreccm/security/RoleMembership.java index 81a5e3979..0a1e65ad5 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RoleMembership.java +++ b/ccm-core/src/main/java/org/libreccm/security/RoleMembership.java @@ -22,16 +22,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIdentityReference; import org.libreccm.portation.Portable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; +import javax.persistence.*; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; diff --git a/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java b/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java index ec0752d53..db1993097 100644 --- a/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/RoleRepository.java @@ -18,19 +18,15 @@ */ package org.libreccm.security; -import java.util.List; - -import javax.enterprise.context.RequestScoped; -import javax.persistence.TypedQuery; - import org.libreccm.core.AbstractEntityRepository; +import org.libreccm.core.CcmObject; import org.libreccm.core.CoreConstants; +import javax.enterprise.context.RequestScoped; import javax.persistence.NoResultException; +import javax.persistence.TypedQuery; import javax.transaction.Transactional; - -import org.libreccm.core.CcmObject; - +import java.util.List; import java.util.Optional; /** diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java b/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java index 839a7bc85..f1b20da68 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java +++ b/ccm-core/src/main/java/org/libreccm/security/SecuredHelper.java @@ -18,13 +18,13 @@ */ package org.libreccm.security; -import static org.libreccm.core.CoreConstants.*; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.core.CcmObject; +import static org.libreccm.core.CoreConstants.ACCESS_DENIED; + /** * A helper class used by the secured collections provided by this package. * diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredList.java b/ccm-core/src/main/java/org/libreccm/security/SecuredList.java index 2c1049671..fca8cfea6 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SecuredList.java +++ b/ccm-core/src/main/java/org/libreccm/security/SecuredList.java @@ -18,10 +18,11 @@ */ package org.libreccm.security; +import org.libreccm.core.CcmObject; + import java.util.Collection; import java.util.List; import java.util.ListIterator; -import org.libreccm.core.CcmObject; /** * A decorator for {@link List}s of {@link CcmObject}s which checks if the diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredListIterator.java b/ccm-core/src/main/java/org/libreccm/security/SecuredListIterator.java index 993a792c3..aa29b6be4 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SecuredListIterator.java +++ b/ccm-core/src/main/java/org/libreccm/security/SecuredListIterator.java @@ -18,10 +18,10 @@ */ package org.libreccm.security; -import java.util.ListIterator; - import org.libreccm.core.CcmObject; +import java.util.ListIterator; + /** * A decorator for {@link ListIterator} which checks if the current subject is * permitted to access an object from the list the iterator iterates over before diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredNavigableSet.java b/ccm-core/src/main/java/org/libreccm/security/SecuredNavigableSet.java index 39a5dbf39..1ece5474d 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SecuredNavigableSet.java +++ b/ccm-core/src/main/java/org/libreccm/security/SecuredNavigableSet.java @@ -18,9 +18,10 @@ */ package org.libreccm.security; +import org.libreccm.core.CcmObject; + import java.util.Iterator; import java.util.NavigableSet; -import org.libreccm.core.CcmObject; /** * A decorated for {@link NavigableSet} which checks if the current subject is diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredSet.java b/ccm-core/src/main/java/org/libreccm/security/SecuredSet.java index 15533abad..24b78eee4 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SecuredSet.java +++ b/ccm-core/src/main/java/org/libreccm/security/SecuredSet.java @@ -18,9 +18,10 @@ */ package org.libreccm.security; -import java.util.Set; import org.libreccm.core.CcmObject; +import java.util.Set; + /** * A decorator for {@link Set} which checks if the current subject is permitted * to access the objects from the decorated set before returning them. diff --git a/ccm-core/src/main/java/org/libreccm/security/SecuredSortedSet.java b/ccm-core/src/main/java/org/libreccm/security/SecuredSortedSet.java index 43846fe95..a75af1a32 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SecuredSortedSet.java +++ b/ccm-core/src/main/java/org/libreccm/security/SecuredSortedSet.java @@ -18,11 +18,11 @@ */ package org.libreccm.security; +import org.libreccm.core.CcmObject; + import java.util.Comparator; import java.util.SortedSet; -import org.libreccm.core.CcmObject; - /** * Decorator for {@link SortedSet} which checks if the current subject is * permitted to access the objects from the decorated sorted set before diff --git a/ccm-core/src/main/java/org/libreccm/security/Shiro.java b/ccm-core/src/main/java/org/libreccm/security/Shiro.java index ba30d5451..889b8240a 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Shiro.java +++ b/ccm-core/src/main/java/org/libreccm/security/Shiro.java @@ -19,17 +19,6 @@ package org.libreccm.security; import com.arsdigita.kernel.KernelConfig; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.inject.Inject; -import javax.inject.Named; - import org.apache.shiro.SecurityUtils; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.session.Session; @@ -37,6 +26,14 @@ import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.SimplePrincipalCollection; import org.apache.shiro.subject.Subject; +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.inject.Produces; +import javax.inject.Inject; +import javax.inject.Named; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; import java.util.Optional; /** diff --git a/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java b/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java index c48fd8c31..bab83d242 100644 --- a/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java +++ b/ccm-core/src/main/java/org/libreccm/security/SystemUsersSetup.java @@ -25,12 +25,11 @@ import org.libreccm.core.CoreConstants; import org.libreccm.core.EmailAddress; import org.libreccm.modules.InstallEvent; +import javax.persistence.EntityManager; import java.io.IOException; import java.io.InputStream; import java.util.Properties; -import javax.persistence.EntityManager; - /** * Class used by {@link CcmCore#install(org.libreccm.modules.InstallEvent)} to * create the system users. diff --git a/ccm-core/src/main/java/org/libreccm/security/User.java b/ccm-core/src/main/java/org/libreccm/security/User.java index afacab7f6..21f3604b1 100644 --- a/ccm-core/src/main/java/org/libreccm/security/User.java +++ b/ccm-core/src/main/java/org/libreccm/security/User.java @@ -20,42 +20,15 @@ package org.libreccm.security; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.ObjectIdGenerators; import org.libreccm.core.EmailAddress; import org.libreccm.portation.Portable; -import javax.persistence.AssociationOverride; -import javax.persistence.CollectionTable; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Embedded; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.NamedAttributeNode; -import javax.persistence.NamedEntityGraph; -import javax.persistence.NamedEntityGraphs; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.NamedSubgraph; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import javax.persistence.*; import javax.validation.constraints.NotNull; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.*; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import static org.libreccm.core.CoreConstants.CORE_XML_NS; import static org.libreccm.core.CoreConstants.DB_SCHEMA; diff --git a/ccm-core/src/main/java/org/libreccm/security/UserManager.java b/ccm-core/src/main/java/org/libreccm/security/UserManager.java index d4b5fd4fa..82ae66ba4 100644 --- a/ccm-core/src/main/java/org/libreccm/security/UserManager.java +++ b/ccm-core/src/main/java/org/libreccm/security/UserManager.java @@ -20,13 +20,6 @@ package org.libreccm.security; import com.arsdigita.kernel.KernelConfig; import com.arsdigita.kernel.security.SecurityConfig; - -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; -import javax.validation.executable.ValidateOnExecution; - import org.apache.shiro.authc.credential.PasswordMatcher; import org.apache.shiro.authc.credential.PasswordService; import org.apache.shiro.crypto.SecureRandomNumberGenerator; @@ -41,7 +34,11 @@ import org.libreccm.configuration.ConfigurationManager; import org.libreccm.core.CoreConstants; import org.libreccm.core.EmailAddress; +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; import javax.transaction.Transactional; +import javax.validation.constraints.NotNull; +import javax.validation.executable.ValidateOnExecution; /** * Provides various operations for user objects. diff --git a/ccm-core/src/main/java/org/libreccm/security/UserRepository.java b/ccm-core/src/main/java/org/libreccm/security/UserRepository.java index c61c870ea..ba1af55c5 100644 --- a/ccm-core/src/main/java/org/libreccm/security/UserRepository.java +++ b/ccm-core/src/main/java/org/libreccm/security/UserRepository.java @@ -21,13 +21,12 @@ package org.libreccm.security; import org.libreccm.core.AbstractEntityRepository; import org.libreccm.core.CoreConstants; -import java.util.List; -import java.util.Optional; - import javax.enterprise.context.RequestScoped; import javax.persistence.EntityGraph; import javax.persistence.TypedQuery; import javax.transaction.Transactional; +import java.util.List; +import java.util.Optional; /** * Repository for user objects. diff --git a/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java b/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java index 9255173c8..cfed6282b 100644 --- a/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java +++ b/ccm-core/src/main/java/org/libreccm/web/AbstractCcmApplicationSetup.java @@ -26,12 +26,11 @@ import org.libreccm.modules.InstallEvent; import org.libreccm.security.ApplicationRoleSetup; import org.libreccm.security.Role; +import javax.persistence.EntityManager; import java.io.IOException; import java.io.InputStream; import java.util.Properties; -import javax.persistence.EntityManager; - /** * * @author Jens Pelzetter diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java index 0d05f9652..059a4cc85 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java @@ -29,14 +29,6 @@ import org.libreccm.modules.Module; import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.RequiresPrivilege; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.MissingResourceException; -import java.util.ResourceBundle; -import java.util.ServiceLoader; - import javax.annotation.PostConstruct; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; @@ -45,6 +37,7 @@ import javax.persistence.TypedQuery; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.transaction.Transactional; +import java.util.*; /** * diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java index 35d01cd9d..07006db72 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationRepository.java @@ -23,13 +23,12 @@ import org.libreccm.core.CoreConstants; import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.RequiresPrivilege; -import java.util.List; -import java.util.Optional; - import javax.enterprise.context.RequestScoped; import javax.persistence.NoResultException; import javax.persistence.TypedQuery; import javax.transaction.Transactional; +import java.util.List; +import java.util.Optional; /** * @@ -87,6 +86,26 @@ public class ApplicationRepository return query.getResultList(); } + + /** + * Finds a {@link CcmApplication} by its uuid. + * + * @param uuid The uuid of the item to find + * + * @return An optional either with the found item or empty + */ + public Optional findByUuid(final String uuid) { + final TypedQuery query = getEntityManager() + .createNamedQuery("CcmApplication.findByUuid", + CcmApplication.class); + query.setParameter("uuid", uuid); + + try { + return Optional.of(query.getSingleResult()); + } catch (NoResultException ex) { + return Optional.empty(); + } + } @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java index 9db7cd54f..ef11c6a56 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java @@ -23,13 +23,11 @@ import com.arsdigita.ui.admin.applications.AbstractAppSettingsPane; import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm; import com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import javax.servlet.annotation.WebServlet; - -import javax.servlet.http.HttpServlet; - /** * * @author Jens Pelzetter diff --git a/ccm-core/src/main/java/org/libreccm/web/CcmApplication.java b/ccm-core/src/main/java/org/libreccm/web/CcmApplication.java index 55807a739..b71adee1f 100644 --- a/ccm-core/src/main/java/org/libreccm/web/CcmApplication.java +++ b/ccm-core/src/main/java/org/libreccm/web/CcmApplication.java @@ -18,34 +18,27 @@ */ package org.libreccm.web; -import static org.libreccm.web.WebConstants.*; - +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; import org.libreccm.categorization.Domain; import org.libreccm.categorization.DomainManager; import org.libreccm.categorization.DomainOwnership; - -import static org.libreccm.core.CoreConstants.*; - import org.libreccm.core.Resource; +import org.libreccm.portation.Portable; +import javax.persistence.*; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.NamedAttributeNode; -import javax.persistence.NamedEntityGraph; -import javax.persistence.NamedEntityGraphs; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; +import static org.libreccm.core.CoreConstants.DB_SCHEMA; +import static org.libreccm.web.WebConstants.WEB_XML_NS; /** * @@ -59,7 +52,10 @@ import javax.xml.bind.annotation.XmlRootElement; + "WHERE a.primaryUrl = :path"), @NamedQuery(name = "CcmApplication.findByType", query = "SELECT A FROM CcmApplication a " - + "WHERE a.applicationType = :type") + + "WHERE a.applicationType = :type"), + @NamedQuery(name = "CcmApplication.findByUuid", + query = "SELECT a FROM CcmApplication a " + + "WHERE a.uuid = :uuid") }) @NamedEntityGraphs({ @NamedEntityGraph( @@ -69,7 +65,10 @@ import javax.xml.bind.annotation.XmlRootElement; }) }) @XmlRootElement(name = "application", namespace = WEB_XML_NS) -public class CcmApplication extends Resource implements Serializable { +@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, + resolver = CcmApplicationIdResolver.class, + property = "uuid") +public class CcmApplication extends Resource implements Serializable, Portable { private static final long serialVersionUID = 9205226362368890784L; @@ -91,6 +90,7 @@ public class CcmApplication extends Resource implements Serializable { @OneToMany(mappedBy = "owner") @XmlElementWrapper(name = "domains", namespace = WEB_XML_NS) @XmlElement(name = "domain", namespace = WEB_XML_NS) + @JsonIgnore private List domains; public CcmApplication() { diff --git a/ccm-core/src/main/java/org/libreccm/web/CcmApplicationIdResolver.java b/ccm-core/src/main/java/org/libreccm/web/CcmApplicationIdResolver.java new file mode 100644 index 000000000..75c817fbc --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/web/CcmApplicationIdResolver.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015 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.web; + +import com.fasterxml.jackson.annotation.ObjectIdGenerator; +import com.fasterxml.jackson.annotation.ObjectIdResolver; +import org.libreccm.cdi.utils.CdiUtil; + +/** + * @author