directory-fortress mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel Lécharny <elecha...@gmail.com>
Subject Re: Fortress SonarQube Code Scan Changes Break Backward Compatibility
Date Mon, 08 Jun 2015 14:43:16 GMT
Le 08/06/15 16:01, Shawn McKinney a écrit :
> Hello,
>
> For the past few weeks bugs and issues related to code quality in the fortress sub-project
have been fixed.  Much of the work has taken place in a branch as discussed by this issue:
> https://issues.apache.org/jira/browse/FC-109.
>
> A significant portion of the cleanup work involved refactoring packages to eliminate
dependency cycles.  Unfortunately, this will cause existing fortress dependent programs to
no longer compile with the latest fortress core source.  This breakage was not taken lightly.
 We pride ourselves on maintaining a stable api, one that does not change, or at least when
it does, there is a very good reason, and it has been well documented.  But, because we are
still relatively early in the adoption cycle of this project, and that a GA release is imminent,
it’s now or never.
>
> Once the merger of branch (containing sonarqube changes) occurs back to trunk (sometime
in the next 24 hours), your current fortress programs will break.  Fortunately the required
changes are superficial, related to package names, and not code semantics.  Below are the
steps to get your existing fortress dependent program back to using the latest code.  It is
likely you will only need to do #1.  Let us know if you have questions or problems with this
upgrade.
>
> Instructions to upgrade to latest fortress-core source:
>
> A. Changes to Dependent Program Code:
>
> 1. Change package name of fortress entities. 
> search and replace: import org.apache.directory.fortress.core.rbac
> with: import org.apache.directory.fortress.core.model
>
> 2. Change to use Apache Commons StringUtils (instead of fortress utility) to check for
null or empty Strings in code. 
> replace import org.apache.directory.fortress.core.util.attr.VUtil; with import org.apache.commons.collections.CollectionUtils;

> search and replace: VUtil.isNotNullOrEmpty, with: StringUtils.isNotNull
>
> 3. Change to use Apache Commons CollectionUtils (instead of fortress utility) to check
for null or empty Collections in code. 
> replace import org.apache.directory.fortress.core.util.attr.VUtil; with import org.apache.commons.collections.CollectionUtils;
> search and replace: VUtil.isNotNullOrEmpty, with: CollectionUtils.isNotEmpty
>
> (note: 2 & 3 above only need to change if using the ‘VUtil.isNotNullOrEmpty' apis
inside your code.)
>
> 4. Use factories for Manager construction. Do not construct manually
> Don’t do this: AdminMgr adminMgr = new org.apache.directory.fortress.core.impl.AdminMgrImpl();
> Do this: AdminMgr adminMgr = AdminMgrFactory.createInstance();
>
> B. Changes to Data (properties and permissions):
>
> 5. properties
> Change to ‘ftProps’ attribute in ou=Config node (cn=DEFAULT, ou=Config, dc=example,dc=com):
> temporal.validator.dsd:org.apache.directory.fortress.core.impl.DSDChecker
>
> 6. ARBAC manager permissions. Change entrydn to the following:
> ftObjNm=org.apache.directory.fortress.core.impl.AdminMgrImpl, ou=AdminPerms, ou=ARBAC,
dc=example,dc=com
> ftObjNm=org.apache.directory.fortress.core.impl.AuditMgrImpl, ou=AdminPerms, ou=ARBAC,
dc=example,dc=com
> ftObjNm=org.apache.directory.fortress.core.impl.DelAdminMgrImpl, ou=AdminPerms, ou=ARBAC,
dc=example,dc=com
> ftObjNm=org.apache.directory.fortress.core.impl.DelReviewMgrImpl, ou=AdminPerms, ou=ARBAC,
dc=example,dc=com
> ftObjNm=org.apache.directory.fortress.core.impl.PwPolicyMgrImpl, ou=AdminPerms, ou=ARBAC,
dc=example,dc=com
> org.apache.directory.fortress.core.impl.ReviewMgrImpl

Shawn, go for it !

Just be sure to add a file (api-changes.txt, or something like that) in
the trunk for those who already use the current release.



Mime
View raw message