Author: fbricon
Date: 2012-04-12 04:42:07 -0400 (Thu, 12 Apr 2012)
New Revision: 40150
Added:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/xpl/DependencyKey.java
Removed:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenArtifactHelper.java
Modified:
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExample.java
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExampleUtil.java
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/NewProjectExamplesWizard2.java
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/WizardContext.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/ImportMavenArchetypeProjectExampleDelegate.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/Messages.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/messages.properties
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardFirstPage.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardPage.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenProjectConstants.java
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MissingRepositoryWarningComponent.java
Log:
JBIDE-11242: Users should be warned when WFK maven repo is missing
https://issues.jboss.org/browse/JBIDE-11242
Modified:
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExample.java
===================================================================
---
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExample.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExample.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -50,6 +50,7 @@
private String defaultProfiles = ""; //$NON-NLS-1$
private int priority;
private Set<String> tags;
+ private Set<String> essentialEnterpriseDependencies;
private String iconPath;
public ProjectExample() {
@@ -334,4 +335,13 @@
}
return -1;
}
+
+ public void setEssentialEnterpriseDependencyGavs(Set<String> gavs) {
+ essentialEnterpriseDependencies = gavs;
+ }
+
+
+ public Set<String> getEssentialEnterpriseDependencyGavs() {
+ return essentialEnterpriseDependencies;
+ }
}
Modified:
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExampleUtil.java
===================================================================
---
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExampleUtil.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/model/ProjectExampleUtil.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -391,6 +391,8 @@
if (path != null) {
project.setIconPath(path);
}
+ } else if (nodeName.equals("essentialEnterpriseDependencies")) {
+ parseEssentialEnterpriseDependencies(project, child);
}
}
}
@@ -405,6 +407,24 @@
return list;
}
+ private static void parseEssentialEnterpriseDependencies(
+ ProjectExample project, Element enterpriseDependenciesElement) {
+
+ String tagsValue = enterpriseDependenciesElement.getTextContent();
+ if (tagsValue != null) {
+ StringTokenizer tokenizer = new
StringTokenizer(tagsValue.trim(),",");//$NON-NLS-1$
+ Set<String> gavs = new HashSet<String>();
+ while (tokenizer.hasMoreTokens()) {
+ String gav = tokenizer.nextToken().trim();
+ if (gav.length() > 0) {
+ gavs.add(gav);
+ }
+ }
+ project.setEssentialEnterpriseDependencyGavs(gavs);
+ }
+
+ }
+
public static Set<URL> getCategoryURLs() {
if (categoryUrls == null) {
categoryUrls = new HashSet<URL>();
Modified:
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/NewProjectExamplesWizard2.java
===================================================================
---
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/NewProjectExamplesWizard2.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/NewProjectExamplesWizard2.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -109,8 +109,8 @@
} else {
// FIXME
}
+ String type = projectExample.getImportType();
for (IProjectExamplesWizardPage contributedPage:contributedPages) {
- String type = projectExample.getImportType();
if (type == null || !type.equals(contributedPage.getProjectExampleType())) {
continue;
}
@@ -171,18 +171,14 @@
Set<String> keySet = extensionPages.keySet();
for (String key:keySet) {
List<ContributedPage> contributions = extensionPages.get(key);
+ boolean canSetProjectExample = isCentral && projectExample != null &&
key.equals(projectExample.getImportType());
for(ContributedPage page:contributions) {
try {
- if (!isCentral) {
- IProjectExamplesWizardPage contributedPage = (IProjectExamplesWizardPage)
page.getConfigurationElement().createExecutableExtension(ProjectExamplesActivator.CLASS);
- contributedPages.add(contributedPage);
- } else {
- if (projectExample != null && key.equals(projectExample.getImportType()))
{
- IProjectExamplesWizardPage contributedPage = (IProjectExamplesWizardPage)
page.getConfigurationElement().createExecutableExtension(ProjectExamplesActivator.CLASS);
- contributedPage.setProjectExample(projectExample);
- contributedPages.add(contributedPage);
- }
+ IProjectExamplesWizardPage contributedPage = (IProjectExamplesWizardPage)
page.getConfigurationElement().createExecutableExtension(ProjectExamplesActivator.CLASS);
+ if (canSetProjectExample) {
+ contributedPage.setProjectExample(projectExample);
}
+ contributedPages.add(contributedPage);
} catch (CoreException e) {
ProjectExamplesActivator.log(e);
}
Modified:
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/WizardContext.java
===================================================================
---
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/WizardContext.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/examples/plugins/org.jboss.tools.project.examples/src/org/jboss/tools/project/examples/wizard/WizardContext.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -43,8 +43,8 @@
}
}
- public void getProperty(String key) {
- context.get(key);
+ public Object getProperty(String key) {
+ return context.get(key);
}
private void fireChangeEvent(String key, Object value) {
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/ImportMavenArchetypeProjectExampleDelegate.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/ImportMavenArchetypeProjectExampleDelegate.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/ImportMavenArchetypeProjectExampleDelegate.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -60,10 +60,9 @@
includedProjects.add(projectName);
String artifactId = (String)
propertiesMap.get(ProjectExamplesActivator.PROPERTY_ARTIFACT_ID);
IPath location = (IPath)
propertiesMap.get(ProjectExamplesActivator.PROPERTY_LOCATION_PATH);
- String projectFolder = location.append(artifactId).toFile()
- .getAbsolutePath();
- MavenModelManager mavenModelManager = MavenPlugin
- .getMavenModelManager();
+ String projectFolder = location.append(artifactId).toFile().getAbsolutePath();
+ MavenModelManager mavenModelManager = MavenPlugin.getMavenModelManager();
+
LocalProjectScanner scanner = new LocalProjectScanner(location.toFile(),
projectFolder, true, mavenModelManager);
try {
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/Messages.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/Messages.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/Messages.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -12,6 +12,7 @@
public static String ArchetypeExamplesWizardFirstPage_Target_Runtime_Label;
public static String ArchetypeExamplesWizardFirstPage_Title;
public static String ArchetypeExamplesWizardFirstPage_Unresolved_Enterprise_Repo;
+ public static String ArchetypeExamplesWizardFirstPage_Unresolved_WFK_Repo;
public static String ArchetypeExamplesWizardFirstPage_Error_Package;
static {
// initialize resource bundle
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/messages.properties
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/messages.properties 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/messages.properties 2012-04-12
08:42:07 UTC (rev 40150)
@@ -1,9 +1,10 @@
-ArchetypeExamplesWizardFirstPage_Existing_Project=Project already exists
+ArchetypeExamplesWizardFirstPage_Existing_Project=Invalid project name: Project
"{0}" already exists.
ArchetypeExamplesWizardFirstPage_No_TargetRuntime=<none>
ArchetypeExamplesWizardFirstPage_Package_Label=Package
ArchetypeExamplesWizardFirstPage_ProjectName_Cant_Be_Empty=The project name can not be
empty
ArchetypeExamplesWizardFirstPage_ProjectName_Label=Project name
ArchetypeExamplesWizardFirstPage_Target_Runtime_Label=Target Runtime
ArchetypeExamplesWizardFirstPage_Title=Create a new Java EE project
-ArchetypeExamplesWizardFirstPage_Unresolved_Enterprise_Repo={0} cannot be found.\n This
indicates you do not have access to a JBoss Enterprise Maven repository.\n This can cause
build problems. Follow this <a
href\="http\://community.jboss.org/wiki/SettingUpTheJBossEnterpriseR...
for more details.
+ArchetypeExamplesWizardFirstPage_Unresolved_Enterprise_Repo={0} cannot be found. This
indicates you do not have access to a JBoss Enterprise Maven repository.\nThis can cause
build problems. Follow this <a
href\="http\://community.jboss.org/wiki/SettingUpTheJBossEnterpriseR...
for more details.
+ArchetypeExamplesWizardFirstPage_Unresolved_WFK_Repo=The enterprise version of this
project has a dependency on {0} which cannot be found. This indicates you do not have
access to a JBoss WFK Maven repository or that repository is incomplete.\nThis can cause
build problems. Follow this <a
href\="http\://community.jboss.org/wiki/SettingUpTheJBossEnterpriseR...
for more details.
ArchetypeExamplesWizardFirstPage_Error_Package=Invalid package name
\ No newline at end of file
Copied:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java
(from rev 40076,
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenArtifactHelper.java)
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -0,0 +1,94 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * 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:
+ * JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.maven.project.examples.utils;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.embedder.IMaven;
+import org.eclipse.osgi.util.NLS;
+import org.jboss.tools.maven.project.examples.MavenProjectExamplesActivator;
+import org.jboss.tools.maven.project.examples.Messages;
+import org.jboss.tools.maven.project.examples.xpl.DependencyKey;
+import org.jboss.tools.project.examples.model.ProjectExample;
+
+public class MavenArtifactHelper {
+
+ private static final DependencyKey ENTERPRISE_JBOSS_SPEC =
DependencyKey.fromPortableString("org.jboss.spec:jboss-javaee-web-6.0:pom:3.0.0.Beta1-redhat-1::");
//$NON-NLS-1$
+
+ /**
+ * Checks if the EAP repository is available
+ *
+ * @return true if org.jboss.spec:jboss-javaee-web-6.0:pom:3.0.0.Beta1-redhat-1 can be
resolved
+ */
+ public static boolean isEnterpriseRepositoryAvailable() {
+ boolean isRepoAvailable = isArtifactAvailable(ENTERPRISE_JBOSS_SPEC); //$NON-NLS-1$
+ return isRepoAvailable;
+ }
+
+ /**
+ * Checks if an artifact can be resolved
+ * @param dependencyKey
+ * @return true is the dependencyKey can be resolved to an artifact.
+ */
+ public static boolean isArtifactAvailable(String dependencyKey) {
+ DependencyKey key = DependencyKey.fromPortableString(dependencyKey);
+ return isArtifactAvailable(key);
+ }
+
+ public static boolean isArtifactAvailable(DependencyKey key) {
+ boolean isRepoAvailable = false;
+ try {
+ IMaven maven = MavenPlugin.getMaven();
+ ArrayList<ArtifactRepository> repos = new
ArrayList<ArtifactRepository>();
+ repos.addAll(maven.getArtifactRepositories());
+ IProgressMonitor nullProgressMonitor = new NullProgressMonitor();
+ Artifact a = MavenPlugin.getMaven().resolve(
+ key.getGroupId(), key.getArtifactId(), key.getVersion(),
+ key.getType(), key.getClassifier(), repos, nullProgressMonitor);
+ isRepoAvailable = a != null && a.isResolved();
+ } catch (CoreException e) {
+ System.err.println(e.getLocalizedMessage());
+ }
+ return isRepoAvailable;
+ }
+
+
+ public static IStatus checkEnterpriseRequirementsAvailable(ProjectExample project) {
+ if (!isEnterpriseRepositoryAvailable()) {
+ return new Status(IStatus.ERROR,
+ MavenProjectExamplesActivator.PLUGIN_ID,
+ NLS.bind(Messages.ArchetypeExamplesWizardFirstPage_Unresolved_Enterprise_Repo,
ENTERPRISE_JBOSS_SPEC));
+ }
+ if (project != null) {
+ Set<String> requirements = project.getEssentialEnterpriseDependencyGavs();
+ if (requirements != null) {
+ for (String gav : requirements) {
+ DependencyKey key = DependencyKey.fromPortableString(gav);
+ if (!isArtifactAvailable(key)) {
+ return new Status(IStatus.ERROR,
+ MavenProjectExamplesActivator.PLUGIN_ID,
+ NLS.bind(Messages.ArchetypeExamplesWizardFirstPage_Unresolved_WFK_Repo,
key));
+ }
+ }
+ }
+ }
+ return Status.OK_STATUS;
+ }
+}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardFirstPage.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardFirstPage.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardFirstPage.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -11,7 +11,6 @@
package org.jboss.tools.maven.project.examples.wizard;
import java.lang.reflect.Field;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -20,6 +19,7 @@
import java.util.Set;
import java.util.regex.Pattern;
+import org.apache.maven.model.Model;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -27,10 +27,6 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants;
@@ -40,8 +36,6 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
@@ -51,7 +45,6 @@
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.PlatformUI;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
@@ -62,6 +55,7 @@
import org.jboss.ide.eclipse.as.core.util.RuntimeUtils;
import org.jboss.tools.maven.project.examples.MavenProjectExamplesActivator;
import org.jboss.tools.maven.project.examples.Messages;
+import org.jboss.tools.maven.project.examples.utils.MavenArtifactHelper;
import org.jboss.tools.project.examples.ProjectExamplesActivator;
import org.jboss.tools.project.examples.model.ProjectExample;
import org.jboss.tools.project.examples.wizard.IProjectExamplesWizardPage;
@@ -76,21 +70,22 @@
*/
public class ArchetypeExamplesWizardFirstPage extends MavenProjectWizardLocationPage
implements IProjectExamplesWizardPage {
- private static final String TARGET_RUNTIME = "targetRuntime";
+ private static final String TARGET_RUNTIME = "targetRuntime"; //$NON-NLS-1$
private Label projectNameLabel;
private Combo projectNameCombo;
private Label packageLabel;
private Combo packageCombo;
private Combo serverTargetCombo;
private Map<String, IRuntime> serverRuntimes;
- private Composite warningLink;
+ private MissingRepositoryWarningComponent warningComponent;
private boolean initialized;
- private Boolean isEnterpriseRepoAvailable;
+ private IStatus enterpriseRepoStatus;
private ProjectExample projectDescription;
private ProjectExample projectExample;
private WizardContext context;
private IRuntimeLifecycleListener listener;
+ private Link warninglink;
public ArchetypeExamplesWizardFirstPage() {
super(new ProjectImportConfiguration(), "", "",new
ArrayList<IWorkingSet>());
@@ -183,7 +178,7 @@
@Override
protected void createAdvancedSettings(Composite composite, GridData gridData) {
- createMissingRepositoriesWarning(composite, gridData);
+ warningComponent = new MissingRepositoryWarningComponent(composite, false);
}
protected void createServerTargetComposite(Composite parent) {
@@ -249,7 +244,7 @@
}
//Need to be called first, or error message would be overwritten
super.validate();
-
+
String errorMessage = validateInputs();
setErrorMessage(errorMessage);
setMessage(null);
@@ -269,16 +264,18 @@
return Messages.ArchetypeExamplesWizardFirstPage_ProjectName_Cant_Be_Empty;
}
+ final String resolvedName = getImportConfiguration().getProjectName(getModel());
+
// check whether the project name is valid
- final IStatus nameStatus = workspace.validateName(name, IResource.PROJECT);
+ final IStatus nameStatus = workspace.validateName(resolvedName, IResource.PROJECT);
if(!nameStatus.isOK()) {
return nameStatus.getMessage();
}
// check whether project already exists
- final IProject handle = workspace.getRoot().getProject(name);
+ final IProject handle = workspace.getRoot().getProject(resolvedName);
if(handle.exists()) {
- return Messages.ArchetypeExamplesWizardFirstPage_Existing_Project;
+ return NLS.bind(Messages.ArchetypeExamplesWizardFirstPage_Existing_Project,
resolvedName);
}
//check if the package is valid
@@ -297,10 +294,20 @@
}
protected void validateEnterpriseRepo() {
-
- boolean isWarningLinkVisible = (isEnterpriseTargetRuntime() &&
!assertEnterpriseRepoAccessible());
- if (warningLink != null) {
- warningLink.setVisible(isWarningLinkVisible);
+ if (warningComponent != null) {
+ boolean isWarningLinkVisible = false;
+ if (isEnterpriseTargetRuntime()) {
+ if (enterpriseRepoStatus == null) {
+ enterpriseRepoStatus =
MavenArtifactHelper.checkEnterpriseRequirementsAvailable(projectExample);
+ }
+ isWarningLinkVisible = !enterpriseRepoStatus.isOK();
+ if (isWarningLinkVisible) {
+ warningComponent.setLinkText(enterpriseRepoStatus.getMessage());
+ //warninglink.setText(enterpriseRepoStatus.getMessage());
+ //warningComponent.getParent().layout(true, true);
+ }
+ }
+ warningComponent.setVisible(isWarningLinkVisible);
}
}
@@ -353,48 +360,6 @@
validate();
}
- private void createMissingRepositoriesWarning(Composite parent,
- GridData gridData) {
- //TODO make that damn component align correctly
- //warningLink = new MissingRepositoryWarningComponent(parent);
-
- //TODO delete that code
- warningLink = new Composite(parent, SWT.NONE);
-
- GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(3, 1)
- .applyTo(warningLink);
- GridLayoutFactory.fillDefaults().numColumns(2).applyTo(warningLink);
-
- Label warningImg = new Label(warningLink, SWT.CENTER | SWT.TOP);
- warningImg.setImage(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING));
-
- Link link = new Link(warningLink, SWT.NONE);
- link.setText(NLS.bind(Messages.ArchetypeExamplesWizardFirstPage_Unresolved_Enterprise_Repo,
MavenArtifactHelper.ENTERPRISE_JBOSS_SPEC));
- link.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- try {
- // Open default external browser
- PlatformUI.getWorkbench().getBrowserSupport()
- .getExternalBrowser().openURL(new URL(e.text));
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- });
-
- warningLink.setVisible(false);
- }
-
-
-
- private boolean assertEnterpriseRepoAccessible() {
- if (isEnterpriseRepoAvailable == null) {
- isEnterpriseRepoAvailable = MavenArtifactHelper.isEnterpriseRepositoryAvailable();
- }
- return isEnterpriseRepoAvailable.booleanValue();
- }
-
protected Map<String, IRuntime> getServerRuntimes(
IProjectFacetVersion facetVersion) {
Set<org.eclipse.wst.common.project.facet.core.runtime.IRuntime> runtimesSet;
@@ -468,13 +433,6 @@
if (projectExample.getDescription() != null) {
setDescription(ProjectExamplesActivator.getShortDescription(projectExample.getDescription()));
}
- ProjectImportConfiguration configuration = getImportConfiguration();
- if (configuration != null) {
- String profiles = projectExample.getDefaultProfiles();
- if (profiles != null && profiles.trim().length() > 0) {
- configuration.getResolverConfiguration().setActiveProfiles(profiles);
- }
- }
initDefaultValues();
}
}
@@ -545,5 +503,14 @@
this.context = context;
}
+ @Override
+ public ProjectImportConfiguration getImportConfiguration() {
+ ProjectImportConfiguration importConfiguration = (ProjectImportConfiguration)
context.getProperty(MavenProjectConstants.IMPORT_PROJECT_CONFIGURATION);
+ return importConfiguration;
+ }
+ private Model getModel() {
+ return (Model) context.getProperty(MavenProjectConstants.MAVEN_MODEL);
+ }
+
}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardPage.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardPage.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/ArchetypeExamplesWizardPage.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -11,7 +11,6 @@
package org.jboss.tools.maven.project.examples.wizard;
import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -34,14 +33,11 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.IMaven;
@@ -50,18 +46,13 @@
import org.eclipse.m2e.core.project.ProjectImportConfiguration;
import org.eclipse.m2e.core.ui.internal.Messages;
import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.PlatformUI;
import org.jboss.tools.maven.project.examples.MavenProjectExamplesActivator;
+import org.jboss.tools.maven.project.examples.utils.MavenArtifactHelper;
import
org.jboss.tools.maven.project.examples.wizard.xpl.MavenProjectWizardArchetypeParametersPage;
import org.jboss.tools.maven.ui.Activator;
import org.jboss.tools.project.examples.ProjectExamplesActivator;
@@ -79,24 +70,17 @@
MavenProjectWizardArchetypeParametersPage implements IProjectExamplesWizardPage {
private ProjectExample projectDescription;
- private Composite warningLink;
- private Boolean isEnterpriseRepoAvailable;
private ProjectExample projectExample;
private boolean initialized = false;
private Map<String, Object> propertiesMap = new HashMap<String, Object>();
private WizardContext context;
+ private MissingRepositoryWarningComponent warningComponent;
+ private IStatus enterpriseRepoStatus;
public ArchetypeExamplesWizardPage() {
super(new ProjectImportConfiguration());
}
- public ArchetypeExamplesWizardPage(
- ProjectImportConfiguration configuration, ProjectExample projectDescription) {
- super(configuration);
- setTitle(projectDescription.getShortDescription());
- this.projectDescription = projectDescription;
- }
-
@Override
public void createControl(Composite parent) {
super.createControl(parent);
@@ -165,46 +149,9 @@
protected void createAdvancedSettings(Composite composite, GridData gridData) {
// TODO Auto-generated method stub
super.createAdvancedSettings(composite, gridData);
- createMissingRepositoriesWarning(composite, gridData);
+ warningComponent = new MissingRepositoryWarningComponent(composite, false);
}
- private void createMissingRepositoriesWarning(Composite parent,
- GridData gridData) {
- //TODO make that damn component align correctly
- //warningLink = new MissingRepositoryWarningComponent(parent);
-
- //TODO delete that code
- warningLink = new Composite(parent, SWT.NONE);
-
- GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(3, 1)
- .applyTo(warningLink);
- GridLayoutFactory.fillDefaults().numColumns(2).applyTo(warningLink);
-
- Label warningImg = new Label(warningLink, SWT.CENTER | SWT.TOP);
- warningImg.setImage(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING));
-
- Link link = new Link(warningLink, SWT.NONE);
- String message = "Artifacts needed from JBoss Enterprise Maven repository do not
seem to be available.\nThis might cause build problems. "
- + "Follow this <a
href=\"http://community.jboss.org/wiki/SettingUpTheJBossEnterpriseRe...
for more details.";
- link.setText(message);
- link.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- try {
- // Open default external browser
- PlatformUI.getWorkbench().getBrowserSupport()
- .getExternalBrowser().openURL(new URL(e.text));
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- });
-
- warningLink.setVisible(false);
- }
-
-
-
public Archetype getArchetype() {
return archetype;
}
@@ -332,7 +279,7 @@
}
private void checkEnterpriseProperty() {
- if (warningLink == null) {
+ if (warningComponent == null) {
//Not initialized yet
return;
}
@@ -340,27 +287,27 @@
for(int i = 0; i < propertiesTable.getItemCount(); i++ ) {
TableItem item = propertiesTable.getItem(i);
String value = item.getText(VALUE_INDEX);
- if (item.getText(KEY_INDEX).equals("enterprise")
+ if (item.getText(KEY_INDEX).equals("enterprise") //$NON-NLS-1$
&& (Boolean.TRUE.toString().equalsIgnoreCase(value)
|| "y".equalsIgnoreCase(value)
|| "yes".equalsIgnoreCase(value))
- && !assertEnterpriseRepoAccessible()) {
- warningLink.setVisible(true);
- return;
+ ) {
+
+ boolean isWarningLinkVisible = false;
+ if (enterpriseRepoStatus == null) {
+ enterpriseRepoStatus =
MavenArtifactHelper.checkEnterpriseRequirementsAvailable(projectExample);
+ }
+ isWarningLinkVisible = !enterpriseRepoStatus.isOK();
+ if (isWarningLinkVisible) {
+ warningComponent.setLinkText(enterpriseRepoStatus.getMessage());
+ }
+ warningComponent.setVisible(isWarningLinkVisible);
+ return;
}
}
- warningLink.setVisible(false);
+ warningComponent.setVisible(false);
}
- private boolean assertEnterpriseRepoAccessible() {
- if (isEnterpriseRepoAvailable != null) {
- return isEnterpriseRepoAvailable.booleanValue();
- }
-
- isEnterpriseRepoAvailable = MavenArtifactHelper.isEnterpriseRepositoryAvailable();
- return isEnterpriseRepoAvailable.booleanValue();
- }
-
private Throwable getRootCause(Throwable ex) {
if (ex == null) return null;
Throwable rootCause = getRootCause(ex.getCause());
@@ -497,6 +444,13 @@
setDescription(ProjectExamplesActivator
.getShortDescription(projectExample.getDescription()));
}
+ ProjectImportConfiguration configuration = getImportConfiguration();
+ if (configuration != null) {
+ String profiles = projectExample.getDefaultProfiles();
+ if (profiles != null && profiles.trim().length() > 0) {
+ configuration.getResolverConfiguration().setActiveProfiles(profiles);
+ }
+ }
projectDescription = projectExample;
if (getContainer() != null) {
initialize();
@@ -527,6 +481,31 @@
@Override
public void setWizardContext(WizardContext context) {
this.context = context;
+ context.setProperty(MavenProjectConstants.IMPORT_PROJECT_CONFIGURATION,
getImportConfiguration());
+ context.setProperty(MavenProjectConstants.MAVEN_MODEL, getDynamicModel());
}
+
+ /** Returns a dynamic Model that can be shared across wizard pages. */
+ private Model getDynamicModel() {
+ Model model = new Model() {
+ public String getModelVersion() {
+ return "4.0.0"; //$NON-NLS-1$
+ }
+
+ public String getGroupId() {
+ return groupIdCombo.getText();
+ }
+
+ public String getArtifactId(){
+ return artifactIdCombo.getText();
+ }
+
+ public String getVersion(){
+ return versionCombo.getText();
+ }
+ };
+ return model;
+ }
+
}
Deleted:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenArtifactHelper.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenArtifactHelper.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenArtifactHelper.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -1,63 +0,0 @@
-/*************************************************************************************
- * Copyright (c) 2008-2011 Red Hat, Inc. and others.
- * 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:
- * JBoss by Red Hat - Initial implementation.
- ************************************************************************************/
-package org.jboss.tools.maven.project.examples.wizard;
-
-import java.util.ArrayList;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.embedder.ArtifactKey;
-import org.eclipse.m2e.core.embedder.IMaven;
-
-public class MavenArtifactHelper {
-
- public static final String ENTERPRISE_JBOSS_SPEC =
"org.jboss.spec:jboss-javaee-web-6.0:3.0.0.Beta1-redhat-1"; //$NON-NLS-1$
-
- private static final String ENTERPRISE_JBOSS_SPEC_KEYSTRING =
ENTERPRISE_JBOSS_SPEC+"::"; //$NON-NLS-1$
-
- /**
- * Checks if the EAP repository is available
- *
- * @return true if org.jboss.spec:jboss-javaee-web-6.0:3.0.0.Beta1-redhat-1 can be
resolved
- */
- public static boolean isEnterpriseRepositoryAvailable() {
- boolean isRepoAvailable = isArtifactAvailable(ENTERPRISE_JBOSS_SPEC_KEYSTRING,
"pom"); //$NON-NLS-1$
- return isRepoAvailable;
- }
-
- /**
- * Checks if an artifact can be resolved
- * @param artifactKey
- * @return true is the artifactKey can be resolved to an artifact.
- */
- public static boolean isArtifactAvailable(String artifactKey, String type) {
- boolean isRepoAvailable = false;
- try {
- IMaven maven = MavenPlugin.getMaven();
- ArrayList<ArtifactRepository> repos = new
ArrayList<ArtifactRepository>();
- repos.addAll(maven.getArtifactRepositories());
- IProgressMonitor nullProgressMonitor = new NullProgressMonitor();
- ArtifactKey key = ArtifactKey.fromPortableString(artifactKey);
- Artifact a = MavenPlugin.getMaven().resolve(
- key.getGroupId(), key.getArtifactId(), key.getVersion(),
- type, key.getClassifier(), repos, nullProgressMonitor);
- isRepoAvailable = a != null && a.isResolved();
- } catch (CoreException e) {
- System.err.println(e.getLocalizedMessage());
- }
- return isRepoAvailable;
- }
-
-}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenProjectConstants.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenProjectConstants.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MavenProjectConstants.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -8,6 +8,10 @@
public final static String ENTERPRISE_TARGET = "enterprise";
+ public final static String IMPORT_PROJECT_CONFIGURATION =
"importProjectConfiguration";
+
+ public static final String MAVEN_MODEL = "mavenModel";
+
private MavenProjectConstants(){
}
}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MissingRepositoryWarningComponent.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MissingRepositoryWarningComponent.java 2012-04-12
06:56:59 UTC (rev 40149)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/wizard/MissingRepositoryWarningComponent.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -19,38 +19,31 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.PlatformUI;
public class MissingRepositoryWarningComponent extends Composite {
- private Composite warningLink;
+ private Link warninglink;
- public MissingRepositoryWarningComponent(Composite parent) {
+ public MissingRepositoryWarningComponent(Composite parent, boolean visibleInitially) {
super(parent, SWT.NORMAL);
- warningLink = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, false).span(3, 1)
+ .applyTo(this);
+ GridLayoutFactory.fillDefaults().numColumns(2).applyTo(this);
- Display display = Display.getCurrent();
- Color color = display.getSystemColor(SWT.COLOR_BLUE);
-
- warningLink.setBackground(color);
- GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(3, 1)
- .applyTo(warningLink);
- GridLayoutFactory.fillDefaults().numColumns(2).applyTo(warningLink);
+ Label warningImg = new Label(this, SWT.CENTER | SWT.TOP);
+ Image warningIcon = JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).applyTo(warningImg);
+ warningImg.setImage(warningIcon);
- Label warningImg = new Label(warningLink, SWT.CENTER | SWT.TOP);
- warningImg.setImage(JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING));
-
- Link link = new Link(warningLink, SWT.NONE);
- String message = "Artifacts needed from JBoss Enterprise Maven repository do not
seem to be available.\nThis might cause build problems. "
- + "Follow this <a
href=\"http://community.jboss.org/wiki/SettingUpTheJBossEnterpriseRe...
for more details.";
- link.setText(message);
- link.addSelectionListener(new SelectionAdapter() {
+ warninglink = new Link(this, SWT.NONE | SWT.FILL);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true,
false).applyTo(warninglink);
+ warninglink.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
@@ -62,19 +55,19 @@
}
}
});
- link.setBackground(display.getSystemColor(SWT.COLOR_RED));
+
+ setVisible(visibleInitially);
}
@Override
- public void setVisible(boolean visible) {
- warningLink.setVisible(visible);
- super.setVisible(visible);
- }
-
- @Override
public void dispose() {
- warningLink.dispose();
super.dispose();
}
+ public void setLinkText(String text) {
+ if (warninglink != null) {
+ warninglink.setText(text);
+ getParent().layout(true, true);
+ }
+ }
}
Added:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/xpl/DependencyKey.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/xpl/DependencyKey.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/xpl/DependencyKey.java 2012-04-12
08:42:07 UTC (rev 40150)
@@ -0,0 +1,123 @@
+package org.jboss.tools.maven.project.examples.xpl;
+
+import java.io.Serializable;
+
+import org.eclipse.osgi.util.NLS;
+
+public class DependencyKey implements Serializable {
+ private static final long serialVersionUID = -8984509272834024387L;
+
+ private final String groupId;
+ private final String type;
+ private final String artifactId;
+ private final String version;
+ private final String classifier;
+
+ public DependencyKey(String groupId, String artifactId, String version, String
classifier, String type) {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ this.classifier = classifier;
+ this.type = type;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o instanceof DependencyKey) {
+ DependencyKey other = (DependencyKey) o;
+ return equals(groupId, other.groupId)
+ && equals(artifactId, other.artifactId)
+ && equals(version, other.version)
+ && equals(type, other.type)
+ && equals(classifier, other.classifier);
+ }
+ return false;
+ }
+
+ public int hashCode() {
+ int hash = 17;
+ hash = hash * 31 + (groupId != null? groupId.hashCode(): 0);
+ hash = hash * 31 + (artifactId != null? artifactId.hashCode(): 0);
+ hash = hash * 31 + (version != null? version.hashCode(): 0);
+ hash = hash * 31 + (type != null? type.hashCode(): 0);
+ hash = hash * 31 + (classifier != null? classifier.hashCode(): 0);
+ return hash;
+ }
+
+ private static boolean equals(Object o1, Object o2) {
+ return o1 == null? o2 == null: o1.equals(o2);
+ }
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(groupId).append(':').append(artifactId).append(':')
+ .append(type).append(':').append(version);
+ if(classifier != null) {
+ sb.append(':').append(classifier);
+ }
+ return sb.toString();
+ }
+
+ public static DependencyKey fromPortableString(String str) {
+ int p, c;
+
+ p = 0; c = nextColonIndex(str, p);
+ String groupId = substring(str, p, c);
+
+ p = c + 1; c = nextColonIndex(str, p);
+ String artifactId = substring(str, p, c);
+
+ p = c + 1; c = nextColonIndex(str, p);
+ String type = substring(str, p, c);
+
+ p = c + 1; c = nextColonIndex(str, p);
+ String version = substring(str, p, c);
+
+ p = c + 1; c = nextColonIndex(str, p);
+ String classifier = substring(str, p, c);
+
+ return new DependencyKey(groupId, artifactId, version, classifier, type);
+ }
+
+ private static String substring(String str, int start, int end) {
+ String substring = str.substring(start, end);
+ return "".equals(substring)? null: substring; //$NON-NLS-1$
+ }
+
+ private static int nextColonIndex(String str, int pos) {
+ int idx = str.indexOf(':', pos);
+ if (idx < 0) throw new IllegalArgumentException(NLS.bind("Invalid portable
string: {0}", str));
+ return idx;
+ }
+
+ public String toPortableString() {
+ StringBuilder sb = new StringBuilder();
+ if (groupId != null) sb.append(groupId); sb.append(':');
+ if (artifactId != null) sb.append(artifactId); sb.append(':');
+ if (type != null) sb.append(type); sb.append(':');
+ if (version != null) sb.append(version); sb.append(':');
+ if (classifier != null) sb.append(classifier); sb.append(':');
+ return sb.toString();
+ }
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public String getArtifactId() {
+ return artifactId;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public String getClassifier() {
+ return classifier;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+}