blob: 2faf33ede4f5bd57386953624daa3e5b6dbb205a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 BSI Business Systems Integration AG.
* All rights reserved. This program and the accompanying materials
* are 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
*
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
package org.eclipse.scout.sdk.internal.test.operation.project;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeHierarchy;
import org.eclipse.scout.sdk.ScoutSdkCore;
import org.eclipse.scout.sdk.extensions.runtime.classes.RuntimeClasses;
import org.eclipse.scout.sdk.helper.ScoutProjectHelper;
import org.eclipse.scout.sdk.internal.test.AbstractScoutSdkTest;
import org.eclipse.scout.sdk.jdt.compile.ScoutSeverityManager;
import org.eclipse.scout.sdk.operation.project.template.OutlineTemplateOperation;
import org.eclipse.scout.sdk.operation.project.template.SingleFormTemplateOperation;
import org.eclipse.scout.sdk.util.PropertyMap;
import org.eclipse.scout.sdk.util.internal.typecache.JavaResourceChangedEmitter;
import org.eclipse.scout.sdk.util.jdt.JdtUtility;
import org.eclipse.scout.sdk.util.type.TypeFilters;
import org.eclipse.scout.sdk.util.type.TypeUtility;
import org.eclipse.scout.sdk.util.typecache.IPrimaryTypeTypeHierarchy;
import org.eclipse.scout.sdk.workspace.IScoutBundle;
import org.eclipse.scout.sdk.workspace.IScoutBundleGraph;
import org.eclipse.scout.sdk.workspace.ScoutBundleFilters;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* TODO work in progress
*/
public class ScoutProjectCreateTest extends AbstractScoutSdkTest {
@BeforeClass
public static void setup() {
ScoutSdkCore.getScoutWorkspace();
}
@Test
public void testCreateBundles() throws Exception {
try {
ScoutSdkCore.getScoutWorkspace();
IScoutBundle project = ScoutProjectHelper.setupNewProject("org.eclipse.testapp", true, true, true, true, false);
int severity = ScoutSeverityManager.getInstance().getSeverityOf(ResourcesPlugin.getWorkspace().getRoot());
Assert.assertTrue(severity < IMarker.SEVERITY_ERROR);
Assert.assertNotNull(project.getChildBundle(ScoutBundleFilters.getBundlesOfTypeFilter(IScoutBundle.TYPE_CLIENT), false));
Assert.assertNotNull(project.getChildBundle(ScoutBundleFilters.getBundlesOfTypeFilter(IScoutBundle.TYPE_SHARED), true));
Assert.assertNotNull(project.getChildBundle(ScoutBundleFilters.getBundlesOfTypeFilter(IScoutBundle.TYPE_SERVER), false));
Assert.assertNotNull(project.getChildBundle(ScoutBundleFilters.getBundlesOfTypeFilter(IScoutBundle.TYPE_UI_SWT), false));
Assert.assertNull(project.getChildBundle(ScoutBundleFilters.getBundlesOfTypeFilter(IScoutBundle.TYPE_UI_SWING), false));
}
finally {
clearWorkspace();
IScoutBundleGraph bundleGraph = ScoutSdkCore.getScoutWorkspace().getBundleGraph();
bundleGraph.waitFor();
Assert.assertEquals(0, bundleGraph.getBundles(ScoutBundleFilters.getRootBundlesFilter()).length);
}
}
@Test
public void testLoop() throws Exception {
// create 5 times a project with the same name and remove it again
for (int i = 0; i < 5; i++) {
System.out.println("-------------- start " + i + "--------------");
testTemplateDesktopForm("org.eclipse.testapp");
for (ICompilationUnit icu : JavaResourceChangedEmitter.getPendingWorkingCopies()) {
System.out.println("still available resource: " + icu.getElementName());
}
System.out.println("-------------- end " + i + "--------------");
}
}
private void testTemplateDesktopForm(String projectName) throws Exception {
try {
PropertyMap properties = new PropertyMap();
ScoutProjectHelper.setupNewProject(projectName, true, true, true, properties);
final IType iForm = TypeUtility.getType(RuntimeClasses.IForm);
ITypeHierarchy hierarchy = iForm.newTypeHierarchy(new NullProgressMonitor());
for (IType tx : hierarchy.getAllSubtypes(iForm)) {
if (tx.getElementName().equals("DesktopForm")) {
System.out.println("EEKEKEKKEKEKEKKEKEKKEKEKEKKEKEKKEKE ");
}
}
final IPrimaryTypeTypeHierarchy formHierarchy = TypeUtility.getPrimaryTypeHierarchy(iForm);
IType[] subtypes = formHierarchy.getAllSubtypes(iForm, TypeFilters.getInWorkspaceFilter());
if (subtypes.length > 0) {
System.out.println("Should not come up:");
for (IType t : subtypes) {
System.out.println(" - " + t.getFullyQualifiedName() + " exists " + TypeUtility.exists(t) + " " + t.getResource().exists());
}
}
Assert.assertEquals(0, subtypes.length);
SingleFormTemplateOperation op = new SingleFormTemplateOperation();
op.setProperties(properties);
op.init();
executeBuildAssertNoCompileErrors(op);
JdtUtility.waitForIndexesReady();
System.out.println("iForm exists " + iForm.exists() + " " + iForm.getJavaProject().exists());
subtypes = formHierarchy.getAllSubtypes(iForm, TypeFilters.getInWorkspaceFilter());
// if (subtypes.length == 0) {
// formHierarchy.invalidate();
// subtypes = formHierarchy.getAllSubtypes(iForm, TypeFilters.getInWorkspaceFilter());
// System.out.println(subtypes.length);
// }
if (subtypes.length != 1) {
System.out.println("NOT FIRED RESOURCES -------");
for (ICompilationUnit icu : JavaResourceChangedEmitter.getPendingWorkingCopies()) {
System.out.println(" - '" + icu.getElementName() + "'");
}
System.out.println("EEEEEEEEEEEEEEEEEEEEEERRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR");
Thread.sleep(10000);
}
Assert.assertEquals(1, subtypes.length);
}
finally {
clearWorkspace();
Assert.assertEquals(0, ScoutSdkCore.getScoutWorkspace().getBundleGraph().getBundles(ScoutBundleFilters.getRootBundlesFilter()).length);
}
}
@Test
public void testTemplateOutlineTreeTable() throws Exception {
try {
PropertyMap properties = new PropertyMap();
ScoutProjectHelper.setupNewProject("org.eclipse.testapp1", true, true, true, properties);
final IType iForm = TypeUtility.getType(RuntimeClasses.IForm);
final IPrimaryTypeTypeHierarchy formHierarchy = TypeUtility.getPrimaryTypeHierarchy(iForm);
IType[] subtypes = formHierarchy.getAllSubtypes(iForm, TypeFilters.getInWorkspaceFilter());
Assert.assertEquals(0, subtypes.length);
OutlineTemplateOperation op = new OutlineTemplateOperation();
op.setProperties(properties);
op.init();
executeBuildAssertNoCompileErrors(op);
}
finally {
clearWorkspace();
Assert.assertEquals(0, ScoutSdkCore.getScoutWorkspace().getBundleGraph().getBundles(ScoutBundleFilters.getRootBundlesFilter()).length);
}
}
}