package org.hibernate.eclipse.jdt.ui.test; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; import org.hibernate.eclipse.console.test.HibernateConsoleTest; import org.hibernate.eclipse.console.test.project.SimpleTestProject; import org.hibernate.eclipse.console.test.project.xpl.JavaProjectHelper; import org.hibernate.eclipse.console.test.utils.FilesTransfer; public class HibernateErrorsTest extends HibernateConsoleTest { private SimpleTestProject project; public HibernateErrorsTest(String name) { super(name); } @Override protected SimpleTestProject createTestProject() { return new SimpleTestProject("hqlquerytest-" //$NON-NLS-1$ + System.currentTimeMillis()) { // the currentTime Millis can be // removed once the classloader // stop hanging on to the jars. // see JBIDE-1012 @Override protected void buildProject() throws JavaModelException, CoreException, IOException { super.buildProject(); // set up project #3: file system structure with project as // source folder // add an internal jar File ejb3lib = HibernateJDTuiTestPlugin.getDefault() .getFileInPlugin( new Path("testresources/ejb3-persistence.jar")); //$NON-NLS-1$ assertTrue( "ejb3 lib not found", ejb3lib != null && ejb3lib.exists()); //$NON-NLS-1$ JavaProjectHelper.addToClasspath(getIJavaProject(), JavaRuntime .getDefaultJREContainerEntry()); IPackageFragmentRoot addLibraryWithImport = JavaProjectHelper .addLibraryWithImport(getIJavaProject(), Path .fromOSString(ejb3lib.getPath()), null, null); addLibraryWithImport.hasChildren(); assertEquals(3, getIJavaProject().getRawClasspath().length); getIProject().getFolder("src/META-INF").create(true, true, //$NON-NLS-1$ new NullProgressMonitor()); getIProject() .getFile("src/META-INF/persistence.xml") //$NON-NLS-1$ .create( new ByteArrayInputStream( ("<persistence>\n" //$NON-NLS-1$ + " <persistence-unit name=\"manager1\" transaction-type=\"RESOURCE_LOCAL\">\n" //$NON-NLS-1$ + " <class>test.TestClass</class>\n" //$NON-NLS-1$ + " <properties>\n" //$NON-NLS-1$ + " <property name=\"hibernate.dialect\" value=\"org.hibernate.dialect.HSQLDialect\"/>\n" //$NON-NLS-1$ + " <property name=\"hibernate.connection.driver_class\" value=\"org.hsqldb.jdbcDriver\"/>\n" //$NON-NLS-1$ + " <property name=\"hibernate.connection.username\" value=\"sa\"/>\n" //$NON-NLS-1$ + " <property name=\"hibernate.connection.password\" value=\"\"/>\n" //$NON-NLS-1$ + " <property name=\"hibernate.connection.url\" value=\"jdbc:hsqldb:.\"/>\n" //$NON-NLS-1$ + " <property name=\"hibernate.query.startup_check\" value=\"false\"/>\n" //$NON-NLS-1$ + " </properties>\n" //$NON-NLS-1$ + " </persistence-unit>\n" //$NON-NLS-1$ + "</persistence>").getBytes()), //$NON-NLS-1$ false /* force */, new NullProgressMonitor()); getIProject().findMember("src/META-INF/persistence.xml"); //$NON-NLS-1$ getIProject().build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor()); } @Override protected IType buildType(IPackageFragment pack, String cuName) throws JavaModelException { ICompilationUnit cu = pack.createCompilationUnit(cuName, "", //$NON-NLS-1$ false, null); cu.createPackageDeclaration(pack.getElementName(), null); IType type = cu.createType( "@javax.persistence.NamedQuery(name=\"fromUnknown\", query=\"from Unknown\")\n" //$NON-NLS-1$ + "@javax.persistence.Entity\n" //$NON-NLS-1$ + "public class " + TYPE_NAME + " {}", null, //$NON-NLS-1$ //$NON-NLS-2$ false, null); type.createField("@javax.persistence.Id private int id;", null, //$NON-NLS-1$ false, null); type .createField("private String testField;", null, false, //$NON-NLS-1$ null); type .createMethod( "public String getTestField() {return this.testField;}", //$NON-NLS-1$ null, false, null); type .createMethod( "public void setTestField(String testField) {this.testField = testField;}", //$NON-NLS-1$ null, false, null); return type; } }; } @Override protected void setUp() throws Exception { this.project = createTestProject(); waitForJobs(); } @Override protected void tearDown() throws Exception { // ccfg.reset(); // super.tearDown(); waitForJobs(); IEditorPart editorPart = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage().getActiveEditor(); PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .closeEditor(editorPart, false); PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() .setPerspective( PlatformUI.getWorkbench().getPerspectiveRegistry() .findPerspectiveWithId( "org.eclipse.ui.resourcePerspective")); //$NON-NLS-1$ waitForJobs(); // getProject().deleteIProject(); // super.tearDown(); IProject proj = getProject().getIProject(); String projRoot = proj.getLocation().toFile().getAbsolutePath(); File file = new File(projRoot); getProject().getIProject().delete(false, true, null); waitForJobs(); FilesTransfer.delete(file); } public void testDummy() throws JavaModelException { } protected SimpleTestProject getProject() { return this.project; } }