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

gw.lang.reflect.ExceptionInfoBuilder Maven / Gradle / Ivy

There is a newer version: 1.18.2
Show newest version
/*
 * Copyright 2014 Guidewire Software, Inc.
 */

package gw.lang.reflect;

public class ExceptionInfoBuilder {

  private String _name;
  private String _description;
  private IType _type;

  public ExceptionInfoBuilder withName(String name) {
    this._name = name;
    return this;
  }

  public ExceptionInfoBuilder withDescription(String description) {
    this._description = description;
    return this;
  }

  public ExceptionInfoBuilder withType(IType type) {
    this._type = type;
    return this;
  }

  public ExceptionInfoBuilder withType(Class clazz) {
    this._type = TypeSystem.get(clazz);
    return this;
  }

  public ExceptionInfoBuilder like(IExceptionInfo exception) {
    withName(exception.getName());
    withDescription(exception.getDescription());
    withType(exception.getExceptionType());
    return this;
  }

  public IExceptionInfo build(IFeatureInfo container) {
    return new BuiltExceptionInfo(this, container);
  }

  private static class BuiltExceptionInfo implements IExceptionInfo {

    private final IFeatureInfo _container;
    private final String _name;
    private final String _description;
    private final IType _type;

    public BuiltExceptionInfo(ExceptionInfoBuilder builder, IFeatureInfo container) {
      assert container != null;
      assert builder._name != null;
      assert builder._type != null;
      this._container = container;
      this._name = builder._name;
      this._description = builder._description;
      this._type = builder._type;
    }

    public IFeatureInfo getContainer() {
      return this._container;
    }

    public IType getOwnersType() {
      return this._container.getOwnersType();
    }

    public String getName() {
      return this._name;
    }

    public String getDisplayName() {
      return this._name;
    }

    public String getDescription() {
      return this._description;
    }

    public IType getExceptionType() {
      return this._type;
    }

  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy