Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright 2011 Objectos, Fábrica de Software LTDA.
  *
  * 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 br.com.objectos.way.relational;

Author(s):
marcio.endo@objectos.com.br (Marcio Endo)
class UniqueInsertJdbc implements UniqueInsert {
  private final AtomicInsert atomicInsert;
  public UniqueInsertJdbc(AtomicInsert atomicInsert) {
    this. = atomicInsert;
  }
  public <T> T of(T entitySupplier<T> finder) {
    try {
      .of(entity);
      return entity;
    } catch (InsertOperationException e) {
      if (e.isIntegrityViolation()) {
        T existing = finder.get();
        if (existing == null) {
          throw new UniqueInsertOperationException("Tried to return found entity but got null"e);
        }
        if (!entity.equals(existing)) {
          throw new UniqueInsertOperationException("Found entity is not equal to supplied entity. "
              + "Maybe you forgot to implement equals() and hashCode()"e);
        }
        return existing;
      } else {
        throw e;
      }
    }
  }
New to GrepCode? Check out our FAQ X