Package org.springframework.ide.test

Source Code of org.springframework.ide.test.NatureTests

/*******************************************************************************
* Copyright (c) 2004, 2007 Spring IDE Developers
* 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:
*     Spring IDE Developers - initial API and implementation
*******************************************************************************/
package org.springframework.ide.test;

import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.decorators.DecoratorManager;
import org.springframework.ide.eclipse.beans.core.BeansCorePlugin;
import org.springframework.ide.eclipse.beans.core.internal.model.BeansProject;
import org.springframework.ide.eclipse.beans.core.model.IBeansModel;
import org.springframework.ide.eclipse.core.SpringCore;
import org.springframework.ide.eclipse.core.SpringCoreUtils;
import org.springframework.ide.eclipse.core.internal.project.SpringProjectNature;

/**
* Test addition and removal of Spring Beans nature
* @author Loren Rosen
* @author Torsten Juergeleit
* @author Christian Dupuis
*/ 
public class NatureTests extends AbstractSpringIdeTest {

  public NatureTests(String name) {
    super(name);
  }
 
  /**
   * test the addition and removal of Spring Beans nature
   * currently just check:
   *    -- that after adding the nature, eclipse internal
   *       data structures say it has the nature
   *    -- that after adding the nature, the project
   *       has the Spring Beans validator associated with it
   *    -- that after removing the nature, eclipse internal
   *       data structures say it no longer has the nature
   * we don't check that after the removal any Spring Beans
   * validation messages are removed, though we probably should
   * @throws CoreException
   */
  public void testNatureAddAndRemove() throws CoreException {

    IProject eclipseProject = project.getProject();
    assertNotNull(eclipseProject);
   
    IBeansModel model = BeansCorePlugin.getModel();
    assertNotNull(model);
   
    assertFalse(hasBeansProjectNature());
    assertNull(model.getProject(eclipseProject));
    assertFalse(hasBeansBuilder());

    SpringCoreUtils.addProjectNature(eclipseProject, SpringCore.NATURE_ID, new NullProgressMonitor());
    project.waitForAutoBuild();
   
    assertNotNull (eclipseProject.getNature(SpringCore.NATURE_ID));
    assertTrue ( eclipseProject.getNature(SpringCore.NATURE_ID) instanceof SpringProjectNature);

    assertTrue(hasBeansProjectNature());
    assertNotNull(model.getProject(eclipseProject));
    assertTrue(hasBeansBuilder());
   
    BeansProject proj = (BeansProject) model.getProject(eclipseProject);
    assertNotNull(proj);
   
    assertTrue(hasBeansDecorator());

    SpringCoreUtils.removeProjectNature(eclipseProject, SpringCore.NATURE_ID, new NullProgressMonitor());
    project.waitForAutoBuild();
     
    assertFalse(hasBeansProjectNature());
    assertNull(model.getProject(eclipseProject));
    assertFalse(hasBeansBuilder());

  }

  /**
   *
   * @return true if project has Spring Beans nature, false otherwise
   * @throws CoreException
   */
  private boolean hasBeansProjectNature() throws CoreException {
    return SpringCoreUtils.isSpringProject(project.getProject());
    // return project.getProject().hasNature(BeansProjectNature.NATURE_ID);
  }
 
  /**
   *
   * @return true if project has the Spring Beans validator
   * associated with it, false otherwise
   * @throws CoreException
   */
  private boolean hasBeansBuilder() throws CoreException {
    ICommand[] commands = project.getProject().getDescription()
        .getBuildSpec();

    boolean found = false;
    for (int i = 0; i < commands.length; ++i) {
      if (commands[i].getBuilderName().equals(SpringCore.BUILDER_ID))
        found = true;
    }

    return found;
  }
 

  /**
   *
   * @return true if the eclipse workbench knows about the
   * Spring Beans label decorator, false otherwise
   */
  private boolean hasBeansDecorator() {
    DecoratorManager decoratorManager = WorkbenchPlugin.getDefault().getDecoratorManager();
        IBaseLabelProvider b = decoratorManager.getBaseLabelProvider("org.springframework.ide.eclipse.beans.ui.model.beansModelLabelDecorator");
        return b != null;
  }
}
TOP

Related Classes of org.springframework.ide.test.NatureTests

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.