LoginSignup
0

posted at

updated at

Apache Commons Lang3 の StringUtils と CharUtils を Salesforce Apex 言語に移植してみた

StringUtilsCharUtils を Salesforce Apex に移植

Apache Commons Lang3 の StringUtilsCharUtils を 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 に含まれるおおよその機能を移植したいですが、それは手間的にとても無理なので、自分としてあったら便利かつ移植が簡単そうなな StringUtilsCharUtils を手始めにざっと移植してみました。
※後日談 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 に理解のある方の参加をお待ちしてますです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0