public static final Status execute(final UpgradeLiferayProjectsOp op, final ProgressMonitor pm) {
    Status retval = Status.createOkStatus();

    final IProgressMonitor monitor = ProgressMonitorBridge.create(pm);

    monitor.beginTask(
        "Upgrading Liferay plugin projects (this process may take several minutes)", 30);

    final ElementList<NamedItem> projectItems = op.getSelectedProjects();
    final ElementList<NamedItem> upgradeActions = op.getSelectedActions();
    final String runtimeName = op.getRuntimeName().content();
    final List<String> projectItemNames = new ArrayList<String>();
    final List<String> projectActionItems = new ArrayList<String>();

    for (NamedItem projectItem : projectItems) {
      projectItemNames.add(projectItem.getName().content());
    }

    for (NamedItem upgradeAction : upgradeActions) {
      projectActionItems.add(upgradeAction.getName().content());
    }

    Status[] upgradeStatuses =
        performUpgrade(projectItemNames, projectActionItems, runtimeName, monitor);

    for (Status s : upgradeStatuses) {
      if (!s.ok()) {
        retval =
            Status.createErrorStatus(
                "Some upgrade actions failed, please see Eclipse error log for more details");
      }
    }

    return retval;
  }
  @Test
  public void testNewLiferayPortletProviderNewProperties() throws Exception {
    NewLiferayModuleProjectOp op = NewLiferayModuleProjectOp.TYPE.instantiate();

    op.setProjectName("test-properties-in-portlet-provider");
    op.setComponentName("Test");
    op.setProjectTemplateName("portlet-provider");

    PropertyKey pk = op.getPropertyKeys().insert();

    pk.setName("property-test-key");
    pk.setValue("property-test-value");

    Status exStatus =
        NewLiferayModuleProjectOpMethods.execute(
            op, ProgressMonitorBridge.create(new NullProgressMonitor()));

    assertTrue(exStatus.message(), exStatus.ok());

    IProject modPorject = CoreUtil.getProject(op.getProjectName().content());
    modPorject.open(new NullProgressMonitor());

    IFile testAddPortletProvider =
        modPorject.getFile(
            "src/main/java/test/properties/in/portlet/provider/portlet/TestAddPortletProvider.java");

    assertTrue(testAddPortletProvider.exists());

    SearchFilesVisitor sv = new SearchFilesVisitor();
    List<IFile> searchFiles = sv.searchFiles(modPorject, "TestAddPortletProvider.java");
    IFile componentClassFile = searchFiles.get(0);

    assertEquals(componentClassFile.exists(), true);

    String actual = CoreUtil.readStreamToString(componentClassFile.getContents());

    assertTrue(actual.contains("property-test-key=property-test-value"));
  }