0

このコードを使用して、標準の Status プロパティに新しい XParameter を追加しようとしています

import net.fortuna.ical4j.model.Calendar;
import net.fortuna.ical4j.model.Component;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.parameter.XParameter;
import org.apache.commons.io.IOUtils;
import com.example.common.util.ical.ICalUtil;

import java.io.FileInputStream;
import java.io.IOException;

public class TestICal {
    public static void main(String[] args) throws IOException {
        String content = IOUtils.toString(new FileInputStream("/tmp/taskA.ics"));
        Calendar task = ICalUtil.parse(content);
        Component vtodo = task.getComponent(Component.VTODO);
        Property prop = vtodo.getProperty(Property.STATUS);
        prop.getParameters().add(new XParameter("X-TEST-PARAM", "TEST-VALUE")); // java.lang.UnsupportedOperationException
    }
}

ただし、実行中に次の例外がスローされます

Exception in thread "main" java.lang.UnsupportedOperationException
        at java.util.Collections$UnmodifiableCollection.add(Collections.java:1016)
        at net.fortuna.ical4j.model.ParameterList.add(ParameterList.java:157)
        at TestICal.main(TestICal.java:18)

デバッガーでは、ical4j パッケージ内でadd()メソッドが呼び出されjava.util.Collections$UnmodifiableRandomAccessListていることがわかります。実際には、何らかの理由で API doc で見つけることができず、実装されていますjava.util.List

プロパティを削除または置換することはできず、別のパラメーター リストを置換または追加できるメソッドが表示されません。

したがって、少なくとも ical4j を使用している場合、フィールドにパラメーターを含めることはできないと思います。

何か案が?

4

1 に答える 1