How to package java classes in an opencms module
"laurent.druart via opencms-dev" <[email protected]> Thu, 7 Aug 2025 16:41:25 +0200
| Newsgroups | gmane.comp.cms.opencms.devel |
|---|---|
| Message-ID | <[email protected]> |
SGVsbG8sCgpJ4oCZbSBzdGlsbCB0ZXN0aW5nIE9wZW5DTVMgYW5kIGkgd3JvdGUgYSB2ZXJ5IHNt YWxsIGxpYnJhcnksIGEgc3ByaW5nIGJhc2VkIGxpYnJhcnkuIEkgd2FudCB0byB1c2UgdGhlIGJl YW5zIGluIG15IGpzcCBzbyBpIHdyb3RlIDIgY2xhc3NlczoKClNwcmluZ0JlYW5VdGlscyA6Cgpw dWJsaWMgY2xhc3MgU3ByaW5nQmVhblV0aWxzIHsKCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBM b2cgTE9HID0gQ21zTG9nLmdldExvZyhTcHJpbmdCZWFuVXRpbHMuY2xhc3MpOwoKICAgIC8qKgog ICAgICogUsOpY3Vww6hyZSBsZSBzZXJ2aWNlIHV0aWxpc2F0ZXVyCiAgICAgKiBFeGVtcGxlIGQn dXRpbGlzYXRpb24gZGFucyB1bmUgcGFnZSBKU1AgOgogICAgICogPCUKICAgICAqICAgVXNlclNl cnZpY2UgdXNlclNlcnZpY2UgPSBTcHJpbmdCZWFuVXRpbHMuZ2V0VXNlclNlcnZpY2UoKTsKICAg ICAqICAgTGlzdDxVc2VyPiB1c2VycyA9IHVzZXJTZXJ2aWNlLmdldEFsbEFjdGl2ZVVzZXJzKCk7 CiAgICAgKiAlPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIFVzZXJTZXJ2aWNlIGdldFVzZXJT ZXJ2aWNlKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBMaWJyYXJ5SW5pdGlh bGl6ZXIuZ2V0QmVhbihVc2VyU2VydmljZS5jbGFzcyk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0 aW9uIGUpIHsKICAgICAgICAgICAgTE9HLmVycm9yKCJFcnJldXIgbG9ycyBkZSBsYSByw6ljdXDD qXJhdGlvbiBkdSBVc2VyU2VydmljZSIsIGUpOwogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGlt ZUV4Y2VwdGlvbigiU2VydmljZSB1dGlsaXNhdGV1ciBub24gZGlzcG9uaWJsZSIsIGUpOwogICAg ICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIE3DqXRob2RlIGfDqW7DqXJpcXVlIHBvdXIgcsOp Y3Vww6lyZXIgbidpbXBvcnRlIHF1ZWwgc2VydmljZQogICAgICogRXhlbXBsZSA6CiAgICAgKiBN eVNlcnZpY2Ugc2VydmljZSA9IFNwcmluZ0JlYW5VdGlscy5nZXRTZXJ2aWNlKE15U2VydmljZS5j bGFzcyk7CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgPFQ+IFQgZ2V0U2VydmljZShDbGFzczxU PiBzZXJ2aWNlQ2xhc3MpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gTGlicmFy eUluaXRpYWxpemVyLmdldEJlYW4oc2VydmljZUNsYXNzKTsKICAgICAgICB9IGNhdGNoIChFeGNl cHRpb24gZSkgewogICAgICAgICAgICBMT0cuZXJyb3IoIkVycmV1ciBsb3JzIGRlIGxhIHLDqWN1 cMOpcmF0aW9uIGR1IHNlcnZpY2U6ICIgKyBzZXJ2aWNlQ2xhc3MuZ2V0U2ltcGxlTmFtZSgpLCBl KTsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlNlcnZpY2Ugbm9uIGRp c3BvbmlibGU6ICIgKyBzZXJ2aWNlQ2xhc3MuZ2V0U2ltcGxlTmFtZSgpLCBlKTsKICAgICAgICB9 CiAgICB9CgogICAgLyoqCiAgICAgKiBSw6ljdXDDqHJlIHVuIGJlYW4gcGFyIHNvbiBub20KICAg ICAqIEV4ZW1wbGUgOgogICAgICogT2JqZWN0IGJlYW4gPSBTcHJpbmdCZWFuVXRpbHMuZ2V0QmVh bigidXNlclNlcnZpY2UiKTsKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBPYmplY3QgZ2V0QmVh bihTdHJpbmcgYmVhbk5hbWUpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gTGli cmFyeUluaXRpYWxpemVyLmdldEJlYW4oYmVhbk5hbWUpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2Vw dGlvbiBlKSB7CiAgICAgICAgICAgIExPRy5lcnJvcigiRXJyZXVyIGxvcnMgZGUgbGEgcsOpY3Vw w6lyYXRpb24gZHUgYmVhbjogIiArIGJlYW5OYW1lLCBlKTsKICAgICAgICAgICAgdGhyb3cgbmV3 IFJ1bnRpbWVFeGNlcHRpb24oIkJlYW4gbm9uIGRpc3BvbmlibGU6ICIgKyBiZWFuTmFtZSwgZSk7 CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVsOpcmlmaWUgc2kgbGUgY29udGV4dGUg U3ByaW5nIGVzdCBkaXNwb25pYmxlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBp c0F2YWlsYWJsZSgpIHsKICAgICAgICByZXR1cm4gTGlicmFyeUluaXRpYWxpemVyLmlzU3ByaW5n Q29udGV4dEF2YWlsYWJsZSgpOwogICAgfQoKICAgIC8qKgogICAgICogTcOpdGhvZGUgdXRpbGl0 YWlyZSBwb3VyIHbDqXJpZmllciBsYSBkaXNwb25pYmlsaXTDqSBhdmFudCB1dGlsaXNhdGlvbgog ICAgICovCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgZW5zdXJlQXZhaWxhYmxlKCkgewogICAgICAg IGlmICghaXNBdmFpbGFibGUoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRl RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJMZSBjb250ZXh0ZSBTcHJpbmcgbidlc3Qg cGFzIGRpc3BvbmlibGUuICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlbDqXJpZmll eiBxdWUgbGUgbW9kdWxlIGVzdCBjb3JyZWN0ZW1lbnQgaW5pdGlhbGlzw6kuIgogICAgICAgICAg ICApOwogICAgICAgIH0KICAgIH0KfQoKd2l0aCBzdGF0aWMgbWV0aG9kIGdldFVzZXJTZXJ2aWNl KCkgSSBjYW4gY2FsbCB0aGUgdXNlclNlcnZpY2UgYmVhbi4gTm8gcHJvYmxlbSB3aXRoIGl0LgoK QW5kIHNlY29uZCBjbGFzcyBMaWJyYXJ5SW5pdGlhbGl6ZXIgd2ljaCBtdXN0IGluaXRpYWxpc2Ug dGhlIHNwcmluZyBjb250ZXh0IGFuZCBjb25maWd1cmUgaXQ6CgpwdWJsaWMgY2xhc3MgTGlicmFy eUluaXRpYWxpemVyIGV4dGVuZHMgQV9DbXNNb2R1bGVBY3Rpb24gaW1wbGVtZW50cyBJX0Ntc0V2 ZW50TGlzdGVuZXIgewoKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNT0RVTEVfTkFN RSA9ICJvcGVuY21zLXNwcmluZy1saWJyYXJ5IjsKICAgIHByaXZhdGUgc3RhdGljIEFwcGxpY2F0 aW9uQ29udGV4dCBzcHJpbmdDb250ZXh0OwogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgb3JnLmFw YWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIExPRyA9IENtc0xvZy5nZXRMb2coTGlicmFyeUluaXRp YWxpemVyLmNsYXNzKTsKCiAgICAvKioKICAgICAqIEluaXRpYWxpc2F0aW9uIGR1IG1vZHVsZQog ICAgICovCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUob3JnLm9wZW5j bXMuZmlsZS5DbXNPYmplY3QgYWRtaW5DbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9y Zy5vcGVuY21zLmNvbmZpZ3VyYXRpb24uQ21zQ29uZmlndXJhdGlvbk1hbmFnZXIgY29uZmlndXJh dGlvbk1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENtc01vZHVsZSBtb2R1bGUp IHsKCiAgICAgICAgTE9HLmluZm8oIkluaXRpYWxpc2F0aW9uIGRlIGxhIGxpYnJhaXJpZSBTcHJp bmcgY2xhc3NpcXVlIHBvdXIgT3BlbkNNUyIpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAv LyBDb25maWd1cmF0aW9uIGRlcyBwcm9wcmnDqXTDqXMgc3lzdMOobWUKICAgICAgICAgICAgY29u ZmlndXJlU3lzdGVtUHJvcGVydGllcygpOwoKICAgICAgICAgICAgLy8gQ3LDqWF0aW9uIGR1IGNv bnRleHRlIFNwcmluZyBDTEFTU0lRVUUKICAgICAgICAgICAgQW5ub3RhdGlvbkNvbmZpZ0FwcGxp Y2F0aW9uQ29udGV4dCBjb250ZXh0ID0gbmV3IEFubm90YXRpb25Db25maWdBcHBsaWNhdGlvbkNv bnRleHQoKTsKICAgICAgICAgICAgY29udGV4dC5yZWdpc3Rlcihjb20ub3BlbmNtcy5saWJyYXJ5 LmNvbmZpZy5MaWJyYXJ5Q29uZmlndXJhdGlvbi5jbGFzcyk7CiAgICAgICAgICAgIGNvbnRleHQu cmVmcmVzaCgpOwoKICAgICAgICAgICAgc3ByaW5nQ29udGV4dCA9IGNvbnRleHQ7CgogICAgICAg ICAgICAvLyBFbnJlZ2lzdHJlbWVudCBkZXMgbGlzdGVuZXJzIE9wZW5DTVMKICAgICAgICAgICAg T3BlbkNtcy5hZGRDbXNFdmVudExpc3RlbmVyKHRoaXMpOwoKICAgICAgICAgICAgTE9HLmluZm8o IkxpYnJhaXJpZSBTcHJpbmcgY2xhc3NpcXVlIGluaXRpYWxpc8OpZSBhdmVjIHN1Y2PDqHMiKTsK CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgTE9HLmVycm9yKCJF cnJldXIgbG9ycyBkZSBsJ2luaXRpYWxpc2F0aW9uIGRlIGxhIGxpYnJhaXJpZSBTcHJpbmciLCBl KTsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkltcG9zc2libGUgZCdp bml0aWFsaXNlciBsYSBsaWJyYWlyaWUgU3ByaW5nIiwgZSk7CiAgICAgICAgfQogICAgfQoKICAg IC8qKgogICAgICogQXJyw6p0IGR1IG1vZHVsZQogICAgICovCiAgICBAT3ZlcnJpZGUKICAgIHB1 YmxpYyB2b2lkIHNodXREb3duKENtc01vZHVsZSBtb2R1bGUpIHsKICAgICAgICBMT0cuaW5mbygi QXJyw6p0IGRlIGxhIGxpYnJhaXJpZSBTcHJpbmcgY2xhc3NpcXVlIik7CgogICAgICAgIGlmIChz cHJpbmdDb250ZXh0ICE9IG51bGwpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAg IGlmIChzcHJpbmdDb250ZXh0IGluc3RhbmNlb2YgQW5ub3RhdGlvbkNvbmZpZ0FwcGxpY2F0aW9u Q29udGV4dCkgewogICAgICAgICAgICAgICAgICAgICgoQW5ub3RhdGlvbkNvbmZpZ0FwcGxpY2F0 aW9uQ29udGV4dCkgc3ByaW5nQ29udGV4dCkuY2xvc2UoKTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgIExPRy5pbmZvKCJDb250ZXh0ZSBTcHJpbmcgZmVybcOpIGF2ZWMgc3VjY8Oo cyIpOwogICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAg TE9HLmVycm9yKCJFcnJldXIgbG9ycyBkZSBsJ2FycsOqdCBkdSBjb250ZXh0ZSBTcHJpbmciLCBl KTsKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIHNwcmluZ0NvbnRleHQg PSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2Vz dGlvbiBkZXMgw6l2w6luZW1lbnRzIE9wZW5DTVMKICAgICAqLwogICAgQE92ZXJyaWRlCiAgICBw dWJsaWMgdm9pZCBjbXNFdmVudChDbXNFdmVudCBldmVudCkgewogICAgICAgIHN3aXRjaCAoZXZl bnQuZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgIGNhc2UgSV9DbXNFdmVudExpc3RlbmVyLkVWRU5U X1BVQkxJU0hfUFJPSkVDVDoKICAgICAgICAgICAgICAgIExPRy5kZWJ1Zygiw4l2w6luZW1lbnQg ZGUgcHVibGljYXRpb24gZMOpdGVjdMOpIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgY2FzZSBJX0Ntc0V2ZW50TGlzdGVuZXIuRVZFTlRfQ0xFQVJfQ0FDSEVTOgogICAgICAg ICAgICAgICAgTE9HLmRlYnVnKCLDiXbDqW5lbWVudCBkZSBuZXR0b3lhZ2UgZGVzIGNhY2hlcyBk w6l0ZWN0w6kiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICAv KioKICAgICAqIENvbmZpZ3VyYXRpb24gZGVzIHByb3ByacOpdMOpcyBzeXN0w6htZQogICAgICov CiAgICBwcml2YXRlIHZvaWQgY29uZmlndXJlU3lzdGVtUHJvcGVydGllcygpIHsKICAgICAgICAv LyBDb25maWd1cmF0aW9uIGRlIGJhc2UgZGUgZG9ubsOpZXMgKHZhbGV1cnMgcGFyIGTDqWZhdXQp CiAgICAgICAgaWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgic3ByaW5nLmRhdGFzb3VyY2UudXJsIikg PT0gbnVsbCkgewogICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoInNwcmluZy5kYXRhc291 cmNlLnVybCIsICJqZGJjOnBvc3RncmVzcWw6Ly9wb3N0Z3Jlcy1kYjo1NDMyL2xpYmRiIik7CiAg ICAgICAgfQogICAgICAgIGlmIChTeXN0ZW0uZ2V0UHJvcGVydHkoInNwcmluZy5kYXRhc291cmNl LnVzZXJuYW1lIikgPT0gbnVsbCkgewogICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoInNw cmluZy5kYXRhc291cmNlLnVzZXJuYW1lIiwgImFwcHVzZXIiKTsKICAgICAgICB9CiAgICAgICAg aWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgic3ByaW5nLmRhdGFzb3VyY2UucGFzc3dvcmQiKSA9PSBu dWxsKSB7CiAgICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgic3ByaW5nLmRhdGFzb3VyY2Uu cGFzc3dvcmQiLCAiYXBwcGFzc3dvcmQiKTsKICAgICAgICB9CgogICAgICAgIExPRy5pbmZvKCJQ cm9wcmnDqXTDqXMgc3lzdMOobWUgY29uZmlndXLDqWVzIik7CiAgICB9CgogICAgLyoqCiAgICAg KiBBY2PDqHMgYXV4IGJlYW5zIFNwcmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIDxUPiBU IGdldEJlYW4oQ2xhc3M8VD4gYmVhbkNsYXNzKSB7CiAgICAgICAgaWYgKHNwcmluZ0NvbnRleHQg PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJM ZSBjb250ZXh0ZSBTcHJpbmcgbidlc3QgcGFzIGluaXRpYWxpc8OpIik7CiAgICAgICAgfQogICAg ICAgIHJldHVybiBzcHJpbmdDb250ZXh0LmdldEJlYW4oYmVhbkNsYXNzKTsKICAgIH0KCiAgICBw dWJsaWMgc3RhdGljIE9iamVjdCBnZXRCZWFuKFN0cmluZyBiZWFuTmFtZSkgewogICAgICAgIGlm IChzcHJpbmdDb250ZXh0ID09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxT dGF0ZUV4Y2VwdGlvbigiTGUgY29udGV4dGUgU3ByaW5nIG4nZXN0IHBhcyBpbml0aWFsaXPDqSIp OwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3ByaW5nQ29udGV4dC5nZXRCZWFuKGJlYW5OYW1l KTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTcHJpbmdDb250ZXh0QXZhaWxh YmxlKCkgewogICAgICAgIHJldHVybiBzcHJpbmdDb250ZXh0ICE9IG51bGw7CiAgICB9Cn0KCklm IGkgYnVpbGQgdGhpcyBsaWIgYXMgYSBqYXIgYW5kIHB1dCBpdCBpbiBXRUItSU5GL2xpYiBpIGNh biBhY2Nlc3MgbXkgYmVhbnMgaW4ganNwIHBhZ2VzIGJ1dCBpIG11c3QgZG8gdGhpcyBjYWxsIGZp cnN0OgoKICAgICAgICAgICBjb20ub3BlbmNtcy5saWJyYXJ5LmludGVncmF0aW9uLkxpYnJhcnlJ bml0aWFsaXplciBpbml0aWFsaXplciA9CiAgICAgICAgICAgICAgICBuZXcgY29tLm9wZW5jbXMu bGlicmFyeS5pbnRlZ3JhdGlvbi5MaWJyYXJ5SW5pdGlhbGl6ZXIoKTsKCiAgICAgICAgICAgIC8v IEFwcGVsIGRpcmVjdCBkZSBpbml0aWFsaXplIGF2ZWMgZGVzIHBhcmFtw6h0cmVzIG51bGxzIChu b3RyZSB2ZXJzaW9uIHNpbXBsaWZpw6llIGxlcyBnw6hyZSkKICAgICAgICAgICAgaW5pdGlhbGl6 ZXIuaW5pdGlhbGl6ZShudWxsLCBudWxsLCBudWxsKTsKYWZ0ZXIgdGhhdCBteSBjb250ZXh0IGlz IGluaXRpYWxpemVkIGFuZCBjb25maWd1cmVkIGFuZCBteSBqc3AgYXJlIHJ1bm5pbmcgZmluZS4g QnV0IHRoZSB3YXkgdG8gYXV0b21hdGljIGxvYWRpbmcgb2YgbXkgY29udGV4dCBzZWVtcyB0byBi ZSBhbiBvcGVuY21zIG1vZHVsZS4KCkkgdHJpZWQgdG8gYWRhcHQgbXkgbGliIHdpdGggb3BlbmNt cy1tb2R1bGUueG1sLCBtYW5pZmVzdC54bWwsLi4uIGJ1dCBub3RoaW5nIHdvcmtzOiBhdCBzdGFy dHVwIGNvbS5vcGVuY21zLmxpYnJhcnkuaW50ZWdyYXRpb24uTGlicmFyeUluaXRpYWxpemVyIGlz IG5vdCBmb3VuZCBieSBvcGVuY21zLgoKQ2FuIHlvdSBoZWxwIG1lPwpEb2VzIGl0IGV4aXN0IGEg dHV0b3JpYWwgb3IgaG93LXRvPwoKQW0gaSB3cm9uZyB3aXRoIHB1YmxpYyBjbGFzcyBMaWJyYXJ5 SW5pdGlhbGl6ZXIgZXh0ZW5kcyBBX0Ntc01vZHVsZUFjdGlvbiBpbXBsZW1lbnRzIElfQ21zRXZl bnRMaXN0ZW5lciA/CgpUaGFuayB5b3UKCktpbmQgcmVnYXJkcywKCkxhdXJlbnQKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpUaGlzIG1haWwgaXMgc2Vu dCB0byB5b3UgZnJvbSB0aGUgb3BlbmNtcy1kZXYgbWFpbGluZyBsaXN0ClRvIGNoYW5nZSB5b3Vy IGxpc3Qgb3B0aW9ucywgb3IgdG8gdW5zdWJzY3JpYmUgZnJvbSB0aGUgbGlzdCwgcGxlYXNlIHZp c2l0Cmh0dHBzOi8vbGlzdHMub3BlbmNtcy5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuY21zLWRl dgoKCgo=