This section highlights the latest and greatest stable version of OACC available.
Release date: 2018-10-11
Summary of changes in this release:
authenticate() method that only takes credentials (it does not require an explicit Resource argument) to support authentication protocols with encrypted tokens that contain the necessary information to resolve the resource; Note that the built-in password-based authentication provider does not support token-based authentication, and that a custom provider must return the associated resource to the OACC contextSummary of API changes:
Resource parameter to identify who is authenticating. Now OACC supports a method that only requires Credentials, for the case when an encrypted auth-token contains the information to resolve the resource to be authenticated.Bug fixes:
Use the following dependency to include this release of OACC into your Maven project:
<dependency>
  <groupId>com.acciente.oacc</groupId>
  <artifactId>acciente-oacc</artifactId>
  <version>2.0.0</version>
</dependency>
| File | Description | 
|---|---|
| acciente-oacc-2.0.0-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-sources.jar | This file contains the OACC API sources | 
| v2.0.0.zip | This file contains all OACC database setup scripts as a .zip | 
| v2.0.0.tar.gz | This file contains all OACC database setup scripts as a .tar.gz | 
This section contains links to download previous versions of OACC.
Release date: 2017-06-07
Summary of changes in this release:
SQLAccessControlContext that did not specify a SQLPasswordAuthenticationProviderPasswordEncryptor parameter to SQLAccessControlContext factory methods that did not already take a SQLPasswordAuthenticationProviderSQLAccessControlSystemInitializer now requires a new -pwdencryptor command line argumentLegacyJasyptPasswordEncryptor (formerly known as StrongCleanablePasswordEncryptor)CleanablePasswordEncryptor interface to PasswordEncryptorSQLAccessControlSystemInitializer command line tool now correctly accepts not specifying dbSchemaSQLAccessControlSystemInitializer optional for databases that do not require them, and improves usage infoResource's toString() to output a more accurate and future-proof representationtoString() on all permission implementations for simplicity and consistencyequals() and hashCode() methods to the PasswordCredentials implementationSQLAccessControlSystemInitializer to delegate to AuthenticationProvider and to use CredentialsSQLPasswordAuthenticationProvider's serialVersionUID due to serialization-incompatible structural changesSQLDialect parameter in the SQLPasswordAuthenticationProvider constructorspom.xml, and adds the PostgreSQL JDBC driver (test scope)pom.xml and updates licensing-related informationSummary of API changes:
PasswordEncryptor interface: Jasypt and BCrypt.StrongCleanablePasswordEncryptor to LegacyJasyptPasswordEncryptorCleanablePasswordEncryptor interface to PasswordEncryptorSQLPasswordAuthenticationProvider's serialVersionUID due to serialization-incompatible structural changesSQLAccessControlContextFactory that take a PasswordEncryptor parameterSQLAccessControlSystemInitializer now requires a new -pwdencryptor command line argument, but several command line arguments become optional for databases that do not require themcreateResource() with externalId String parametersetExternalId() methodexternalId to Resource and modifies getId() to return Long instead of a primitiveResource's toString() to output a more accurate and future-proof representationtoString() on all permission implementations for simplicity and consistencyequals() and hashCode() methods to the PasswordCredentials implementationSQLAccessControlContext that did not specify a SQLPasswordAuthenticationProviderLegacyJasyptPasswordEncryptor (formerly known as StrongCleanablePasswordEncryptor)Bug fixes:
Use the following dependency to include this release of OACC into your Maven project:
<dependency>
  <groupId>com.acciente.oacc</groupId>
  <artifactId>acciente-oacc</artifactId>
  <version>2.0.0-rc.8</version>
</dependency>
| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.8-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.8-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.8-sources.jar | This file contains the OACC API sources | 
| v2.0.0-rc.8.zip | This file contains all OACC database setup scripts as a .zip | 
| v2.0.0-rc.8.tar.gz | This file contains all OACC database setup scripts as a .tar.gz | 
Release date: 2016-02-15
Summary of changes in this release:
databaseName property to upper case in MySQL test configuration, to be consistent with the MySQL DDL scripts in oacc-dbSummary of API changes:
IllegalArgumentException if the parameter was nullBug fixes:
Use the following dependency to include this release of OACC into your Maven project:
<dependency>
  <groupId>com.acciente.oacc</groupId>
  <artifactId>acciente-oacc</artifactId>
  <version>2.0.0-rc.7</version>
</dependency>
| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.7-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.7-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.7-sources.jar | This file contains the OACC API sources | 
| v2.0.0-rc.7.zip | This file contains all OACC database setup scripts as a .zip | 
| v2.0.0-rc.7.tar.gz | This file contains all OACC database setup scripts as a .tar.gz | 
Release date: 2016-01-11
Summary of changes in this release:
preSerialize() methodsequals() and hashCode() of OACC's Resource implementationgetAuthenticatedResource() and getSessionResource() to return lazily-cached defensive copies of the session variablesSummary of API changes:
transientpreSerialize() methods because unserializable fields are now marked transientBug fixes:
equals() and hashCode() of OACC's Resource implementation no longer can produce NullPointerException when resource was created without a resourceId| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.6-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.6-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.6-sources.jar | This file contains the OACC API sources | 
| v2.0.0-rc.6.zip | This file contains all OACC database setup scripts as a .zip | 
| v2.0.0-rc.6.tar.gz | This file contains all OACC database setup scripts as a .tar.gz | 
Release date: 2015-11-17
Summary of changes in this release:
externalId to Resource and modifies getId() to return Long instead of a primitiveexternalId identifiergetInstance() permission factory methods that take a boolean indicating the grant option and replaces them with dedicated getInstanceWithGrantOption() methodswithGrant in all permissions and replaces it with withGrantOption for claritySummary of API changes:
createResource() with externalId String parametersetExternalId() methodexternalId to Resource and modifies getId() to return Long instead of a primitivewithGrant in all permission objects and replaces it with withGrantOption for claritygetInstance() permission factory methods that take a boolean to indicate the grant option and replaces them with dedicated getInstanceWithGrantOption() methods| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.5-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.5-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.5-sources.jar | This file contains the OACC API sources | 
| v2.0.0-rc.5.zip | This file contains all OACC database setup scripts as a .zip | 
| v2.0.0-rc.5.tar.gz | This file contains all OACC database setup scripts as a .tar.gz | 
Release date: 2015-09-29
Summary of changes in this release:
SQLProfile and replaces SQLDialect as the parameter to instantiate a SQLAccessControlContextSummary of API changes:
SQLProfile class instead of the SQLDialect enum when getting an AccessControlContext from the SQLAccessControlContextFactory, to account for the aforementioned database features supported by the underlying database systemBug fixes:
getResourcesByPermission() and getResourcesByPermissionAndDomain() methods did not take into account global system permissions that are inherited from a domain| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.4-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.4-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.4-sources.jar | This file contains the OACC API sources | 
| v2.0.0-rc.4.zip | This file contains all OACC database setup scripts as a .zip | 
| v2.0.0-rc.4.tar.gz | This file contains all OACC database setup scripts as a .tar.gz | 
Release date: 2015-07-14
Summary of changes in this release:
StrongCleanablePasswordEncryptor with checks for null argumentsSummary of API changes:
grant and revoke methods for each permission type, which allow to add or remove one (or more) permissions from the set of existing direct permissions, respectivelydeleteResource() method that will perform a cascading delete of a resource from the security graphdeleteDomain() method that will delete a domain and any nested child domains*QUERY system resource permissionCollections-compatible way to call the method; for this reason such methods now also have a version that takes a Set of permissions instead of the vararg patterngetResourcePermissionNames() method now includes any applicable system permissions in its result setBug fixes:
setDomainCreatePermissions() now checks for duplicate create permission with differing grant options to prevent a SQLExceptionsetResourceCreatePermissions() now checks for duplicate *CREATE permission with differing grant options to prevent a SQLException| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.3-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.3-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.3-sources.jar | This file contains the OACC API sources | 
Release date: 2015-03-23
Summary of changes in this release:
AccessControlException with hierarchy of unchecked exceptionsaccessorResource and/or domainName argumentsgetResourcesByResourcePermissions() to getResourcesByResourcePermissionsAndDomain() when it takes a domainName argumentdomainName parameter directly after resourceClassName parameter, where applicablegetResourcesByResourcePermissions and getAccessorResourcesByResourcePermissions) to accept multiple permissionsAuthenticationProvider.validateCredentials() for more contextSummary of API changes:
AccessControlException with more nuanced hierarchy of unchecked exceptions (including more structured and consistent exception messages)boolean instead of throwing an exception; there is a has-permission method as an alternative for each of the assert methodsdomainName parameter directly after resourceClassName parameter, where applicablegetResourcesByResourcePermissions and getAccessorResourcesByResourcePermissions) to accept permissions as (one or more) varargs, instead of just a single permissiongetResourcesByResourcePermissions-methods with a domain name argument to getResourcesByResourcePermissionsAndDomain, to distinguish them from the getResourcesByResourcePermissions-methods without a domain name argument, which return results across all domainsAuthenticationProvider.validateCredentials() for more contextBug fixes:
RESET_CREDENTIALS and IMPERSONATE are only valid for authenticatable resource classessetResourcePermissions() to prevent an INHERIT cycle from a resource to itselfcreateResource() to now assert session is authenticated when called without domain name arguments (because it will implicitly use the session resource domain in those cases)| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.2-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.2-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.2-sources.jar | This file contains the OACC API sources | 
Release date: 2015-01-09
Summary of changes in this release:
Summary of API changes:
AccessControlContext, adds get-methods for direct permissions to provide round-trip symmetry with the set-methods (enhancement #13) - previously OACC only had getters for effective permissions.
getResourcePermissions()getGlobalResourcePermissions()getResourceCreatePermissions()getDomainPermissions()getDomainCreatePermissions()ResourcePermissionsResourceCreatePermissionsDomainPermissionsDomainCreatePermissionsBug fixes:
getResourcesByResourcePermission() to check permissions to the accessor resource when the accessor resource is not identical to the session resourcegetResourcesByResourcePermission() to not check permissions to the accessor resource when it is identical to the session resourceimpersonate() to explicitly use the authenticated resource when checking permissions and to check for null argumentsgetDomainNameByResource() to not throw NullPointerException for non-existent resource referencesgetResourceClassInfo() to not throw NullPointerException for non-existent resource class referencesassertResourcePermission() now takes withGrant attribute into account when asserting permissionassertGlobalResourcePermission() now takes withGrant attribute into account when asserting permissionassertPostCreateResourcePermission() now takes withGrant attribute into account when asserting permissionsetCredentials() now allows the authenticated resource to set its credentials without requiring explicit permissionsgetAccessorResourcesByResourcePermission() to be whitespace consistentgetResourcePermissionNames() to be whitespace consistentassertPostCreateResourcePermission() to be whitespace consistentsetGlobalResourcePermissions() to be whitespace consistentgetEffectiveGlobalResourcePermissions() to be whitespace consistentgetEffectiveResourceCreatePermissions() to be whitespace consistentgetEffectiveDomainPermissions() to be whitespace consistentcreateDomain() for child domains to be whitespace consistentgetResourcesByResourcePermission() to be whitespace consistentsetDomainCreatePermissions() no longer checks grant permissions on permissions that are not being changedsetDomainPermissions() no longer checks grant permissions on permissions that are not being changedsetGlobalResourcePermissions() no longer checks grant permissions on permissions that are not being changed and correctly handles up/downgrade of permissions with grantsetResourceCreatePermissions() no longer checks grant permissions on permissions that are not being changed and correctly handles up/downgrade of permissions with grantsetResourceCreatePermissions() strictly validates requested create permissions against specified resource classsetResourcePermissions() no longer checks grant permissions on permissions that are not being changed and correctly handles up/downgrade of permissions with grantsetResourcePermissions() no longer checks grant permissions on permissions that are not being changed and only requires the granting privileges that are necessarygetEffectiveResourcePermissions() now includes global and domain-inherited permissions| File | Description | 
|---|---|
| acciente-oacc-2.0.0-rc.1-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-rc.1-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-rc.1-sources.jar | This file contains the OACC API sources | 
Release date: 2014-11-18
Changes in this release:
Overview:
char[] instead of String for passwordsAccessControlContext API changes:
authenticate method now takes a Credentials instance instead of a passwordauthenticate method to support authentication without providing credentials (for authentication provider that support it)setResourcePassword() to setCredentials()createAuthenticatableResource() with overloaded createResource() methodsIncludes a built-in AuthenticationProvider that provides password-based authentication, so that clients have the option to use OACC without having to implement their own authentication mechanism. Note that any passwords handled by the built-in authentication provider now use char[] exclusively, instead of String.
Bug fixes:
AccessControlContext instances to not be serializable| File | Description | 
|---|---|
| acciente-oacc-2.0.0-alpha.4-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-alpha.4-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-alpha.4-sources.jar | This file contains the OACC API sources | 
Release date: 2014-10-29
Changes in this release:
| File | Description | 
|---|---|
| acciente-oacc-2.0.0-alpha.3-jdk1_7.jar | This file contains the OACC API | 
| acciente-oacc-2.0.0-alpha.3-javadoc.jar | This file contains the OACC API Javadocs | 
| acciente-oacc-2.0.0-alpha.3-sources.jar | This file contains the OACC API sources |