Ejemplo n.º 1
0
  /** add a mapping for this {@link TypeMapping}'s type and alias */
  public void addMapping(final TypeMapping mapping) {
    final String typeAlias = mapping.getTypeAlias();
    if (StringUtils.empty(typeAlias)) {
      throw new IllegalArgumentException("typeAlias must not be empty");
    }

    {
      // put alias if unknown
      final TypeMapping prev = _mappingsByAlias.putIfAbsent(typeAlias, mapping);
      if (prev != null && prev != mapping) {
        throw new IllegalArgumentException("duplicate type alias " + mapping.getTypeAlias());
      }
    }

    {
      // put class if unknown
      final TypeMapping prev = _mappingsByClass.putIfAbsent(mapping.getTypeClass(), mapping);
      if (prev != null && prev != mapping) {
        _mappingsByAlias.remove(typeAlias);
        throw new IllegalArgumentException(
            "duplicate type class " + mapping.getTypeClass().getName());
      }
    }
  }