From c987bdd10c451637a38ad7f9d56f2853c7b07f31 Mon Sep 17 00:00:00 2001 From: Zihlu Wang Date: Fri, 24 May 2024 12:41:22 +0800 Subject: [PATCH] style: optimised delegator --- .../property/parameter/Delegator.java | 65 ++++++--- .../icalendar/test/DelegateeTest.java | 125 ------------------ 2 files changed, 46 insertions(+), 144 deletions(-) delete mode 100644 webcal/src/test/java/com/onixbyte/icalendar/test/DelegateeTest.java diff --git a/webcal/src/main/java/com/onixbyte/icalendar/property/parameter/Delegator.java b/webcal/src/main/java/com/onixbyte/icalendar/property/parameter/Delegator.java index 01eb8fe..6c2362c 100644 --- a/webcal/src/main/java/com/onixbyte/icalendar/property/parameter/Delegator.java +++ b/webcal/src/main/java/com/onixbyte/icalendar/property/parameter/Delegator.java @@ -17,9 +17,13 @@ package com.onixbyte.icalendar.property.parameter; +import com.onixbyte.icalendar.datatype.CalendarUserAddress; import com.onixbyte.icalendar.property.CalendarResolvable; import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; /** * Delegator @@ -30,35 +34,58 @@ public final class Delegator implements PropertyParameter { private static final String PROPERTY_NAME = "DELEGATED-FROM"; - private URI calendarUserAddress; + private List value; - private Delegator() { + private Delegator(List value) { + this.value = value; } - private Delegator setCalendarUserAddress(String calendarUserAddress) { - this.calendarUserAddress = URI.create(calendarUserAddress); - return this; + public static Builder builder() { + return new Builder(); } - private Delegator setCalendarUserAddress(URI calendarUserAddress) { - this.calendarUserAddress = calendarUserAddress; - return this; - } + public static class Builder { + private List value; - private static Delegator initialiseInstance() { - return new Delegator(); - } - - public static Delegator createInstance(String calendarUserAddress) { - return initialiseInstance().setCalendarUserAddress(calendarUserAddress); - } + private Builder() { + value = new ArrayList<>(); + } - public static Delegator createInstance(URI calendarUserAddress) { - return initialiseInstance().setCalendarUserAddress(calendarUserAddress); + public Builder addDelegator(CalendarUserAddress delegator) { + value.add(delegator); + return this; + } + + public Builder addDelegator(String delegator) { + value.add(new CalendarUserAddress(delegator)); + return this; + } + + public Builder addDelegator(URI delegator) { + value.add(new CalendarUserAddress(delegator)); + return this; + } + + public Builder addDelegators(List delegators) { + value.addAll(delegators); + return this; + } + + public Builder addDelegators(Supplier> delegators) { + value.addAll(delegators.get()); + return this; + } + + public Delegator build() { + return new Delegator(value); + } } @Override public String resolve() { - return PROPERTY_NAME + "=\"" + calendarUserAddress + "\""; + return PROPERTY_NAME + "=\"" + String.join(",", value + .stream() + .map((_value) -> "\"" + _value + "\"") + .toList()) + "\""; } } diff --git a/webcal/src/test/java/com/onixbyte/icalendar/test/DelegateeTest.java b/webcal/src/test/java/com/onixbyte/icalendar/test/DelegateeTest.java deleted file mode 100644 index 373f756..0000000 --- a/webcal/src/test/java/com/onixbyte/icalendar/test/DelegateeTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2024-2024 OnixByte. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.onixbyte.icalendar.test; - -import com.onixbyte.icalendar.datatype.CalendarUserAddress; -import com.onixbyte.icalendar.property.parameter.Delegatee; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.Test; - -import java.net.URI; -import java.util.List; -import java.util.stream.Stream; - -@Slf4j -public class DelegateeTest { - - @Test - void testAddStringDelegatee() { - var delegatee = Delegatee.builder() - .addDelegatee("mailto:user01@example.onixbyte.com") - .build() - .resolve(); - log.info("#testAddStringDelegatee {}", delegatee); - } - - @Test - void testAddUriDelegatee() { - var delegatee = Delegatee.builder() - .addDelegatee(URI.create("mailto:user01@example.onixbyte.com")) - .build() - .resolve(); - log.info("#testAddUriDelegatee {}", delegatee); - } - - @Test - void testAddCauDelegateeWithStringConstructor() { - var delegatee = Delegatee.builder() - .addDelegatee(new CalendarUserAddress("mailto:user01@example.onixbyte.com")) - .build() - .resolve(); - log.info("#testAddCauDelegateeWithStringConstructor {}", delegatee); - } - - @Test - void testAddCauDelegateeWithUriConstructor() { - var delegatee = Delegatee.builder() - .addDelegatee(new CalendarUserAddress(URI.create("mailto:user01@example.onixbyte.com"))) - .build() - .resolve(); - log.info("#testAddCauDelegateeWithUriConstructor {}", delegatee); - } - - @Test - void testAddDelegateeSeparately() { - var delegatee = Delegatee.builder() - .addDelegatee(new CalendarUserAddress(URI.create("mailto:user01@example.onixbyte.com"))) - .addDelegatee(URI.create("mailto:user02@example.onixbyte.com")) - .addDelegatee("mailto:user03@example.onixbyte.com") - .build() - .resolve(); - log.info("#testAddDelegateeSeparately {}", delegatee); - } - - @Test - void testAddDelegateeSeparatelyWithIncorrectUri() { - try { - var delegatee = Delegatee.builder() - .addDelegatee(new CalendarUserAddress(URI.create("mailto:user01@example.onixbyte.com"))) - .addDelegatee(URI.create("mailto:user02@example.onixbyte.com")) - .addDelegatee("https://example.onixbyte.com") - .build() - .resolve(); - log.info("#testAddDelegateeSeparatelyWithIncorrectUri {}", delegatee); - } catch (IllegalArgumentException iae) { - log.error("#testAddDelegateeSeparatelyWithIncorrectUri {}", iae.getMessage()); - } - } - - @Test - void testAddDelegateesWithCau() { - try { - var delegatee = Delegatee.builder() - .addDelegatees(List.of( - new CalendarUserAddress("mailto:user01@example.onixbyte.com"), - new CalendarUserAddress("mailto:user02@example.onixbyte.com") - )) - .build() - .resolve(); - log.info("#testAddDelegateesWithCau {}", delegatee); - } catch (IllegalArgumentException iae) { - log.error("#testAddDelegateesWithCau {}", iae.getMessage()); - } - } - - @Test - void testAddDelegateesWithSupplier() { - try { - var delegatee = Delegatee.builder() - .addDelegatees(() -> Stream.of("mailto:user01@example.onixbyte.com", "mailto:user02@example.onixbyte.com") - .map(CalendarUserAddress::new) - .toList()) - .build() - .resolve(); - log.info("#testAddDelegateesWithSupplier {}", delegatee); - } catch (IllegalArgumentException iae) { - log.error("#testAddDelegateesWithSupplier {}", iae.getMessage()); - } - } - -}