Author: snjeza
Date: 2011-03-17 19:02:50 -0400 (Thu, 17 Mar 2011)
New Revision: 29897
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/PortletUIActivator.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddJBossPortletWizardPage.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddPortletWizardPage.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/NewPortletClassDataModelProvider.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties
Log:
JBIDE-7755 Portlet wizard allows creating portlets with same name
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java 2011-03-17
23:02:18 UTC (rev 29896)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java 2011-03-17
23:02:50 UTC (rev 29897)
@@ -16,6 +16,7 @@
public static String NewJSFPortletClassWizardPage_Choose_a_Seam_portlet_class;
public static String NewJSFPortletClassWizardPage_New_JSF_Portlet;
public static String NewJSFPortletClassWizardPage_New_Seam_Portlet;
+ public static String NewPortletClassDataModelProvider_The_portlet_already_exists;
public static String NewPortletClassWizardPage_Choose_a_portlet_class;
public static String NewPortletClassWizardPage_New_Portlet;
public static String NewPortletClassWizardPage_Use_an_existing_Portlet_class;
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/PortletUIActivator.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/PortletUIActivator.java 2011-03-17
23:02:18 UTC (rev 29896)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/PortletUIActivator.java 2011-03-17
23:02:50 UTC (rev 29897)
@@ -3,6 +3,8 @@
import static
org.eclipse.wst.common.componentcore.internal.operation.IArtifactEditOperationDataModelProperties.PROJECT_NAME;
import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -22,11 +24,18 @@
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.tools.portlet.core.IPortletConstants;
import org.jboss.tools.portlet.core.PortletCoreActivator;
import org.osgi.framework.BundleContext;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
/**
* The activator class controls the plug-in life cycle
@@ -183,4 +192,46 @@
return null;
}
}
+
+ public static Set<String> getPortletNames(IFile portletFile) {
+ Set<String> portletNames = new HashSet<String>();
+ if (portletFile == null || !portletFile.exists()) {
+ return portletNames;
+ }
+ IDOMModel domModel = null;
+ try {
+ domModel = (IDOMModel) StructuredModelManager.getModelManager()
+ .getModelForRead(portletFile);
+ Document document = domModel.getDocument();
+ NodeList portlets = document.getElementsByTagName("portlet-name");
//$NON-NLS-1$
+ if (portlets == null || portlets.getLength() == 0) {
+ return portletNames;
+ }
+ for (int i = 0; i < portlets.getLength(); i++) {
+ Node node = portlets.item(i);
+ NodeList children = node.getChildNodes();
+ if (children == null || children.getLength() != 1) {
+ continue;
+ }
+ Node child = children.item(0);
+ if (child == null || Node.TEXT_NODE != child.getNodeType()) {
+ continue;
+ }
+ IStructuredDocumentRegion structuredDocumentRegion = ((IDOMNode) child)
+ .getFirstStructuredDocumentRegion();
+ String value = structuredDocumentRegion.getFullText();
+ if (value == null) {
+ continue;
+ }
+ portletNames.add(value.trim());
+ }
+ } catch (Exception e) {
+ PortletCoreActivator.log(e);
+ } finally {
+ if (domModel != null) {
+ domModel.releaseFromRead();
+ }
+ }
+ return portletNames;
+ }
}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddJBossPortletWizardPage.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddJBossPortletWizardPage.java 2011-03-17
23:02:18 UTC (rev 29896)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddJBossPortletWizardPage.java 2011-03-17
23:02:50 UTC (rev 29897)
@@ -11,6 +11,7 @@
import static org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.IF_EXISTS;
import static
org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.INITIAL_WINDOW_STATE;
import static
org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.INSTANCE_NAME;
+import static org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.NAME;
import static
org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.IS_JSF_PORTLET;
import static
org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.IS_SEAM_PORTLET;
import static org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties.JBOSS_APP;
@@ -81,7 +82,7 @@
* @see org.eclipse.jem.util.ui.wizard.WTPWizardPage#getValidationPropertyNames()
*/
protected String[] getValidationPropertyNames() {
- return new String[] { INSTANCE_NAME, WINDOW_NAME };
+ return new String[] { NAME, INSTANCE_NAME, WINDOW_NAME };
}
protected Composite createTopLevelComposite(Composite parent) {
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddPortletWizardPage.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddPortletWizardPage.java 2011-03-17
23:02:18 UTC (rev 29896)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/AddPortletWizardPage.java 2011-03-17
23:02:50 UTC (rev 29897)
@@ -68,7 +68,7 @@
* @see org.eclipse.jem.util.ui.wizard.WTPWizardPage#getValidationPropertyNames()
*/
protected String[] getValidationPropertyNames() {
- return new String[] { DISPLAY_NAME, INIT_PARAM };
+ return new String[] { NAME, DISPLAY_NAME, INIT_PARAM };
}
protected Composite createTopLevelComposite(Composite parent) {
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/NewPortletClassDataModelProvider.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/NewPortletClassDataModelProvider.java 2011-03-17
23:02:18 UTC (rev 29896)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/wizard/NewPortletClassDataModelProvider.java 2011-03-17
23:02:50 UTC (rev 29897)
@@ -2,12 +2,11 @@
-import static
org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties.SOURCE_FOLDER;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -26,22 +25,17 @@
import org.eclipse.jem.util.logger.proxy.Logger;
import org.eclipse.jst.j2ee.internal.common.J2EECommonMessages;
import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties;
-import org.eclipse.jst.j2ee.internal.common.operations.NewJavaClassDataModelProvider;
import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
-import org.eclipse.jst.j2ee.internal.web.operations.INewServletClassDataModelProperties;
import org.eclipse.jst.j2ee.internal.web.operations.NewServletClassDataModelProvider;
-import org.eclipse.jst.j2ee.internal.web.operations.NewServletClassOperation;
import org.eclipse.jst.j2ee.internal.web.operations.NewWebClassDataModelProvider;
-import org.eclipse.jst.j2ee.internal.web.operations.WebMessages;
-import org.eclipse.jst.j2ee.web.validation.UrlPattern;
import org.eclipse.osgi.util.NLS;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin;
import org.jboss.tools.portlet.operations.AddPortletOperation;
import org.jboss.tools.portlet.ui.INewPortletClassDataModelProperties;
import org.jboss.tools.portlet.ui.Messages;
+import org.jboss.tools.portlet.ui.PortletUIActivator;
/**
*
@@ -354,6 +348,24 @@
return validateSuperClassName(getStringProperty(propertyName));
}
+ if (propertyName.equals(NAME)) {
+ IProject project = (IProject) getProperty(PROJECT);
+ IFile portletFile = PortletUIActivator.getPortletXmlFile(project);
+ if (portletFile == null || !portletFile.exists()) {
+ return Status.OK_STATUS;
+ }
+ Set<String> portletNames = PortletUIActivator.getPortletNames(portletFile);
+ String name = getStringProperty(NAME);
+ if (name != null) {
+ name = name.trim();
+ }
+ if (portletNames.contains(name)) {
+ IStatus status = new Status(IStatus.ERROR, PortletUIActivator.PLUGIN_ID,
+ NLS.bind(Messages.NewPortletClassDataModelProvider_The_portlet_already_exists,
name));
+ return status;
+ }
+ return Status.OK_STATUS;
+ }
if ((isJSFPortlet || isSeamPortlet) && propertyName.equals(CLASS_NAME)) {
if (getStringProperty(propertyName).length()!=0) {
return Status.OK_STATUS;
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties 2011-03-17
23:02:18 UTC (rev 29896)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties 2011-03-17
23:02:50 UTC (rev 29897)
@@ -40,6 +40,7 @@
NewJSFPortletClassWizardPage_Choose_a_Seam_portlet_class=Choose a Seam portlet class:
NewJSFPortletClassWizardPage_New_JSF_Portlet=New JSF Portlet
NewJSFPortletClassWizardPage_New_Seam_Portlet=New Seam Portlet
+NewPortletClassDataModelProvider_The_portlet_already_exists=The ''{0}''
portlet already exists.
NewPortletClassWizardPage_Choose_a_portlet_class=Choose a portlet class:
NewPortletClassWizardPage_New_Portlet=New Portlet
NewPortletClassWizardPage_Use_an_existing_Portlet_class=Use an existing Portlet class
Show replies by date