diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.core/.gitignore b/bundles/org.eclipse.jst.ws.cxf.consumption.core/.gitignore
new file mode 100644
index 0000000..7447f89
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.core/.gitignore
@@ -0,0 +1 @@
+/bin
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.cxf.consumption.core/META-INF/MANIFEST.MF
index a1aca4d..f462230 100644
--- a/bundles/org.eclipse.jst.ws.cxf.consumption.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.cxf.consumption.core;singleton:=true
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.0.201.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.cxf.consumption.core.CXFConsumptionCorePlugin
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.core/src/org/eclipse/jst/ws/internal/cxf/consumption/core/commands/WSDL2JavaClientDefaultingCommand.java b/bundles/org.eclipse.jst.ws.cxf.consumption.core/src/org/eclipse/jst/ws/internal/cxf/consumption/core/commands/WSDL2JavaClientDefaultingCommand.java
index f0b4800..4ab2da9 100644
--- a/bundles/org.eclipse.jst.ws.cxf.consumption.core/src/org/eclipse/jst/ws/internal/cxf/consumption/core/commands/WSDL2JavaClientDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.core/src/org/eclipse/jst/ws/internal/cxf/consumption/core/commands/WSDL2JavaClientDefaultingCommand.java
@@ -85,19 +85,13 @@
         try {
             URL wsdlUrl = new URL(inputURL);
             model.setWsdlURL(wsdlUrl);
-
+            model.setWsdlLocation(inputURL);
             Definition definition = WSDLUtils.readWSDL(model.getWsdlURL());
             if (definition != null) {
                 String targetNamespace = definition.getTargetNamespace();
                 String packageName = WSDLUtils.getPackageNameFromNamespace(targetNamespace);
                 model.setTargetNamespace(targetNamespace);
                 model.getIncludedNamespaces().put(targetNamespace, packageName);
-
-                String wsdlLocation = WSDLUtils.getWSDLLocation(definition);
-                if (wsdlLocation != null) {
-                    model.setWsdlLocation(wsdlLocation);
-                }
-
                 model.setWsdlDefinition(definition);
             }
 
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/.gitignore b/bundles/org.eclipse.jst.ws.cxf.creation.core/.gitignore
new file mode 100644
index 0000000..7447f89
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/.gitignore
@@ -0,0 +1 @@
+/bin
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF
index dd1ca76..abfc123 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.cxf.creation.core
-Bundle-Version: 1.0.200.qualifier
+Bundle-Version: 1.0.201.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCorePlugin
 Bundle-Vendor: %pluginProvider
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/WSDL2JavaDefaultingCommand.java b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/WSDL2JavaDefaultingCommand.java
index 68c1197..1876f47 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/WSDL2JavaDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/WSDL2JavaDefaultingCommand.java
@@ -68,7 +68,7 @@
     }
 
     @Override
-    @SuppressWarnings({ "unchecked", "deprecation" })
+    @SuppressWarnings({ "unchecked", "deprecation", "rawtypes" })
     public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
         IStatus status = Status.OK_STATUS;
 
@@ -114,6 +114,7 @@
             IProject project = workspace.getRoot().getProject(projectName);
             URL wsdlUrl = new URL(inputURL);
             model.setWsdlURL(wsdlUrl);
+            model.setWsdlLocation(inputURL);
             if (wsdlUrl.getProtocol().equals("file")) { //$NON-NLS-1$
                 if (!FileUtils.isFileInWebContentFolder(project, new Path(wsdlUrl.getPath()))) {
                     IFolder wsdlFolder = WSDLUtils.getWSDLFolder(project);
@@ -132,7 +133,6 @@
                 definition = WSDLUtils.readWSDL(model.getWsdlURL());
                 if (definition != null) {
                     setTNSOnModel(definition);
-                    setWSDLLocation(definition);
                 }
             } else {
                 String filename = ""; //$NON-NLS-1$
@@ -141,7 +141,6 @@
                     Map servicesMap = definition.getServices();
                     Set<Map.Entry> servicesSet = servicesMap.entrySet();
                     setTNSOnModel(definition);
-                    setWSDLLocation(definition);
 
                     for (Map.Entry serviceEntry : servicesSet) {
                         Service service = (Service) serviceEntry.getValue();
@@ -200,13 +199,6 @@
         return wsdlPath.lastSegment();
     }
 
-    private void setWSDLLocation(Definition definition) throws MalformedURLException {
-        String wsdlLocation = WSDLUtils.getWSDLLocation(definition);
-        if (wsdlLocation != null) {
-            model.setWsdlLocation(wsdlLocation);
-        }
-    }
-
     private void setTNSOnModel(Definition definition) {
         String targetNamespace = definition.getTargetNamespace();
         String packageName = WSDLUtils.getPackageNameFromNamespace(targetNamespace);
