CCM NG: org.libreccm.core package: Annotations for JAXB

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3462 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2015-06-05 17:59:12 +00:00
parent 1745c25dcc
commit 3019397905
13 changed files with 181 additions and 6 deletions

View File

@ -87,6 +87,19 @@
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!--<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>schemagen</id>
<goals>
<goal>schemagen</goal>
</goals>
</execution>
</executions>
</plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>

View File

@ -24,9 +24,7 @@ public abstract class AbstractEntityRepository<K, E> {
public abstract Class<E> getEntityClass();
public abstract boolean isNew(final E entity) {
}
public abstract boolean isNew(final E entity);
public void save(final E entity) {
if (isNew(entity)) {
@ -36,7 +34,7 @@ public abstract class AbstractEntityRepository<K, E> {
}
}
public List<E> findById(final K entityId) {
public E findById(final K entityId) {
return entityManager.find(getEntityClass(), entityId);
}

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import org.libreccm.categorization.Categorization;
import org.libreccm.categorization.Category;
import org.libreccm.categorization.DomainOwnership;
@ -38,6 +40,7 @@ import javax.persistence.InheritanceType;
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;
/**
@ -60,7 +63,7 @@ import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name = "ccm_objects")
@Inheritance(strategy = InheritanceType.JOINED)
@XmlRootElement(name = "ccm-object", namespace = "http://core.libreccm.org")
@XmlRootElement(name = "ccm-object", namespace = XML_NS)
//False warning (?). Because this class has been migrated from the old PDL style
//persistence system we can't yet refactor it to make PMD happy. Also I think
//this is a false warning.
@ -77,28 +80,35 @@ public class CcmObject implements Serializable {
@Id
@Column(name = "object_id")
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement(name = "object-id")
@XmlElement(name = "object-id", namespace = XML_NS)
private long objectId;
/**
* A human readable name identifying this {@code CcmObject}
*/
@Column(name = "display_name")
@XmlElement(name = "display-name", namespace = XML_NS)
private String displayName;
@OneToMany(mappedBy = "object")
@XmlElementWrapper(name = "permissions", namespace = XML_NS)
@XmlElement(name = "permission", namespace = XML_NS)
private List<Permission> permissions;
/**
* Category Domains owned by this {@code CcmObject}.
*/
@OneToMany(mappedBy = "owner")
@XmlElementWrapper(name = "domains", namespace = XML_NS)
@XmlElement(name = "domain", namespace = XML_NS)
private List<DomainOwnership> domains;
/**
* Categories which have been assigned to this {@code CcmObject}.
*/
@OneToMany(mappedBy = "categorizedObject")
@XmlElementWrapper(name = "categories", namespace = XML_NS)
@XmlElement(name = "category", namespace = XML_NS)
private List<Categorization> categories;
public CcmObject() {

View File

@ -0,0 +1,34 @@
/*
* 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;
/**
* Some constants for the Core package
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public final class CoreConstants {
private CoreConstants() {
//Nothing
}
public static final String XML_NS = "http://core.libreccm.org";
}

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
@ -26,6 +28,8 @@ import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* An embeddable entity for storing email addresses.
@ -41,19 +45,23 @@ import javax.persistence.Embeddable;
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@Embeddable
@XmlRootElement(name = "email-address", namespace = 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 = XML_NS, required = true)
@NotBlank
@Email
private String address;
@Column(name = "bouncing")
@XmlElement(name = "bouncing", namespace = XML_NS)
private boolean bouncing;
@Column(name = "verified")
@XmlElement(name = "verified", namespace = XML_NS)
private boolean verified;
public String getAddress() {

View File

@ -18,8 +18,11 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@ -27,6 +30,9 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
* An association class for the association between a group and it members.
@ -35,6 +41,8 @@ import javax.persistence.Table;
*/
@Entity
@Table(name = "group_memberships")
@XmlRootElement(name = "group-membership",
namespace = XML_NS)
public class GroupMembership implements Serializable {
private static final long serialVersionUID = 1897274442468035089L;
@ -42,12 +50,15 @@ public class GroupMembership implements Serializable {
@Id
@Column(name = "membership_id")
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement(name = "membership-id", namespace = XML_NS)
private long membershipId;
@ManyToOne
@XmlTransient
private UserGroup group;
@ManyToOne
@XmlTransient
private User user;
public long getMembershipId() {

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import java.io.Serializable;
import java.security.acl.Group;
import java.util.ArrayList;
@ -32,6 +34,9 @@ import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
/**
* Internal basic class for {@link User} and {@link Group}.
@ -40,6 +45,7 @@ import javax.validation.constraints.Size;
*/
@Entity
@Table(name = "parties")
@XmlRootElement(name = "party", namespace = XML_NS)
public class Party extends CcmObject implements Serializable {
private static final long serialVersionUID = 6303836654273293979L;
@ -49,11 +55,15 @@ public class Party extends CcmObject implements Serializable {
joinColumns = {
@JoinColumn(name = "party_id")})
@Size(min = 1)
@XmlElementWrapper(name = "email-addresses", namespace = XML_NS)
@XmlElement(name = "email-address", namespace = XML_NS)
private List<EmailAddress> emailAddresses;
@OneToMany(mappedBy = "grantee")
//Can't shorten this variable name without reducing descriptiveness
@SuppressWarnings("PMD.LongVariable")
@XmlElementWrapper(name = "granted-permissions", namespace = XML_NS)
@XmlElement(name = "granted-permission", namespace = XML_NS)
private List<Permission> grantedPermissions;
public Party() {

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
@ -33,6 +35,9 @@ import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
*
@ -44,6 +49,7 @@ import javax.persistence.TemporalType;
@SuppressWarnings({"PMD.CyclomaticComplexity",
"PMD.StdCyclomaticComplexity",
"PMD.ModifiedCyclomaticComplexity"})
@XmlRootElement(name = "permission", namespace = XML_NS)
public class Permission implements Serializable {
private static final long serialVersionUID = -2368935232499907547L;
@ -51,6 +57,7 @@ public class Permission implements Serializable {
@Id
@Column(name = "permission_id")
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement(name = "permission-id", namespace = XML_NS)
private long permissionId;
@ManyToOne
@ -59,6 +66,7 @@ public class Permission implements Serializable {
@OneToOne
@JoinColumn(name = "granted_privilege_id")
@XmlElement(name = "privilege", namespace = XML_NS)
private Privilege grantedPrivilege;
@ManyToOne
@ -67,13 +75,16 @@ public class Permission implements Serializable {
@ManyToOne
@JoinColumn(name = "creation_user_id")
@XmlElement(name = "creation-user", namespace = XML_NS)
private User creationUser;
@Column(name = "creation_date")
@Temporal(TemporalType.TIMESTAMP)
@XmlElement(name = "creation-date", namespace = XML_NS)
private Date creationDate;
@Column(name = "creation_ip")
@XmlElement(name = "creation-ip", namespace = XML_NS)
private String creationIp;
public long getPermissionId() {

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import org.hibernate.validator.constraints.NotBlank;
import java.io.Serializable;
@ -25,6 +27,8 @@ import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* An embeddable entity representing a person's name.
@ -32,25 +36,31 @@ import javax.persistence.Embeddable;
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@Embeddable
@XmlRootElement(name = "person-name", namespace = XML_NS)
public class PersonName implements Serializable {
private static final long serialVersionUID = -5805626320605809172L;
@Column(name = "title_pre", length = 512)
@XmlElement(name = "title-pre", namespace = XML_NS)
private String titlePre;
@Column(name = "given_name", length = 512)
@NotBlank
@XmlElement(name = "given-name", namespace = XML_NS)
private String givenName;
@Column(name = "middle_name", length = 512)
@XmlElement(name = "middle-name", namespace = XML_NS)
private String middleName;
@Column(name = "family_name", length = 512)
@NotBlank
@XmlElement(name = "family-name", namespace = XML_NS)
private String familyName;
@Column(name = "title_post", length = 512)
@XmlElement(name = "title-post", namespace = XML_NS)
private String titlePost;
public String getTitlePre() {

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import java.io.Serializable;
import java.util.Objects;
@ -27,6 +29,8 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
@ -34,6 +38,7 @@ import javax.persistence.Table;
*/
@Entity
@Table(name = "ccm_privileges")
@XmlRootElement(name = "privilege", namespace = XML_NS)
public class Privilege implements Serializable {
private static final long serialVersionUID = -3986038536996049440L;
@ -41,11 +46,13 @@ public class Privilege implements Serializable {
@Id
@Column(name = "privilege_id")
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement(name = "privilege-id", namespace = XML_NS)
private long privilegeId;
@Column(name = "privilege", length = 255, nullable = false)
//Field is named like this in the old PDL class, don't want to change it now
@SuppressWarnings("PMD.AvoidFieldNameMatchingTypeName")
@XmlElement(name = "privilege", namespace = XML_NS)
private String privilege;
public long getPrivilegeId() {

View File

@ -18,6 +18,8 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
import java.io.Serializable;
import java.util.Objects;
@ -37,6 +39,10 @@ import java.util.Collections;
import java.util.List;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
*
@ -44,6 +50,7 @@ import javax.persistence.OneToMany;
*/
@Entity
@Table(name = "users")
@XmlRootElement(name = "user", namespace = XML_NS)
//Supressing a few warnings from PMD because they misleading here.
//User is perfectly fine class name, and the complexity is not to high...
@SuppressWarnings({"PMD.ShortClassName",
@ -60,31 +67,41 @@ public class User extends Party implements Serializable {
joinTable = @JoinTable(name = "user_names",
joinColumns = {
@JoinColumn(name = " user_id")}))
@XmlElement(name = "person-name", namespace = XML_NS)
private PersonName name;
@Column(name = "screen_name", length = 255, nullable = false)
@NotBlank
@XmlElement(name = "screen-name", namespace = XML_NS)
private String screenName;
@Column(name = "banned")
@XmlElement(name = "banned", namespace = XML_NS)
private boolean banned;
@Column(name = "sso_login", length = 512)
@XmlElement(name = "sso-login", namespace = XML_NS)
private String ssoLogin;
@Column(name = "password", length = 2048)
@XmlTransient
private String password;
@Column(name = "salt", length = 2048)
@XmlTransient
private String salt;
@Column(name = "password_question", length = 2048)
@XmlElement(name = "password-question", namespace = XML_NS)
private String passwordQuestion;
@Column(name = "password_answer", length = 2048)
@XmlElement(name = "password-answer", namespace = XML_NS)
private String passwordAnswer;
@OneToMany(mappedBy = "user")
@XmlElementWrapper(name = "group-memberships")
@XmlElement(name = "group-membership", namespace = XML_NS)
private List<GroupMembership> groupMemberships;
public User() {

View File

@ -18,36 +18,50 @@
*/
package org.libreccm.core;
import static org.libreccm.core.CoreConstants.*;
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.OneToMany;
import javax.persistence.Table;
import org.hibernate.validator.constraints.NotBlank;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@Entity
@Table(name = "user_groups")
@XmlRootElement(name = "user-group", namespace = XML_NS)
public class UserGroup extends Party implements Serializable {
private static final long serialVersionUID = -5555063356689597270L;
@Column(name = "name", length = 512, nullable = false)
@NotBlank
@XmlElement(name = "name", namespace = XML_NS)
private String name;
@OneToMany(mappedBy = "sourceGroup")
@XmlElementWrapper(name = "roles", namespace = XML_NS)
@XmlElement(name ="role", namespace = XML_NS)
private List<Role> roles;
@OneToMany(mappedBy = "group")
@XmlElementWrapper(name = "group-memberships", namespace = XML_NS)
@XmlElement(name = "group-membership", namespace = XML_NS)
private List<GroupMembership> members;
public UserGroup() {

View File

@ -0,0 +1,32 @@
/*
* 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
*/
/**
* This package provides some base classes for LibreCCM.
*/
@XmlSchema(xmlns = {@XmlNs(prefix = "ccmcore",
namespaceURI = "http://core.libreccm.org")})
@XmlAccessorType(XmlAccessType.NONE)
package org.libreccm.core;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlSchema;