style: optimised delegator
This commit is contained in:
@@ -17,9 +17,13 @@
|
|||||||
|
|
||||||
package com.onixbyte.icalendar.property.parameter;
|
package com.onixbyte.icalendar.property.parameter;
|
||||||
|
|
||||||
|
import com.onixbyte.icalendar.datatype.CalendarUserAddress;
|
||||||
import com.onixbyte.icalendar.property.CalendarResolvable;
|
import com.onixbyte.icalendar.property.CalendarResolvable;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delegator
|
* Delegator
|
||||||
@@ -30,35 +34,58 @@ public final class Delegator implements PropertyParameter {
|
|||||||
|
|
||||||
private static final String PROPERTY_NAME = "DELEGATED-FROM";
|
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) {
|
public static Builder builder() {
|
||||||
this.calendarUserAddress = URI.create(calendarUserAddress);
|
return new Builder();
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Delegator setCalendarUserAddress(URI calendarUserAddress) {
|
public static class Builder {
|
||||||
this.calendarUserAddress = calendarUserAddress;
|
private List<CalendarUserAddress> value;
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Delegator initialiseInstance() {
|
private Builder() {
|
||||||
return new Delegator();
|
value = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Delegator createInstance(String calendarUserAddress) {
|
public Builder addDelegator(CalendarUserAddress delegator) {
|
||||||
return initialiseInstance().setCalendarUserAddress(calendarUserAddress);
|
value.add(delegator);
|
||||||
}
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public static Delegator createInstance(URI calendarUserAddress) {
|
public Builder addDelegator(String delegator) {
|
||||||
return initialiseInstance().setCalendarUserAddress(calendarUserAddress);
|
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
|
@Override
|
||||||
public String resolve() {
|
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