- Change in ccm-docrepo for compatibility with Wildfly 10
    - removed scope for hibernate libraries to provided (Wildfly provides them)
    - moved classes related to user management in ccm-core com.arsdigita.ui.admin.usersgroupsroles to subpackage
    - first part of UI for Group management for Admin application


git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3989 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2016-04-13 15:37:46 +00:00
parent b458a61aca
commit ca72a68542
22 changed files with 148 additions and 94 deletions

View File

@ -42,20 +42,24 @@
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId> <artifactId>hibernate-entitymanager</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId> <artifactId>hibernate-envers</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId> <artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-cdi</artifactId> <artifactId>hibernate-validator-cdi</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<!-- <!--

View File

@ -18,6 +18,7 @@
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles;
import com.arsdigita.ui.admin.usersgroupsroles.users.UserAdmin;
import com.arsdigita.bebop.BoxPanel; import com.arsdigita.bebop.BoxPanel;
import com.arsdigita.bebop.Component; import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
@ -29,6 +30,7 @@ import com.arsdigita.bebop.list.ListModel;
import com.arsdigita.bebop.list.ListModelBuilder; import com.arsdigita.bebop.list.ListModelBuilder;
import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.toolbox.ui.LayoutPanel; import com.arsdigita.toolbox.ui.LayoutPanel;
import com.arsdigita.ui.admin.usersgroupsroles.groups.GroupAdmin;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
import com.arsdigita.util.LockableImpl; import com.arsdigita.util.LockableImpl;
@ -63,8 +65,8 @@ public class UsersGroupsRolesTab extends LayoutPanel {
// final BoxPanel usersPanel = new BoxPanel(); // final BoxPanel usersPanel = new BoxPanel();
// usersPanel.add(new Label("Users Panel")); // usersPanel.add(new Label("Users Panel"));
final BoxPanel groupsPanel = new BoxPanel(); // final BoxPanel groupsPanel = new BoxPanel();
groupsPanel.add(new Label("Groups Panel")); // groupsPanel.add(new Label("Groups Panel"));
final BoxPanel rolesPanel = new BoxPanel(); final BoxPanel rolesPanel = new BoxPanel();
rolesPanel.add(new Label("Roles Panel")); rolesPanel.add(new Label("Roles Panel"));
@ -80,7 +82,7 @@ public class UsersGroupsRolesTab extends LayoutPanel {
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"ui.admin.users_groups_roles.groups.title", "ui.admin.users_groups_roles.groups.title",
ADMIN_BUNDLE)), ADMIN_BUNDLE)),
groupsPanel, new GroupAdmin(),
body); body);
addSection( addSection(
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.ActionLink; import com.arsdigita.bebop.ActionLink;
import com.arsdigita.bebop.BoxPanel; import com.arsdigita.bebop.BoxPanel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.table.TableModel; import com.arsdigita.bebop.table.TableModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.ParameterSingleSelectionModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.table.TableModel; import com.arsdigita.bebop.table.TableModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.ParameterSingleSelectionModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.table.TableModel; import com.arsdigita.bebop.table.TableModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.ParameterSingleSelectionModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.PropertySheetModel; import com.arsdigita.bebop.PropertySheetModel;
import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.globalization.GlobalizedMessage;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.ParameterSingleSelectionModel;

View File

@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA * MA 02110-1301 USA
*/ */
package com.arsdigita.ui.admin.usersgroupsroles; package com.arsdigita.ui.admin.usersgroupsroles.users;
import com.arsdigita.bebop.Component; import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink; import com.arsdigita.bebop.ControlLink;
@ -205,7 +205,7 @@ public class UsersTable extends Table {
return user.getName(); return user.getName();
default: default:
throw new IllegalArgumentException( throw new IllegalArgumentException(
"No a valid column index."); "Not a valid column index.");
} }
} }

View File

@ -54,30 +54,34 @@ import javax.xml.bind.annotation.XmlRootElement;
@Table(name = "GROUPS", schema = DB_SCHEMA) @Table(name = "GROUPS", schema = DB_SCHEMA)
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "Group.findByName", @NamedQuery(name = "Group.findByName",
query = "SELECT g FROM Group g WHERE g.name = :name"), query = "SELECT g FROM Group g WHERE g.name = :name "
+ "ORDER BY g.name"),
@NamedQuery(name = "Group.searchByName", @NamedQuery(name = "Group.searchByName",
query = "SELECT g FROM Group g " query = "SELECT g FROM Group g "
+ "WHERE LOWER(g.name) LIKE '%:name%'") + "WHERE LOWER(g.name) LIKE '%:name%' "
+ "ORDER BY g.name"),
@NamedQuery(name = "Group.findAllOrderedByGroupName",
query = "SELECT g FROM Group g ORDER BY g.name")
}) })
@NamedEntityGraphs({ @NamedEntityGraphs({
@NamedEntityGraph( @NamedEntityGraph(
name = "Group.withMembersAndRoleMemberships", name = "Group.withMembersAndRoleMemberships",
attributeNodes = { attributeNodes = {
@NamedAttributeNode(value = "memberships"), @NamedAttributeNode(value = "memberships"),
@NamedAttributeNode(value = "roleMemberships", @NamedAttributeNode(value = "roleMemberships",
subgraph = "role")}, subgraph = "role")},
subgraphs = { subgraphs = {
@NamedSubgraph( @NamedSubgraph(
name = "role", name = "role",
attributeNodes = { attributeNodes = {
@NamedAttributeNode(value = "role", @NamedAttributeNode(value = "role",
subgraph = "permissions") subgraph = "permissions")
}), }),
@NamedSubgraph( @NamedSubgraph(
name = "permissions", name = "permissions",
attributeNodes = { attributeNodes = {
@NamedAttributeNode(value = "permissions")}) @NamedAttributeNode(value = "permissions")})
}) })
}) })
@DefaultEntityGraph("Group.withMembersAndRoleMemberships") @DefaultEntityGraph("Group.withMembersAndRoleMemberships")
@XmlRootElement(name = "user-group", namespace = CORE_XML_NS) @XmlRootElement(name = "user-group", namespace = CORE_XML_NS)

View File

@ -81,4 +81,11 @@ public class GroupRepository extends AbstractEntityRepository<Long, Group> {
return query.getResultList(); return query.getResultList();
} }
public List<Group> findAllOrderedByGroupName() {
final TypedQuery<Group> query = getEntityManager().createNamedQuery(
"Group.findAllOrderedByGroupName", Group.class);
return query.getResultList();
}
} }

View File

@ -64,46 +64,54 @@ import javax.xml.bind.annotation.XmlTransient;
@Table(name = "USERS", schema = DB_SCHEMA) @Table(name = "USERS", schema = DB_SCHEMA)
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "User.findByName", @NamedQuery(name = "User.findByName",
query = "SELECT u FROM User u WHERE u.name = :name"), query = "SELECT u FROM User u WHERE u.name = :name "
+ "ORDER BY u.name, "
+ " u.familyName, "
+ " u.givenName, "
+ " u.primaryEmailAddress.address"),
@NamedQuery(name = "User.findByEmailAddress", @NamedQuery(name = "User.findByEmailAddress",
query = "SELECT u FROM User u WHERE " query = "SELECT u FROM User u WHERE "
+ "u.primaryEmailAddress.address = :emailAddress"), + "u.primaryEmailAddress.address = :emailAddress "
+ "ORDER BY u.name, "
+ " u.familyName, "
+ " u.givenName, "
+ " u.primaryEmailAddress.address"),
@NamedQuery( @NamedQuery(
name = "User.filterByNameAndEmail", name = "User.filterByNameAndEmail",
query = "SELECT u FROM User u WHERE " query = "SELECT u FROM User u WHERE "
+ "LOWER(u.name) LIKE CONCAT(LOWER(:term), '%') " + "LOWER(u.name) LIKE CONCAT(LOWER(:term), '%') "
+ "OR LOWER(u.givenName) LIKE CONCAT(LOWER(:term), '%') " + "OR LOWER(u.givenName) LIKE CONCAT(LOWER(:term), '%') "
+ "OR LOWER(u.familyName) LIKE CONCAT(LOWER(:term), '%') " + "OR LOWER(u.familyName) LIKE CONCAT(LOWER(:term), '%') "
+ "OR LOWER(u.primaryEmailAddress.address) LIKE CONCAT('%', LOWER(:term), '%')"), + "OR LOWER(u.primaryEmailAddress.address) LIKE CONCAT('%', LOWER(:term), '%')"),
@NamedQuery( @NamedQuery(
name = "User.findAllOrderedByUsername", name = "User.findAllOrderedByUsername",
query = "SELECT u FROM User u ORDER BY u.name, " query = "SELECT u FROM User u ORDER BY u.name, "
+ " u.familyName, " + " u.familyName, "
+ " u.givenName, " + " u.givenName, "
+ " u.primaryEmailAddress.address") + " u.primaryEmailAddress.address")
}) })
@NamedEntityGraphs({ @NamedEntityGraphs({
@NamedEntityGraph( @NamedEntityGraph(
name = "User.withGroupAndRoleMemberships", name = "User.withGroupAndRoleMemberships",
attributeNodes = { attributeNodes = {
@NamedAttributeNode( @NamedAttributeNode(
value = "groupMemberships"), value = "groupMemberships"),
@NamedAttributeNode( @NamedAttributeNode(
value = "roleMemberships", value = "roleMemberships",
subgraph = "role")}, subgraph = "role")},
subgraphs = { subgraphs = {
@NamedSubgraph( @NamedSubgraph(
name = "role", name = "role",
attributeNodes = { attributeNodes = {
@NamedAttributeNode(value = "role", @NamedAttributeNode(value = "role",
subgraph = "permissions") subgraph = "permissions")
}), }),
@NamedSubgraph( @NamedSubgraph(
name = "permissions", name = "permissions",
attributeNodes = { attributeNodes = {
@NamedAttributeNode(value = "permissions")} @NamedAttributeNode(value = "permissions")}
) )
}) })
}) })
@DefaultEntityGraph("User.withGroupAndRoleMemberships") @DefaultEntityGraph("User.withGroupAndRoleMemberships")
@XmlRootElement(name = "user", namespace = CORE_XML_NS) @XmlRootElement(name = "user", namespace = CORE_XML_NS)
@ -133,12 +141,12 @@ public class User extends Party implements Serializable {
*/ */
@Embedded @Embedded
@AssociationOverride( @AssociationOverride(
name = "USER_PRIMARY_EMAIL_ADDRESSES", name = "USER_PRIMARY_EMAIL_ADDRESSES",
joinTable = @JoinTable(name = "USER_PRIMARY_EMAIL_ADDRESSES", joinTable = @JoinTable(name = "USER_PRIMARY_EMAIL_ADDRESSES",
schema = DB_SCHEMA, schema = DB_SCHEMA,
joinColumns = { joinColumns = {
@JoinColumn(name = "USER_ID") @JoinColumn(name = "USER_ID")
})) }))
@NotNull @NotNull
@XmlElement(name = "primary-email-address", namespace = CORE_XML_NS) @XmlElement(name = "primary-email-address", namespace = CORE_XML_NS)
private EmailAddress primaryEmailAddress; private EmailAddress primaryEmailAddress;
@ -267,7 +275,7 @@ public class User extends Party implements Serializable {
} }
protected void setGroupMemberships( protected void setGroupMemberships(
final Set<GroupMembership> groupMemberships) { final Set<GroupMembership> groupMemberships) {
this.groupMemberships = groupMemberships; this.groupMemberships = groupMemberships;
} }
@ -276,7 +284,7 @@ public class User extends Party implements Serializable {
} }
protected void removeGroupMembership( protected void removeGroupMembership(
final GroupMembership groupMembership) { final GroupMembership groupMembership) {
groupMemberships.remove(groupMembership); groupMemberships.remove(groupMembership);
} }
@ -324,19 +332,19 @@ public class User extends Party implements Serializable {
@Override @Override
public String toString(final String data) { public String toString(final String data) {
return super.toString(String.format( return super.toString(String.format(
", givenName = \"%s\", " ", givenName = \"%s\", "
+ "familyName = \"%s\", " + "familyName = \"%s\", "
+ "primaryEmailAddress = { %s }, " + "primaryEmailAddress = { %s }, "
+ "emailAddresses = { %s }, " + "emailAddresses = { %s }, "
+ "banned = %b, " + "banned = %b, "
+ "passwordResetRequired = %b%s", + "passwordResetRequired = %b%s",
givenName, givenName,
familyName, familyName,
Objects.toString(primaryEmailAddress), Objects.toString(primaryEmailAddress),
Objects.toString(emailAddresses), Objects.toString(emailAddresses),
banned, banned,
passwordResetRequired, passwordResetRequired,
data data
)); ));
} }

View File

@ -239,3 +239,9 @@ ui.admin.user.edit_group_memberships=Edit group memberships for user {0}
ui.admin.user.edit_group_memberships.back_to_user_details=Back to user details ui.admin.user.edit_group_memberships.back_to_user_details=Back to user details
ui.admin.user_edit_role_memberships=Edit role memberships for user {0} ui.admin.user_edit_role_memberships=Edit role memberships for user {0}
ui.admin.user.edit_role_memberships.back_to_user_details=Back to user details ui.admin.user.edit_role_memberships.back_to_user_details=Back to user details
ui.admin.groups.table.filter.term=Filter groups
ui.admin.groups.filter.submit=Apply
ui.admin.groups.table.filter.clear=Clear filter
ui.admin.groups.table.no_groups=No groups available
ui.admin.groups.table.name=Name
ui.admin.groups.table.delete=Delete

View File

@ -239,3 +239,9 @@ ui.admin.user.edit_group_memberships=Gruppen f\u00fcr Benutzer {0} bearbeiten
ui.admin.user.edit_group_memberships.back_to_user_details=Zur\u00fcck zu den Eigenschaften des Benutzers ui.admin.user.edit_group_memberships.back_to_user_details=Zur\u00fcck zu den Eigenschaften des Benutzers
ui.admin.user_edit_role_memberships=Rollen f\u00fcr Benutzer {0} bearbeiten ui.admin.user_edit_role_memberships=Rollen f\u00fcr Benutzer {0} bearbeiten
ui.admin.user.edit_role_memberships.back_to_user_details=Zur\u00fcck zu den Eigenschaften des Benutzers ui.admin.user.edit_role_memberships.back_to_user_details=Zur\u00fcck zu den Eigenschaften des Benutzers
ui.admin.groups.table.filter.term=Gruppen filtern
ui.admin.groups.filter.submit=Anwenden
ui.admin.groups.table.filter.clear=Filter zur\u00fccksetzen
ui.admin.groups.table.no_groups=Keine Gruppen gefunden
ui.admin.groups.table.name=Name
ui.admin.groups.table.delete=Delete

View File

@ -212,3 +212,9 @@ ui.admin.user.edit_group_memberships=Edit group memberships for user {0}
ui.admin.user.edit_group_memberships.back_to_user_details=Back to user details ui.admin.user.edit_group_memberships.back_to_user_details=Back to user details
ui.admin.user_edit_role_memberships=Edit role memberships for user {0} ui.admin.user_edit_role_memberships=Edit role memberships for user {0}
ui.admin.user.edit_role_memberships.back_to_user_details=Back to user details ui.admin.user.edit_role_memberships.back_to_user_details=Back to user details
ui.admin.groups.table.filter.term=Filter groups
ui.admin.groups.filter.submit=Apply
ui.admin.groups.table.filter.clear=Clear filter
ui.admin.groups.table.no_groups=No groups available
ui.admin.groups.table.name=Name
ui.admin.groups.table.delete=Delete

View File

@ -203,3 +203,9 @@ ui.admin.user.edit_group_memberships=Edit group memberships for user {0}
ui.admin.user.edit_group_memberships.back_to_user_details=Back to user details ui.admin.user.edit_group_memberships.back_to_user_details=Back to user details
ui.admin.user_edit_role_memberships=Edit role memberships for user {0} ui.admin.user_edit_role_memberships=Edit role memberships for user {0}
ui.admin.user.edit_role_memberships.back_to_user_details=Back to user details ui.admin.user.edit_role_memberships.back_to_user_details=Back to user details
ui.admin.groups.table.filter.term=Filter groups
ui.admin.groups.filter.submit=Apply
ui.admin.groups.table.filter.clear=Clear filter
ui.admin.groups.table.no_groups=No groups available
ui.admin.groups.table.name=Name
ui.admin.groups.table.delete=Delete

View File

@ -48,11 +48,13 @@
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId> <artifactId>hibernate-entitymanager</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId> <artifactId>hibernate-validator</artifactId>
<scope>provided</scope>
</dependency> </dependency>
<!-- Dependencies for log4j 2 including adapter for the log4j 1.2 API --> <!-- Dependencies for log4j 2 including adapter for the log4j 1.2 API -->

View File

@ -36,21 +36,13 @@ import org.junit.runner.RunWith;
import org.libreccm.docrepo.File; import org.libreccm.docrepo.File;
import org.libreccm.docrepo.FileMarshaller; import org.libreccm.docrepo.FileMarshaller;
import org.libreccm.docrepo.FileRepository; import org.libreccm.docrepo.FileRepository;
import org.libreccm.portation.Format;
import org.libreccm.portation.Marshals; import org.libreccm.portation.Marshals;
import org.libreccm.tests.categories.IntegrationTest; import org.libreccm.tests.categories.IntegrationTest;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
/** /**
* *
@ -160,6 +152,8 @@ public class FilePortationTest {
.getPackage()) .getPackage())
.addAsLibraries(libs) .addAsLibraries(libs)
.addAsLibraries(coreLibs) .addAsLibraries(coreLibs)
.addAsResource("META-INF/jboss-deployment-structure.xml",
"META-INF/jboss-deployment-structure.xml")
.addAsResource("test-persistence.xml", "META-INF/persistence.xml") .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
.addAsWebInfResource("test-web.xml", "WEB-INF/web.xml") .addAsWebInfResource("test-web.xml", "WEB-INF/web.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml"); .addAsWebInfResource(EmptyAsset.INSTANCE, "WEB-INF/beans.xml");

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.dom4j"/>
</dependencies>
</deployment>
</jboss-deployment-structure>