0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SalesforceAdvent Calendar 2022

Day 15

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

Last updated at Posted at 2022-12-24

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 に理解のある方の参加をお待ちしてますです。

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?