Package org.hibernate.test.mappingexception

Source Code of org.hibernate.test.mappingexception.MappingExceptionTest

// $Id: SQLExceptionConversionTest.java 6847 2005-05-21 15:46:41Z oneovthafew $
package org.hibernate.test.mappingexception;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.hibernate.DuplicateMappingException;
import org.hibernate.Hibernate;
import org.hibernate.InvalidMappingException;
import org.hibernate.MappingException;
import org.hibernate.MappingNotFoundException;
import org.hibernate.cfg.Configuration;
import org.hibernate.junit.UnitTestCase;
import org.hibernate.util.ConfigHelper;

/**
* Test for various mapping exceptions thrown when mappings are not found or invalid.
*
* @author Max Rydahl Andersen
*/
public class MappingExceptionTest extends UnitTestCase {

  public MappingExceptionTest(String name) {
    super( name );
  }

  public static Test suite() {
    return new TestSuite( MappingExceptionTest.class );
  }

  public void testNotFound() throws MappingException, MalformedURLException {
    Configuration cfg = new Configuration();

    try {
      cfg.addCacheableFile( "completelybogus.hbm.xml" );
      fail();
    }
    catch ( MappingNotFoundException e ) {
      assertEquals( e.getType(), "file" );
      assertEquals( e.getPath(), "completelybogus.hbm.xml" );
    }

    try {
      cfg.addCacheableFile( new File( "completelybogus.hbm.xml" ) );
      fail();
    }
    catch ( MappingNotFoundException e ) {
      assertEquals( e.getType(), "file" );
      assertEquals( e.getPath(), "completelybogus.hbm.xml" );
    }

    try {
      cfg.addClass( Hibernate.class ); // TODO: String.class result in npe, because no classloader exists for it
      fail();
    }
    catch ( MappingNotFoundException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), "org/hibernate/Hibernate.hbm.xml" );
    }

    try {
      cfg.addFile( "completelybogus.hbm.xml" );
      fail();
    }
    catch ( MappingNotFoundException e ) {
      assertEquals( e.getType(), "file" );
      assertEquals( e.getPath(), "completelybogus.hbm.xml" );
    }

    try {
      cfg.addFile( new File( "completelybogus.hbm.xml" ) );
      fail();
    }
    catch ( MappingNotFoundException inv ) {
      assertEquals( inv.getType(), "file" );
      assertEquals( inv.getPath(), "completelybogus.hbm.xml" );
    }

    try {
      cfg.addInputStream( new ByteArrayInputStream( new byte[0] ) );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "input stream" );
      assertEquals( inv.getPath(), null );
    }

    try {
      cfg.addResource( "nothere" );
      fail();
    }
    catch ( MappingNotFoundException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), "nothere" );
    }

    try {
      cfg.addResource( "nothere", getClass().getClassLoader() );
      fail();
    }
    catch ( MappingNotFoundException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), "nothere" );
    }

    try {
      cfg.addURL( new URL( "file://nothere" ) );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "URL" );
      assertEquals( inv.getPath(), "file://nothere" );
    }
  }

  public void testDuplicateMapping() {
    String resourceName = "org/hibernate/test/mappingexception/User.hbm.xml";
    Configuration cfg = new Configuration();
    cfg.addResource( resourceName );
    try {
      cfg.addResource( resourceName );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), resourceName );
      assertClassAssignability( inv.getCause().getClass(), DuplicateMappingException.class );
    }
  }

  public void testInvalidMapping() throws MappingException, IOException {
    String resourceName = "org/hibernate/test/mappingexception/InvalidMapping.hbm.xml";
    File file = File.createTempFile( "TempInvalidMapping", ".hbm.xml" );
    file.deleteOnExit();
    copy( ConfigHelper.getConfigStream( resourceName ), file );

    Configuration cfg = new Configuration();
    try {
      cfg.addCacheableFile( file.getAbsolutePath() );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "file" );
      assertNotNull( inv.getPath() );
      assertTrue( inv.getPath().endsWith( ".hbm.xml" ) );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addCacheableFile( file );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "file" );
      assertNotNull( inv.getPath() );
      assertTrue( inv.getPath().endsWith( ".hbm.xml" ) );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addClass( InvalidMapping.class );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), "org/hibernate/test/mappingexception/InvalidMapping.hbm.xml" );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addFile( file.getAbsolutePath() );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "file" );
      assertEquals( inv.getPath(), file.getPath() );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addFile( file );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "file" );
      assertEquals( inv.getPath(), file.getPath() );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }


    try {
      cfg.addInputStream( ConfigHelper.getResourceAsStream( resourceName ) );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "input stream" );
      assertEquals( inv.getPath(), null );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addResource( resourceName );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), resourceName );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addResource( resourceName, getClass().getClassLoader() );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "resource" );
      assertEquals( inv.getPath(), resourceName );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }

    try {
      cfg.addURL( ConfigHelper.findAsResource( resourceName ) );
      fail();
    }
    catch ( InvalidMappingException inv ) {
      assertEquals( inv.getType(), "URL" );
      assertTrue( inv.getPath().endsWith( "InvalidMapping.hbm.xml" ) );
      assertTrue( !( inv.getCause() instanceof MappingNotFoundException ) );
    }
  }

  void copy(InputStream in, File dst) throws IOException {
    OutputStream out = new FileOutputStream( dst );

    // Transfer bytes from in to out
    byte[] buf = new byte[1024];
    int len;
    while ( ( len = in.read( buf ) ) > 0 ) {
      out.write( buf, 0, len );
    }
    in.close();
    out.close();
  }
}
TOP

Related Classes of org.hibernate.test.mappingexception.MappingExceptionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.