StringUtils
と CharUtils
を Salesforce Apex に移植
Apache Commons Lang3 の StringUtils
と CharUtils
を Salesforce Apex
言語に移植して github に公開してみました。ApacheCommonsLang4Apex
という名前で登録しました。
※主要なメソッドは移植されています。一部未実装のメソッドもあります。
Usage
ApacheCommonsLang4Apex を利用することにより、以下のような Appache Commons Lang3 っぽい機能を使用することが可能になります。
System.assertEquals('...fghi...', StringUtils.abbreviate('abcdefghijklmno', 5, 10));
System.assertEquals('', StringUtils.defaultString(null));
System.assertEquals('bat', StringUtils.defaultString('bat'));
GitHub 上のリポジトリ
ソースコードは この GitHub リポジトリから clone して入手可能です。
いつか AppExchange
にもトライしてみたいですが、それは暇になった時にでも。。。
本当は Apache Commons Lang3
に含まれるおおよその機能を移植したいですが、それは手間的にとても無理なので、自分としてあったら便利かつ移植が簡単そうなな StringUtils
と CharUtils
を手始めにざっと移植してみました。
※後日談 2022/12/25 に Apex Test のカバー率が 90% を超えました。
ライセンス
ライセンスは Apache License 2.0
です。そもそも Commons Lang ソースコードをコピペしてちょっこし Apex 用に変更しただけのものですので、ほぼほぼ Apache Commons Lang と思っていただけたら幸いです。
背景
Salesforce の Apex 言語は Java 言語にとてもよく似ています。そのため、Apache Commons Lang3 のような機能が欲しいな、と思う場面が多々あります。とくに StringUtils はぜひ使いたいと思い、ざっと移植して書き下ろしました。
後日談(2022/12/26)
後でわかったことをここにメモ。
世の中、同じようなことを考える方はいらっしゃるようで、もう10年以上前に Apex Commons (apex-lang?) という Apache Commons Lang を Apex に移植されていたアクティビティがあったようです。
結構本格的に移植したようで、大量のクラスが Apex 化されています。率直にすごいです。圧倒されます。
なお、このプロジェクト自体はメンテナンスが緩やかなようでして、StringUtils.cls の API バージョンは 13.0 という、素朴にかなり古いものになります。また、多分当時の事情なのですが、JavaDoc部分がトルツメされていますので、そこが惜しいところですの。
移植参加者募集
私が隙間時間で実装するには Apache Commons Lang3 はとても広大です。
移植が進んだら、Apex開発のお困りの少しは解決できると期待されますのですの。
我こそはと腕に覚えのある OSS に理解のある方の参加をお待ちしてますです。