001/*******************************************************************************
002 * Copyright (c) 2017 Red Hat Inc
003 * All rights reserved. This program and the accompanying materials
004 * are made available under the terms of the Eclipse Public License v1.0
005 * which accompanies this distribution, and is available at
006 * http://www.eclipse.org/legal/epl-v10.html
007 *
008 * Contributors:
009 *     Jens Reimann - initial API and implementation
010 *******************************************************************************/
011package de.dentrassi.varlink.spi;
012
013import static java.util.Collections.emptyMap;
014import static java.util.Collections.unmodifiableMap;
015import static java.util.Objects.requireNonNull;
016
017import java.util.HashMap;
018import java.util.Map;
019
020public final class CallRequest {
021    private final String method;
022    private final Map<String, Object> parameters;
023
024    private CallRequest(final String method, final Map<String, Object> parameters) {
025        this.method = method;
026        this.parameters = parameters;
027    }
028
029    public String getMethod() {
030        return this.method;
031    }
032
033    public Map<String, Object> getParameters() {
034        return this.parameters;
035    }
036
037    public static CallRequest of(final String method, final Map<String, ?> parameters) {
038
039        requireNonNull(method);
040        requireNonNull(parameters);
041
042        return new CallRequest(method, unmodifiableMap(new HashMap<>(parameters)));
043    }
044
045    public static CallRequest of(final String method) {
046
047        requireNonNull(method);
048
049        return new CallRequest(method, emptyMap());
050    }
051}