### Question:
Param { @Override public String toString() { return getName() + "=" + value; } Param(final D domain, final T value); static String toSortedString(final String separator,
      final Param<?, ?>... parameters); final T getValue(); abstract String getValueString(); abstract String getName(); @Override String toString();  }### Answer:
@Test public void testAclPermissionParam() { final AclPermissionParam p = new AclPermissionParam("user::rwx,group::r--,other::rwx,user:user1:rwx"); List<AclEntry> setAclList = AclEntry.parseAclSpec("user::rwx,group::r--,other::rwx,user:user1:rwx", true); Assert.assertEquals(setAclList.toString(), p.getAclPermission(true) .toString()); new AclPermissionParam("user::rw-,group::rwx,other::rw-,user:user1:rwx"); try { new AclPermissionParam("user::rw--,group::rwx-,other::rw-"); Assert.fail(); } catch (IllegalArgumentException e) { LOG.info("EXPECTED: " + e); } new AclPermissionParam( "user::rw-,group::rwx,other::rw-,user:user1:rwx,group:group1:rwx,other::rwx,mask::rwx,default:user:user1:rwx"); try { new AclPermissionParam("user:r-,group:rwx,other:rw-"); Assert.fail(); } catch (IllegalArgumentException e) { LOG.info("EXPECTED: " + e); } try { new AclPermissionParam("default:::r-,default:group::rwx,other::rw-"); Assert.fail(); } catch (IllegalArgumentException e) { LOG.info("EXPECTED: " + e); } try { new AclPermissionParam("user:r-,group::rwx,other:rw-,mask:rw-,temp::rwx"); Assert.fail(); } catch (IllegalArgumentException e) { LOG.info("EXPECTED: " + e); } }