package org.osbp.tests.dtos.service;

import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
import org.osbp.tests.dtos.AddressDto;
import org.osbp.tests.entities.Address;

@SuppressWarnings("all")
public class AddressDtoService extends AbstractDTOServiceWithMutablePersistence<AddressDto, Address> {
  public AddressDtoService() {
    // set the default persistence ID
    setPersistenceId("businessdata");
  }
  
  public Class<AddressDto> getDtoClass() {
    return AddressDto.class;
  }
  
  public Class<Address> getEntityClass() {
    return Address.class;
  }
  
  public Object getId(final AddressDto dto) {
    return dto.getId();
  }
}
