All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.ditto.connectivity.service.mapping.javascript.ImmutableJavaScriptMessageMapperConfiguration Maven / Gradle / Ivy

There is a newer version: 3.5.6
Show newest version
/*
 * Copyright (c) 2017 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0
 *
 * SPDX-License-Identifier: EPL-2.0
 */
package org.eclipse.ditto.connectivity.service.mapping.javascript;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;

import org.eclipse.ditto.json.JsonValue;
import org.eclipse.ditto.connectivity.service.mapping.DefaultMessageMapperConfiguration;
import org.eclipse.ditto.connectivity.service.mapping.MessageMapperConfiguration;

/**
 * Immutable implementation of {@link JavaScriptMessageMapperConfiguration}.
 */
@Immutable
final class ImmutableJavaScriptMessageMapperConfiguration implements JavaScriptMessageMapperConfiguration {

    private final MessageMapperConfiguration delegationTarget;

    private ImmutableJavaScriptMessageMapperConfiguration(final MessageMapperConfiguration theDelegationTarget) {
        delegationTarget = theDelegationTarget;
    }

    @Override
    public String getId() {
        return delegationTarget.getId();
    }

    @Override
    public Map getProperties() {
        return delegationTarget.getProperties();
    }

    @Override
    public Map getIncomingConditions() {
        return delegationTarget.getIncomingConditions();
    }

    @Override
    public Map getOutgoingConditions() {
        return delegationTarget.getOutgoingConditions();
    }

    @Override
    public boolean equals(final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        final ImmutableJavaScriptMessageMapperConfiguration that = (ImmutableJavaScriptMessageMapperConfiguration) o;
        return Objects.equals(delegationTarget, that.delegationTarget);
    }

    @Override
    public int hashCode() {
        return Objects.hash(delegationTarget);
    }

    @Override
    public String toString() {
        return getClass().getSimpleName() + " [" +
                "properties=" + getProperties() +
                ", incomingConditions=" + getIncomingConditions() +
                ", outgoingConditions=" + getOutgoingConditions() +
                "]";
    }

    /**
     * Mutable Builder for {@link JavaScriptMessageMapperConfiguration}.
     */
    @NotThreadSafe
    static final class Builder implements JavaScriptMessageMapperConfiguration.Builder {

        private final String id;
        private final Map properties;
        private final Map incomingConditions;
        private final Map outgoingConditions;

        Builder(final String id, final Map properties, final Map incomingConditions,
                final Map outgoingConditions) {
            this.id = id;
            this.properties = new HashMap<>(properties); // mutable map!
            this.incomingConditions = incomingConditions;
            this.outgoingConditions = outgoingConditions;
        }

        @Override
        public Map getProperties() {
            return properties;
        }

        @Override
        public Map getIncomingConditions() {
            return incomingConditions;
        }

        @Override
        public Map getOutgoingConditions() {
            return outgoingConditions;
        }

        @Override
        public JavaScriptMessageMapperConfiguration build() {
            return new ImmutableJavaScriptMessageMapperConfiguration(
                    DefaultMessageMapperConfiguration.of(id, properties, incomingConditions, outgoingConditions));
        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy