/******************************************************************************* * Copyright (c) 2007-2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.hibernate.eclipse.console.test.mappingproject; import java.io.File; import java.io.PrintWriter; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.internal.core.PackageFragmentRoot; import org.eclipse.osgi.util.NLS; import org.hibernate.console.ConsoleConfiguration; import org.hibernate.eclipse.console.test.ConsoleTestMessages; import org.hibernate.eclipse.console.test.project.ConfigurableTestProject; import org.hibernate.eclipse.console.test.utils.ConsoleConfigUtils; import org.jboss.tools.hibernate.runtime.spi.IArtifactCollector; import org.jboss.tools.hibernate.runtime.spi.IConfiguration; import org.jboss.tools.hibernate.runtime.spi.IHibernateMappingExporter; import org.jboss.tools.hibernate.runtime.spi.IService; import org.jboss.tools.hibernate.runtime.spi.ServiceLookup; /** * @author Dmitry Geraskov * */ @SuppressWarnings("restriction") public class HbmExportExceptionTest extends BaseTestSetCase { protected ConfigurableTestProject testProject = null; private IService service = null; public HbmExportExceptionTest() { } public HbmExportExceptionTest(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); service = ServiceLookup.findService("3.5"); } protected void tearDown() throws Exception { testProject = null; super.tearDown(); } public void testHbmExportExceptionTest() throws Exception { try { Object[] persClassesInit = getPersistenceClasses(false); final ConsoleConfiguration consCFG = getConsoleConfig(); IConfiguration config = consCFG.getConfiguration(); //delete old hbm files assertNotNull(testPackage); int nDeleted = 0; if (testPackage.getNonJavaResources().length > 0) { Object[] ress = testPackage.getNonJavaResources(); for (int i = 0; i < ress.length; i++) { if (ress[i] instanceof IFile){ IFile res = (IFile)ress[i]; if (res.getName().endsWith(".hbm.xml")) { //$NON-NLS-1$ res.delete(true, false, null); nDeleted++; } } } } IHibernateMappingExporter hce = service.newHibernateMappingExporter(config, getSrcFolder()); try { hce.start(); IArtifactCollector collector = service.newArtifactCollector(); collector.formatFiles(); try {//build generated configuration testPackage.getResource().refreshLocal(IResource.DEPTH_INFINITE, null); testPackage.getJavaProject().getProject().build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor()); ConsoleConfigUtils.customizeCfgXmlForPack(testPackage); assertNotNull(consCFG); consCFG.reset(); consCFG.build(); assertTrue(consCFG.hasConfiguration()); consCFG.getConfiguration().buildMappings(); config = consCFG.getConfiguration(); } catch (CoreException e) { String out = NLS.bind(ConsoleTestMessages.UpdateConfigurationTest_error_customising_file_for_package, new Object[] { ConsoleConfigUtils.CFG_FILE_NAME, testPackage.getPath(), e.getMessage() } ); fail(out); } } catch (Exception e){ throw (Exception)e.getCause(); } // Object[] persClassesReInit = getPersistenceClasses(false); // int nCreated = 0; if (testPackage.getNonJavaResources().length > 0) { Object[] ress = testPackage.getNonJavaResources(); for (int i = 0; i < ress.length; i++) { if (ress[i] instanceof IFile) { IFile res = (IFile)ress[i]; if (res.getName().endsWith(".hbm.xml")) { //$NON-NLS-1$ nCreated++; } } } } // assertTrue(persClassesInit.length == persClassesReInit.length); assertTrue(nCreated > 0); assertTrue(nDeleted >= 0 && persClassesInit.length > 0); assertTrue(nCreated <= persClassesInit.length); } catch (Exception e){ String newMessage = "\nPackage " + testPackage.getElementName() + ":"; //$NON-NLS-1$ //$NON-NLS-2$ throw new WripperException(newMessage, e); } } private File getSrcFolder() throws JavaModelException{ PackageFragmentRoot packageFragmentRoot = null; IPackageFragmentRoot[] roots = testProject.getIJavaProject().getAllPackageFragmentRoots(); for (int i = 0; i < roots.length && packageFragmentRoot == null; i++) { if (roots[i].getClass() == PackageFragmentRoot.class) { packageFragmentRoot = (PackageFragmentRoot) roots[i]; } } assertNotNull(packageFragmentRoot); return packageFragmentRoot.getResource().getLocation().toFile(); } public ConfigurableTestProject getTestProject() { return testProject; } public void setTestProject(ConfigurableTestProject testProject) { this.testProject = testProject; } } class WripperException extends Exception { private static final long serialVersionUID = 8192540921613389467L; private String message; public WripperException(String message, Exception cause){ super(cause); this.message = message; setStackTrace(cause.getStackTrace()); } @Override public Throwable getCause() { return null; } @Override public void printStackTrace(PrintWriter s) { s.println(message); super.getCause().printStackTrace(s); } }