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

swim.system.reflect.UplinkInfo Maven / Gradle / Ivy

The newest version!
// Copyright 2015-2024 Nstream, 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.system.reflect;

import swim.structure.Form;
import swim.structure.Item;
import swim.structure.Kind;
import swim.system.LinkContext;
import swim.system.WarpContext;

public abstract class UplinkInfo extends LinkInfo {

  public UplinkInfo() {
    // nop
  }

  public static UplinkInfo create(LinkContext linkContext) {
    if (linkContext instanceof WarpContext) {
      return WarpUplinkInfo.create((WarpContext) linkContext);
    } else {
      return null;
    }
  }

  private static Form uplinkForm;

  @Kind
  public static Form uplinkForm() {
    if (UplinkInfo.uplinkForm == null) {
      UplinkInfo.uplinkForm = new UplinkInfoForm();
    }
    return UplinkInfo.uplinkForm;
  }

}

final class UplinkInfoForm extends Form {

  @Override
  public Class type() {
    return UplinkInfo.class;
  }

  @Override
  public Item mold(UplinkInfo info) {
    return info.toValue();
  }

  @Override
  public UplinkInfo cast(Item item) {
    final WarpUplinkInfo warpUplinkInfo = WarpUplinkInfo.warpUplinkForm().cast(item);
    if (warpUplinkInfo != null) {
      return warpUplinkInfo;
    }
    return null;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy