de.sayayi.lib.protocol.spi.AbstractPropagationBuilder Maven / Gradle / Ivy
/*
* Copyright 2020 Jeroen Gremmen
*
* 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 de.sayayi.lib.protocol.spi;
import de.sayayi.lib.protocol.Protocol;
import de.sayayi.lib.protocol.Protocol.ProtocolMessageBuilder;
import de.sayayi.lib.protocol.Protocol.TargetTagBuilder;
import de.sayayi.lib.protocol.TagSelector;
import de.sayayi.lib.protocol.exception.ProtocolException;
import lombok.val;
import org.jetbrains.annotations.NotNull;
import java.util.TreeSet;
import static java.util.Objects.requireNonNull;
/**
* @author Jeroen Gremmen
* @since 0.5.0
*/
abstract class AbstractPropagationBuilder>
extends AbstractBuilder
implements TargetTagBuilder
{
private final @NotNull TagSelector tagSelector;
protected AbstractPropagationBuilder(@NotNull AbstractProtocol protocol,
@NotNull TagSelector tagSelector)
{
super(protocol);
this.tagSelector = tagSelector;
}
@Override
public @NotNull Protocol to(@NotNull String targetTagName)
{
protocol.tagPropagationMap.computeIfAbsent(tagSelector, k -> new TreeSet<>())
.add(requireNonNull(targetTagName));
return protocol;
}
@Override
public @NotNull Protocol to(@NotNull String... targetTagNames)
{
if (targetTagNames.length == 0)
throw new ProtocolException("targetTagNames must not be empty");
for(val targetTagName: targetTagNames)
to(targetTagName);
return protocol;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy