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

swim.api.policy.AbstractPolicy Maven / Gradle / Ivy

There is a newer version: 4.3.15
Show newest version
// Copyright 2015-2021 Swim Inc.
//
// 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 swim.api.policy;

import swim.api.Downlink;
import swim.api.Lane;
import swim.api.Uplink;
import swim.api.agent.Agent;
import swim.api.agent.AgentRoute;
import swim.api.auth.Identity;
import swim.http.HttpMessage;
import swim.http.HttpRequest;
import swim.http.HttpResponse;
import swim.uri.Uri;
import swim.warp.CommandMessage;
import swim.warp.Envelope;
import swim.warp.EventMessage;
import swim.warp.LinkRequest;
import swim.warp.SyncRequest;

public class AbstractPolicy implements Policy, PlanePolicy, AgentRoutePolicy, AgentPolicy, LanePolicy, UplinkPolicy, DownlinkPolicy {

  public AbstractPolicy() {
    // nop
  }

  @Override
  public AgentRoutePolicy agentRoutePolicy(AgentRoute agentRoute) {
    return this;
  }

  @Override
  public AgentPolicy agentPolicy(Agent agent) {
    return this;
  }

  @Override
  public LanePolicy lanePolicy(Lane lane) {
    return this;
  }

  @Override
  public UplinkPolicy uplinkPolicy(Uplink uplink) {
    return this;
  }

  @Override
  public DownlinkPolicy downlinkPolicy(Downlink downlink) {
    return this;
  }

  @Override
  public PolicyDirective canConnect(Uri requestUri) {
    return this.allow();
  }

  @Override
  public PolicyDirective canLink(LinkRequest request, Identity identity) {
    return this.authorize(request, identity);
  }

  @Override
  public PolicyDirective canSync(SyncRequest request, Identity identity) {
    return this.authorize(request, identity);
  }

  @Override
  public PolicyDirective canUplink(EventMessage message, Identity identity) {
    return this.authorize(message, identity);
  }

  @Override
  public PolicyDirective canDownlink(CommandMessage message, Identity identity) {
    return this.authorize(message, identity);
  }

  @Override
  public PolicyDirective> canRequest(HttpRequest request) {
    return this.allow();
  }

  @Override
  public PolicyDirective> canRespond(HttpRequest request, HttpResponse response) {
    return this.allow();
  }

  protected  PolicyDirective authorize(Envelope envelope, Identity identity) {
    return this.allow();
  }

  public  PolicyDirective allow(T value) {
    return PolicyDirective.allow(value);
  }

  public  PolicyDirective allow() {
    return PolicyDirective.allow();
  }

  public  PolicyDirective deny(Object reason) {
    return PolicyDirective.deny(this, reason);
  }

  public  PolicyDirective deny() {
    return PolicyDirective.deny(this);
  }

  public  PolicyDirective forbid(Object reason) {
    return PolicyDirective.forbid(this, reason);
  }

  public  PolicyDirective forbid() {
    return PolicyDirective.forbid(this);
  }

}