Added checking of port names as per T3-1104
diff --git a/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java b/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java
index 4e9f2bf..64b4aa6 100644
--- a/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java
+++ b/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java
@@ -34,6 +34,8 @@
 import javax.swing.JTextField;

 import javax.swing.ListSelectionModel;

 

+import org.apache.commons.lang.StringUtils;

+

 import net.sf.taverna.t2.activities.rest.RESTActivity;

 import net.sf.taverna.t2.activities.rest.RESTActivity.DATA_FORMAT;

 import net.sf.taverna.t2.activities.rest.RESTActivity.HTTP_METHOD;

@@ -48,6 +50,8 @@
 		ActivityConfigurationPanel<RESTActivity, RESTActivityConfigurationBean> {

 	private static final Icon infoIcon = new ImageIcon(

 			RESTActivityConfigurationPanel.class.getResource("information.png"));

+	

+	private static final String VALID_NAME_REGEX = "[\\p{L}\\p{Digit}_]+";

 

 	private RESTActivity activity;

 	private RESTActivityConfigurationBean configBean;

@@ -635,6 +639,32 @@
 					return false;

 				}

 			}

+			

+			List<String> placeholders = URISignatureHandler

+					.extractPlaceholders(candidateURLSignature);

+			List<String> invalidPlaceHolders = new ArrayList<String>();

+			for (String placeHolder : placeholders) {

+				if (!placeHolder.matches(VALID_NAME_REGEX)) {

+					invalidPlaceHolders.add(placeHolder);

+				}

+			}

+			for (String headerValue : httpHeadersTableModel.getHTTPHeaderValues()) {

+				List<String> placeHolders = URISignatureHandler

+				.extractPlaceholders(headerValue);

+				for (String placeHolder : placeHolders) {

+				if (!placeHolder.matches(VALID_NAME_REGEX)) {

+					invalidPlaceHolders.add(placeHolder);

+				}

+				}

+			}

+			if (!invalidPlaceHolders.isEmpty()) {

+				String invalidPlaceHoldersString = StringUtils.join(invalidPlaceHolders, "\n");

+				JOptionPane.showMessageDialog(MainWindow.getMainWindow(),

+						"The following placeholders are invalid:\n" + invalidPlaceHoldersString,

+						"REST Activity Configuration - Error",

+						JOptionPane.ERROR_MESSAGE);

+				return false;				

+			}

 		}

 

 		// check if Accept header value is at least not empty

@@ -674,6 +704,7 @@
 		return true;

 	}

 

+

 	/**

 	 * Return configuration bean generated from user interface last time

 	 * noteConfiguration() was called.