style: optimised delegator
This commit is contained in:
@@ -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<CalendarUserAddress> value;
|
||||
|
||||
private Delegator() {
|
||||
private Delegator(List<CalendarUserAddress> 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<CalendarUserAddress> value;
|
||||
|
||||
private static Delegator initialiseInstance() {
|
||||
return new Delegator();
|
||||
}
|
||||
private Builder() {
|
||||
value = new ArrayList<>();
|
||||
}
|
||||
|
||||
public static Delegator createInstance(String calendarUserAddress) {
|
||||
return initialiseInstance().setCalendarUserAddress(calendarUserAddress);
|
||||
}
|
||||
public Builder addDelegator(CalendarUserAddress delegator) {
|
||||
value.add(delegator);
|
||||
return this;
|
||||
}
|
||||
|
||||
public static Delegator createInstance(URI calendarUserAddress) {
|
||||
return initialiseInstance().setCalendarUserAddress(calendarUserAddress);
|
||||
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<CalendarUserAddress> delegators) {
|
||||
value.addAll(delegators);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder addDelegators(Supplier<List<CalendarUserAddress>> 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()) + "\"";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user