package CosTrading;
public class _st_Register extends CosTrading._st_TraderComponents implements CosTrading.Register {
  public java.lang.String[] _ids() {
    return __ids;
  }
  private static java.lang.String[] __ids = {
    "IDL:omg.org/CosTrading/Register:1.0",
    "IDL:omg.org/CosTrading/TraderComponents:1.0",
    "IDL:omg.org/CosTrading/SupportAttributes:1.0"
  };
  public java.lang.String export(
    org.omg.CORBA.Object reference,
    java.lang.String type,
    CosTrading.Property[] properties
  ) throws
    CosTrading.RegisterPackage.InvalidObjectRef,
    CosTrading.IllegalServiceType,
    CosTrading.UnknownServiceType,
    CosTrading.RegisterPackage.InterfaceTypeMismatch,
    CosTrading.IllegalPropertyName,
    CosTrading.PropertyTypeMismatch,
    CosTrading.ReadonlyDynamicProperty,
    CosTrading.MissingMandatoryProperty,
    CosTrading.DuplicatePropertyName {
    try {
      org.omg.CORBA.portable.OutputStream _output = this._request("export", true);
      _output.write_Object(reference);
      _output.write_string(type);
      CosTrading.PropertySeqHelper.write(_output, properties);
      org.omg.CORBA.StringHolder _exception_id = new org.omg.CORBA.StringHolder();
      org.omg.CORBA.portable.InputStream _input = this._invoke(_output, _exception_id);
      if(_exception_id.value != null) {
        if(_exception_id.value.equals(CosTrading.RegisterPackage.InvalidObjectRefHelper.id())) {
          throw CosTrading.RegisterPackage.InvalidObjectRefHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.IllegalServiceTypeHelper.id())) {
          throw CosTrading.IllegalServiceTypeHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.UnknownServiceTypeHelper.id())) {
          throw CosTrading.UnknownServiceTypeHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.InterfaceTypeMismatchHelper.id())) {
          throw CosTrading.RegisterPackage.InterfaceTypeMismatchHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.IllegalPropertyNameHelper.id())) {
          throw CosTrading.IllegalPropertyNameHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.PropertyTypeMismatchHelper.id())) {
          throw CosTrading.PropertyTypeMismatchHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.ReadonlyDynamicPropertyHelper.id())) {
          throw CosTrading.ReadonlyDynamicPropertyHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.MissingMandatoryPropertyHelper.id())) {
          throw CosTrading.MissingMandatoryPropertyHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.DuplicatePropertyNameHelper.id())) {
          throw CosTrading.DuplicatePropertyNameHelper.read(_input);
        }
        throw new org.omg.CORBA.MARSHAL
          ("Unexpected User Exception: " + _exception_id.value);
      }
      java.lang.String _result;
      _result = _input.read_string();
      return _result;
    }
    catch(org.omg.CORBA.TRANSIENT _exception) {
      return export(
        reference,
        type,
        properties
      );
    }
  }
  public void withdraw(
    java.lang.String id
  ) throws
    CosTrading.IllegalOfferId,
    CosTrading.UnknownOfferId,
    CosTrading.RegisterPackage.ProxyOfferId {
    try {
      org.omg.CORBA.portable.OutputStream _output = this._request("withdraw", true);
      _output.write_string(id);
      org.omg.CORBA.StringHolder _exception_id = new org.omg.CORBA.StringHolder();
      org.omg.CORBA.portable.InputStream _input = this._invoke(_output, _exception_id);
      if(_exception_id.value != null) {
        if(_exception_id.value.equals(CosTrading.IllegalOfferIdHelper.id())) {
          throw CosTrading.IllegalOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.UnknownOfferIdHelper.id())) {
          throw CosTrading.UnknownOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.ProxyOfferIdHelper.id())) {
          throw CosTrading.RegisterPackage.ProxyOfferIdHelper.read(_input);
        }
        throw new org.omg.CORBA.MARSHAL
          ("Unexpected User Exception: " + _exception_id.value);
      }
    }
    catch(org.omg.CORBA.TRANSIENT _exception) {
      withdraw(
        id
      );
    }
  }
  public CosTrading.RegisterPackage.OfferInfo describe(
    java.lang.String id
  ) throws
    CosTrading.IllegalOfferId,
    CosTrading.UnknownOfferId,
    CosTrading.RegisterPackage.ProxyOfferId {
    try {
      org.omg.CORBA.portable.OutputStream _output = this._request("describe", true);
      _output.write_string(id);
      org.omg.CORBA.StringHolder _exception_id = new org.omg.CORBA.StringHolder();
      org.omg.CORBA.portable.InputStream _input = this._invoke(_output, _exception_id);
      if(_exception_id.value != null) {
        if(_exception_id.value.equals(CosTrading.IllegalOfferIdHelper.id())) {
          throw CosTrading.IllegalOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.UnknownOfferIdHelper.id())) {
          throw CosTrading.UnknownOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.ProxyOfferIdHelper.id())) {
          throw CosTrading.RegisterPackage.ProxyOfferIdHelper.read(_input);
        }
        throw new org.omg.CORBA.MARSHAL
          ("Unexpected User Exception: " + _exception_id.value);
      }
      CosTrading.RegisterPackage.OfferInfo _result;
      _result = CosTrading.RegisterPackage.OfferInfoHelper.read(_input);
      return _result;
    }
    catch(org.omg.CORBA.TRANSIENT _exception) {
      return describe(
        id
      );
    }
  }
  public void modify(
    java.lang.String id,
    java.lang.String[] del_list,
    CosTrading.Property[] modify_list
  ) throws
    CosTrading.NotImplemented,
    CosTrading.IllegalOfferId,
    CosTrading.UnknownOfferId,
    CosTrading.RegisterPackage.ProxyOfferId,
    CosTrading.IllegalPropertyName,
    CosTrading.RegisterPackage.UnknownPropertyName,
    CosTrading.PropertyTypeMismatch,
    CosTrading.ReadonlyDynamicProperty,
    CosTrading.RegisterPackage.MandatoryProperty,
    CosTrading.RegisterPackage.ReadonlyProperty,
    CosTrading.DuplicatePropertyName {
    try {
      org.omg.CORBA.portable.OutputStream _output = this._request("modify", true);
      _output.write_string(id);
      CosTrading.PropertyNameSeqHelper.write(_output, del_list);
      CosTrading.PropertySeqHelper.write(_output, modify_list);
      org.omg.CORBA.StringHolder _exception_id = new org.omg.CORBA.StringHolder();
      org.omg.CORBA.portable.InputStream _input = this._invoke(_output, _exception_id);
      if(_exception_id.value != null) {
        if(_exception_id.value.equals(CosTrading.NotImplementedHelper.id())) {
          throw CosTrading.NotImplementedHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.IllegalOfferIdHelper.id())) {
          throw CosTrading.IllegalOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.UnknownOfferIdHelper.id())) {
          throw CosTrading.UnknownOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.ProxyOfferIdHelper.id())) {
          throw CosTrading.RegisterPackage.ProxyOfferIdHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.IllegalPropertyNameHelper.id())) {
          throw CosTrading.IllegalPropertyNameHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.UnknownPropertyNameHelper.id())) {
          throw CosTrading.RegisterPackage.UnknownPropertyNameHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.PropertyTypeMismatchHelper.id())) {
          throw CosTrading.PropertyTypeMismatchHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.ReadonlyDynamicPropertyHelper.id())) {
          throw CosTrading.ReadonlyDynamicPropertyHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.MandatoryPropertyHelper.id())) {
          throw CosTrading.RegisterPackage.MandatoryPropertyHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.ReadonlyPropertyHelper.id())) {
          throw CosTrading.RegisterPackage.ReadonlyPropertyHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.DuplicatePropertyNameHelper.id())) {
          throw CosTrading.DuplicatePropertyNameHelper.read(_input);
        }
        throw new org.omg.CORBA.MARSHAL
          ("Unexpected User Exception: " + _exception_id.value);
      }
    }
    catch(org.omg.CORBA.TRANSIENT _exception) {
      modify(
        id,
        del_list,
        modify_list
      );
    }
  }
  public void withdraw_using_constraint(
    java.lang.String type,
    java.lang.String constr
  ) throws
    CosTrading.IllegalServiceType,
    CosTrading.UnknownServiceType,
    CosTrading.IllegalConstraint,
    CosTrading.RegisterPackage.NoMatchingOffers {
    try {
      org.omg.CORBA.portable.OutputStream _output = this._request("withdraw_using_constraint", true);
      _output.write_string(type);
      _output.write_string(constr);
      org.omg.CORBA.StringHolder _exception_id = new org.omg.CORBA.StringHolder();
      org.omg.CORBA.portable.InputStream _input = this._invoke(_output, _exception_id);
      if(_exception_id.value != null) {
        if(_exception_id.value.equals(CosTrading.IllegalServiceTypeHelper.id())) {
          throw CosTrading.IllegalServiceTypeHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.UnknownServiceTypeHelper.id())) {
          throw CosTrading.UnknownServiceTypeHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.IllegalConstraintHelper.id())) {
          throw CosTrading.IllegalConstraintHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.NoMatchingOffersHelper.id())) {
          throw CosTrading.RegisterPackage.NoMatchingOffersHelper.read(_input);
        }
        throw new org.omg.CORBA.MARSHAL
          ("Unexpected User Exception: " + _exception_id.value);
      }
    }
    catch(org.omg.CORBA.TRANSIENT _exception) {
      withdraw_using_constraint(
        type,
        constr
      );
    }
  }
  public CosTrading.Register resolve(
    java.lang.String[] name
  ) throws
    CosTrading.RegisterPackage.IllegalTraderName,
    CosTrading.RegisterPackage.UnknownTraderName,
    CosTrading.RegisterPackage.RegisterNotSupported {
    try {
      org.omg.CORBA.portable.OutputStream _output = this._request("resolve", true);
      CosTrading.LinkNameSeqHelper.write(_output, name);
      org.omg.CORBA.StringHolder _exception_id = new org.omg.CORBA.StringHolder();
      org.omg.CORBA.portable.InputStream _input = this._invoke(_output, _exception_id);
      if(_exception_id.value != null) {
        if(_exception_id.value.equals(CosTrading.RegisterPackage.IllegalTraderNameHelper.id())) {
          throw CosTrading.RegisterPackage.IllegalTraderNameHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.UnknownTraderNameHelper.id())) {
          throw CosTrading.RegisterPackage.UnknownTraderNameHelper.read(_input);
        }
        if(_exception_id.value.equals(CosTrading.RegisterPackage.RegisterNotSupportedHelper.id())) {
          throw CosTrading.RegisterPackage.RegisterNotSupportedHelper.read(_input);
        }
        throw new org.omg.CORBA.MARSHAL
          ("Unexpected User Exception: " + _exception_id.value);
      }
      CosTrading.Register _result;
      _result = CosTrading.RegisterHelper.read(_input);
      return _result;
    }
    catch(org.omg.CORBA.TRANSIENT _exception) {
      return resolve(
        name
      );
    }
  }
  private CosTrading.SupportAttributes __SupportAttributes;
  public void _set_delegate(org.omg.CORBA.portable.Delegate delegate) {
    super._set_delegate(delegate);
    this.__SupportAttributes = new CosTrading._st_SupportAttributes();
    ((org.omg.CORBA.portable.ObjectImpl) this.__SupportAttributes)._set_delegate(delegate);
  }
  public org.omg.CORBA.Object type_repos() {
    return this.__SupportAttributes.type_repos();
  }
  public boolean supports_proxy_offers() {
    return this.__SupportAttributes.supports_proxy_offers();
  }
  public boolean supports_modifiable_properties() {
    return this.__SupportAttributes.supports_modifiable_properties();
  }
  public boolean supports_dynamic_properties() {
    return this.__SupportAttributes.supports_dynamic_properties();
  }
}
