Bug 469730 - InvalidVersionSpecException on branch creation

Change-Id: I4a43737a75a706d47de4d2173657b9d095bc5162
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/AbstractSubEmfstoreInterface.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/AbstractSubEmfstoreInterface.java
index e48427b..150c6f7 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/AbstractSubEmfstoreInterface.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/AbstractSubEmfstoreInterface.java
@@ -147,10 +147,11 @@
 			ModelUtil.logWarning(Messages.AbstractSubEmfstoreInterface_Method_Not_Accessible, e);
 			throw new ESException(e);
 		} catch (final InvocationTargetException e) {
-			if (InvalidVersionSpecException.class.isInstance(e.getTargetException())
-				|| AccessControlException.class.isInstance(e.getTargetException())) {
+			final Throwable targetException = e.getTargetException();
+			if (InvalidVersionSpecException.class.isInstance(targetException)
+				|| AccessControlException.class.isInstance(targetException)) {
 				ModelUtil.logInfo(
-					Messages.AbstractSubEmfstoreInterface_Exception_On_Execution + e.getMessage());
+					Messages.AbstractSubEmfstoreInterface_Exception_On_Execution + targetException.getMessage());
 			} else {
 				ModelUtil.logInfo(
 					Messages.AbstractSubEmfstoreInterface_Exception_On_Execution + stackTraceOf(e));
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/HistorySubInterfaceImpl.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/HistorySubInterfaceImpl.java
index 4e499c6..49a68e5 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/HistorySubInterfaceImpl.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/HistorySubInterfaceImpl.java
@@ -284,14 +284,14 @@
 		int end = from;
 
 		if (!tollerant && (from < 0 || to < 0 || from > globalhead || to > globalhead)) {
-			throw new InvalidVersionSpecException();
+			throw new InvalidVersionSpecException(Messages.HistorySubInterfaceImpl_InvalidVersionSpec);
 		}
 
 		start = Math.min(globalhead, to);
 		end = Math.max(0, from);
 
 		if (start < 0 || start > globalhead || end < 0 || end > globalhead) {
-			throw new InvalidVersionSpecException();
+			throw new InvalidVersionSpecException(Messages.HistorySubInterfaceImpl_InvalidVersionSpec);
 		}
 
 		if (start == end) {
@@ -300,7 +300,7 @@
 
 		// saftey check
 		if (Math.abs(start - end) > Math.abs(to - from)) {
-			throw new InvalidVersionSpecException();
+			throw new InvalidVersionSpecException(Messages.HistorySubInterfaceImpl_InvalidVersionSpec);
 		}
 		final ArrayList<Version> result = new ArrayList<Version>();
 		for (int i = start; i >= end; i--) {
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/Messages.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/Messages.java
index 4e4c5cb..60192e8 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/Messages.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/Messages.java
@@ -35,6 +35,7 @@
 	public static String FileTransferSubInterfaceImpl_Locate_Cache_Failed;
 	public static String FileTransferSubInterfaceImpl_Locate_Tmp_Failed;
 	public static String FileTransferSubInterfaceImpl_Move_Failed;
+	public static String HistorySubInterfaceImpl_InvalidVersionSpec;
 	public static String ProjectPropertiesSubInterfaceImpl_Property_Not_Set;
 	public static String ProjectPropertiesSubInterfaceImpl_User_Does_Not_Exist;
 	public static String ProjectSubInterfaceImpl_Null;
@@ -47,14 +48,21 @@
 	public static String VersionSubInterfaceImpl_ChecksumComputationFailed;
 	public static String VersionSubInterfaceImpl_EmptyBranch_Not_Allowed;
 	public static String VersionSubInterfaceImpl_FileBasedChangePackageNotAllowed;
+	public static String VersionSubInterfaceImpl_HeadVersionNotFound;
 	public static String VersionSubInterfaceImpl_Invalid_Source_Or_Target;
 	public static String VersionSubInterfaceImpl_InvalidBranchOrVersion;
 	public static String VersionSubInterfaceImpl_InvalidPath;
 	public static String VersionSubInterfaceImpl_InvalidVersionRequested;
 	public static String VersionSubInterfaceImpl_NextVersionInvalid;
+	public static String VersionSubInterfaceImpl_NoAncestorFound;
+	public static String VersionSubInterfaceImpl_NoBranchInfo;
+	public static String VersionSubInterfaceImpl_NoSourceNorTarget;
+	public static String VersionSubInterfaceImpl_PrimaryVersionNotFound;
 	public static String VersionSubInterfaceImpl_ShuttingServerDown;
+	public static String VersionSubInterfaceImpl_TagVersionNotFound;
 	public static String VersionSubInterfaceImpl_TargetBranchCombination_Invalid;
 	public static String VersionSubInterfaceImpl_TotalTimeForCommit;
+	public static String VersionSubInterfaceImpl_UnknownVersionSpec;
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/VersionSubInterfaceImpl.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/VersionSubInterfaceImpl.java
index c633b05..e148579 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/VersionSubInterfaceImpl.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/VersionSubInterfaceImpl.java
@@ -124,13 +124,13 @@
 				return resolvePagedUpdateVersionSpec(projectHistory, (PagedUpdateVersionSpec) versionSpec);
 			}
 
-			throw new InvalidVersionSpecException();
+			throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_UnknownVersionSpec);
 		}
 	}
 
 	private PrimaryVersionSpec resolveAncestorVersionSpec(ProjectHistory projectHistory,
 		AncestorVersionSpec versionSpec)
-			throws InvalidVersionSpecException {
+		throws InvalidVersionSpecException {
 
 		Version currentSource = getVersion(projectHistory, versionSpec.getSource());
 		Version currentTarget = getVersion(projectHistory, versionSpec.getTarget());
@@ -167,7 +167,7 @@
 			}
 
 		}
-		throw new InvalidVersionSpecException();
+		throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_NoAncestorFound);
 	}
 
 	private PrimaryVersionSpec resolvePrimaryVersionSpec(ProjectHistory projectHistory, PrimaryVersionSpec versionSpec)
@@ -194,7 +194,7 @@
 			}
 
 		}
-		throw new InvalidVersionSpecException();
+		throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_PrimaryVersionNotFound);
 	}
 
 	private PrimaryVersionSpec resolveHeadVersionSpec(ProjectHistory projectHistory, HeadVersionSpec versionSpec)
@@ -206,7 +206,7 @@
 		if (info != null) {
 			return info.getHead();
 		}
-		throw new InvalidVersionSpecException();
+		throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_HeadVersionNotFound);
 	}
 
 	private PrimaryVersionSpec resolveDateVersionSpec(ProjectHistory projectHistory, DateVersionSpec versionSpec) {
@@ -235,14 +235,14 @@
 				}
 			}
 		}
-		throw new InvalidVersionSpecException();
+		throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_TagVersionNotFound);
 	}
 
 	private PrimaryVersionSpec resolveBranchVersionSpec(ProjectHistory projectHistory, BranchVersionSpec versionSpec)
 		throws InvalidVersionSpecException {
 		final BranchInfo branchInfo = getBranchInfo(projectHistory, versionSpec);
 		if (branchInfo == null) {
-			throw new InvalidVersionSpecException();
+			throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_NoBranchInfo);
 		}
 		return branchInfo.getHead();
 	}
@@ -468,7 +468,7 @@
 		} else if (targetBranchName.equals(VersionSpec.GLOBAL)) {
 			throw new InvalidVersionSpecException(
 				Messages.VersionSubInterfaceImpl_BranchName_Reserved_1
-				+ VersionSpec.GLOBAL + Messages.VersionSubInterfaceImpl_BranchName_Reserved_2);
+					+ VersionSpec.GLOBAL + Messages.VersionSubInterfaceImpl_BranchName_Reserved_2);
 		}
 	}
 
@@ -507,7 +507,7 @@
 
 	private void rollback(final ProjectHistory projectHistory, final BranchInfo baseBranch,
 		final Version baseVersion, Version newVersion, BranchInfo newBranch, final FatalESException e)
-			throws StorageException {
+		throws StorageException {
 		projectHistory.getVersions().remove(newVersion);
 
 		if (newBranch == null) {
@@ -803,7 +803,7 @@
 			final Version targetVersion = getVersion(projectHistory, target);
 
 			if (sourceVersion == null || targetVersion == null) {
-				throw new InvalidVersionSpecException();
+				throw new InvalidVersionSpecException(Messages.VersionSubInterfaceImpl_NoSourceNorTarget);
 			}
 			final List<Version> result = new ArrayList<Version>();
 
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/messages.properties b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/messages.properties
index 8902d22..da57e5b 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/messages.properties
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/messages.properties
@@ -12,6 +12,7 @@
 FileTransferSubInterfaceImpl_Locate_Cache_Failed=File {0} could not be located in the cache folder.
 FileTransferSubInterfaceImpl_Locate_Tmp_Failed=Could not locate the specified file ({0}) in the temp folder.
 FileTransferSubInterfaceImpl_Move_Failed=Could not move file to final destination\!
+HistorySubInterfaceImpl_InvalidVersionSpec=Invalid version spec.
 ProjectPropertiesSubInterfaceImpl_Property_Not_Set=Cannot set the property on the server.
 ProjectPropertiesSubInterfaceImpl_User_Does_Not_Exist=The user does not exist on the server. Cannot set the property.
 ProjectSubInterfaceImpl_Null=null
@@ -24,11 +25,18 @@
 VersionSubInterfaceImpl_ChecksumComputationFailed=Could not compute checksum of project {0}.
 VersionSubInterfaceImpl_EmptyBranch_Not_Allowed=Empty branch name is not permitted.
 VersionSubInterfaceImpl_FileBasedChangePackageNotAllowed=FileBasedChangePackage must not be received by the server.
+VersionSubInterfaceImpl_HeadVersionNotFound=Head version could not be resolved.
 VersionSubInterfaceImpl_Invalid_Source_Or_Target=Specified source and/or target version invalid.
 VersionSubInterfaceImpl_InvalidBranchOrVersion=Branch and/or version doesn't exist.
 VersionSubInterfaceImpl_InvalidPath=Walked too far, invalid path.
 VersionSubInterfaceImpl_InvalidVersionRequested=Invalid version requested. Version {0} does not exist on server.
 VersionSubInterfaceImpl_NextVersionInvalid=Couldn't determine next version in history.
+VersionSubInterfaceImpl_NoAncestorFound=No ancestor version found
+VersionSubInterfaceImpl_NoBranchInfo=No branch info available.
+VersionSubInterfaceImpl_NoSourceNorTarget=No source nor target specifier set.
+VersionSubInterfaceImpl_PrimaryVersionNotFound=Primary version could not be resolved
 VersionSubInterfaceImpl_ShuttingServerDown=Shutting down server.
+VersionSubInterfaceImpl_TagVersionNotFound=Tag version could not be resolved.
 VersionSubInterfaceImpl_TargetBranchCombination_Invalid=The combination of targetSpec and/or branch are invalid.
 VersionSubInterfaceImpl_TotalTimeForCommit=Total time for commit: 
+VersionSubInterfaceImpl_UnknownVersionSpec=Unknown version spec.
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/InvalidVersionSpecException.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/InvalidVersionSpecException.java
index d22c969..e48e1a4 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/InvalidVersionSpecException.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/InvalidVersionSpecException.java
@@ -25,7 +25,7 @@
 	 * Default constructor.
 	 */
 	public InvalidVersionSpecException() {
-		super("");
+		super(Messages.InvalidVersionSpecException_InvalidVersionSpec);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/Messages.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/Messages.java
index a45afeb..ab827d2 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/Messages.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
+ * Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -7,7 +7,7 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- * Edgar - initial API and implementation
+ * Edgar Mueller - initial API and implementation
  ******************************************************************************/
 package org.eclipse.emf.emfstore.internal.server.exceptions;
 
@@ -15,11 +15,12 @@
 
 /**
  * @author Edgar
- *
+ * @generated
  */
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.emf.emfstore.internal.server.exceptions.messages"; //$NON-NLS-1$
 	public static String FatalESException_Msg;
+	public static String InvalidVersionSpecException_InvalidVersionSpec;
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/messages.properties b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/messages.properties
index b8f3da8..cac76e9 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/messages.properties
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/exceptions/messages.properties
@@ -1 +1,2 @@
 FatalESException_Msg=Fatal exception
+InvalidVersionSpecException_InvalidVersionSpec=Invalid version specifier.