Bug #272819. NPE thrown in Bottom-up scenario. Plus some cleanup of source and  property files.
diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java
index 1487a1b..3a891ed 100644
--- a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/CXFJAXWSSelectionLaunchable.java
@@ -52,7 +52,7 @@
     
     private IProject project;
     private String serverComponentName;
-    private String className;
+    private String className = "";
     
     @Override
     public void setInitialSelection(IStructuredSelection initialSelection) {
@@ -108,11 +108,7 @@
 
     @Override
     public IStructuredSelection getObjectSelection() {
-        if (className != null) {
-            IStructuredSelection objectSelection = new StructuredSelection(className);
-            return objectSelection;
-        }
-        return super.getObjectSelection();
+        return new StructuredSelection(className);
     }
 
     public String getComponentName() {
@@ -152,7 +148,8 @@
         IProject project = getProject();
         if (project != null) {
             validationStatus = JDTUtils.validateJavaTypeName(project.getName(), className);
-            return validationStatus.isOK();
+        } else {
+            validationStatus = JDTUtils.validateJavaTypeName(className);
         }
 
 //        IProject project = getProject();
@@ -165,7 +162,7 @@
 //            }
 //            return validationStatus.isOK();
 //        }
-        return false;
+        return validationStatus.isOK();
     }
     
     private static class JavaViewerFilter extends ViewerFilter {
diff --git a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java
index ed0458f..aedda27 100644
--- a/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java
+++ b/bundles/org.eclipse.jst.ws.cxf.consumption.ui/src/org/eclipse/jst/ws/internal/cxf/consumption/ui/widgets/object/JAXWSSelectionTransformer.java
@@ -49,7 +49,7 @@
                 return structuredSelection;
             }
         }
-        return StructuredSelection.EMPTY;
+        return value;
     }
 
     private String getFullyQualifiedJavaName(IFile resource) {
diff --git a/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java b/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java
index 3e748bc..6430265 100644
--- a/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java
+++ b/bundles/org.eclipse.jst.ws.cxf.core/src/org/eclipse/jst/ws/internal/cxf/facet/CXFFacetInstallDelegate.java
@@ -168,8 +168,8 @@
 
         List listeners = webapp.getListeners();
         for (int i = 0; i < listeners.size(); i++) {
-            org.eclipse.jst.javaee.core.Listener contextLoaderListener = (org.eclipse.jst.javaee.core.Listener) listeners
-                    .get(i);
+            org.eclipse.jst.javaee.core.Listener contextLoaderListener = 
+                (org.eclipse.jst.javaee.core.Listener) listeners.get(i);
             if (contextLoaderListener.getListenerClass().equals(
                     "org.springframework.web.context.ContextLoaderListener")) { //$NON-NLS-1$
                 return;
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java
index ac7be37..86de839 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.java
@@ -22,6 +22,8 @@
         "org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCoreMessages"; //$NON-NLS-1$
     public static String WSDL2JAVA_PROJECT_SELECTION_ERROR;
     public static String WSDL2JAVA_VALID_PORTTYPE_MESSAGE;
+    
+    public static String JAVA2WS_SERVICE_IMPL_NOT_FOUND;
 
     static {
         // initialize resource bundle
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties
index b025aac..30d8712 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/CXFCreationCoreMessages.properties
@@ -11,3 +11,5 @@
 
 WSDL2JAVA_PROJECT_SELECTION_ERROR=Project configuration Error. Please select the "Service project:{0}" link in the "Configuration:" section and change the Service Project setting from {0} to {1}.
 WSDL2JAVA_VALID_PORTTYPE_MESSAGE=The WSDL document must have a valid portType element
+
+JAVA2WS_SERVICE_IMPL_NOT_FOUND=The Service implementation "{0}" cannot be loaded from the "{1}" project. Please check that the project contains the class and that it is visible on the projects "Java Build Path".
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/Java2WSValidateInputCommand.java b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/Java2WSValidateInputCommand.java
new file mode 100644
index 0000000..b65308d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/Java2WSValidateInputCommand.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Shane Clarke.
+ * 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:
+ *    Shane Clarke - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.cxf.creation.core.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jst.ws.internal.cxf.core.model.Java2WSDataModel;
+import org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCoreMessages;
+import org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCorePlugin;
+import org.eclipse.jst.ws.jaxws.core.utils.JDTUtils;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+/**
+ * 
+ * @author sclarke
+ *
+ */
+public class Java2WSValidateInputCommand extends AbstractDataModelOperation {
+    
+    private Java2WSDataModel model;
+
+    public Java2WSValidateInputCommand(Java2WSDataModel model) {
+        this.model = model;
+    }
+
+    @Override
+    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        IStatus status = Status.OK_STATUS;
+        IJavaProject javaProject = JDTUtils.getJavaProject(model.getProjectName());
+        if (javaProject != null) {
+            IType type = JDTUtils.getType(javaProject, model.getJavaStartingPoint());
+            if (type == null || !type.exists()) {
+                status = new Status(IStatus.ERROR, CXFCreationCorePlugin.PLUGIN_ID, 
+                        CXFCreationCoreMessages.bind(CXFCreationCoreMessages.JAVA2WS_SERVICE_IMPL_NOT_FOUND,
+                                new Object[] {model.getJavaStartingPoint(), model.getProjectName()}));
+            }
+        }
+        return status;
+    }
+}
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java
index c217069..29f797f 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/Java2WSSelectSEIWidgetFactory.java
@@ -41,6 +41,10 @@
     private IType startingPointType;
 
     public INamedWidgetContributor getFirstNamedWidget() {
+        if (startingPointType == null) {
+            return null;
+        }
+        
         if (interfaceWidgetContributor == null || classWidgetContributor == null) {
             init();
         }
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java
index 4e7f9cd..ce1be70 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/wsrt/CXFWebService.java
@@ -21,6 +21,7 @@
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSDefaultingCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSSelectSEICommand;
+import org.eclipse.jst.ws.internal.cxf.creation.core.commands.Java2WSValidateInputCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.WSDL2JavaCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.WSDL2JavaDefaultingCommand;
 import org.eclipse.jst.ws.internal.cxf.creation.core.commands.WSDL2JavaProjectSelectionCommand;
@@ -70,6 +71,7 @@
             Java2WSDataModel java2WSDataModel = CXFFactory.eINSTANCE.createJava2WSDataModel();
             java2WSDataModel.setProjectName(projectName);
             java2WSDataModel.setJavaStartingPoint(this.getWebServiceInfo().getImplURL());
+            commands.add(new Java2WSValidateInputCommand(java2WSDataModel));
             commands.add(new Java2WSDefaultingCommand(java2WSDataModel));
             commands.add(new Java2WSSelectSEICommand(java2WSDataModel));
             commands.add(new JAXWSAnnotateJavaCommand(java2WSDataModel));
diff --git a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
index 8f68d44..f41de49 100644
--- a/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
+++ b/bundles/org.eclipse.jst.ws.cxf.ui/src/org/eclipse/jst/ws/internal/cxf/ui/CXFUImessages.properties
@@ -66,20 +66,20 @@
 JAXWS_GENERATE_RESPONSE_WRAPPER=@&ResponseWrapper
 JAXWS_ANNOTATIONS_PROCESSING_GROUP_LABEL=JAX-WS Annotation Processing
 JAXWS_ENABLE_ANNOTATION_PROCESSING=&Enable annotation validation processing
-JAXWS_ENABLE_ANNOTATION_PROCESSING_TOOLTIP=Turn JAX-WS annotation processing on or off in projects configured for {0} web services. 
+JAXWS_ENABLE_ANNOTATION_PROCESSING_TOOLTIP=Turn JAX-WS annotation processing on or off in projects configured for {0} web services
     
 JAVA2WS_SOAP12_BINDING_TOOLTIP=Specify to generate SOAP 1.2 binding
-JAVA2WS_CREATE_XSD_IMPORTS_TOOLTIP= Output schemas to separate files and use imports to load them instead of inlining them into the wsdl.
-JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding. Default is jaxb for jaxws frontend.
-#JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding (aegis or jaxb). Default is jaxb for jaxws frontend, and aegis for simple frontend.
-JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use.
-#JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use. jaxws and the simple frontend are supported.
+JAVA2WS_CREATE_XSD_IMPORTS_TOOLTIP= Output schemas to separate files and use imports to load them instead of inlining them into the wsdl
+JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding. Default is jaxb for jaxws frontend
+#JAVA2WS_DATABINDING_TOOLTIP= Specify the data binding (aegis or jaxb). Default is jaxb for jaxws frontend, and aegis for simple frontend
+JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use
+#JAVA2WS_FRONTEND_TOOLTIP=Specify the frontend to use. jaxws and the simple frontend are supported
 JAVA2WS_GENERATE_WSDL_TOOLTIP=Specify to generate the WSDL file
 JAVA2WS_GENERATE_WRAPPERBEAN_TOOLTIP=Specify to generate the wrapper and fault bean
 JAVA2WS_GENERATE_CLIENT_TOOLTIP=Generate a client mainline using JAX-WS APIs\n.....\n javax.xml.ws.Service service = javax.xml.ws.Service.create(...);\n... client = service.getPort(...);\n
 JAVA2WS_GENERATE_SERVER_TOOLTIP=Generate a server mainline using JAX-WS APIs\n.....\n javax.xml.ws.Endpoint.publish(...);\n.....\n
 JAVA2WS_GENERATE_ANT_TOOLTIP=Specify to generate an Ant build.xml file
-JAVA2WS_BEANS_TOOLTIP=Specify the pathname of a file defining additional Spring beans to customise data binding configuration.
+JAVA2WS_BEANS_TOOLTIP=Specify the pathname of a file defining additional Spring beans to customise data binding configuration
 JAVA2WS_TARGET_NAMESPACE_TOOLTIP=Specify the target namespace to use in the wsdl
 JAVA2WS_SERVICE_NAME_TOOLTIP=Specify the service name to use in the generated wsdl
 JAVA2WS_PORT_NAME_TOOLTIP=Specify the port name to use in the generated wsdl
@@ -103,7 +103,7 @@
 JAVA2WS_SELECT_IMPLEMENTATION_TOOLTIP=Select the Implementation
 
 WSDL2JAVA_FRONTEND_TOOLTIP=Specify the frontend. Default is JAXWS. Currently supports only JAXWS frontend
-WSDL2JAVA_DATABINDING_TOOLTIP=Specify the databinding. Default is JAXB. Currently supports only JAXB databinding. 
+WSDL2JAVA_DATABINDING_TOOLTIP=Specify the databinding. Default is JAXB. Currently supports only JAXB databinding
 WSDL2JAVA_WSDL_VERSION_TOOLTIP=Specify the wsdl version .Default is WSDL1.1. Currently suppports only WSDL1.1 version
 WSDL2JAVA_GENERATE_IMPLEMENTATION_TOOLTIP=Generate starting point code for an implementation object
 WSDL2JAVA_GENERATE_CLIENT_TOOLTIP=Generate the client code
@@ -114,11 +114,11 @@
 WSDL2JAVA_DEFAULT_NAMESPACE_LOADING_TOOLTIP=Enables or disables loading of the default namespace package name mapping
 WSDL2JAVA_EXCLUDE_NAMESPACE_LOADING_TOOLTIP=Enables or disables loading of the default excludes namespace mapping
 WSDL2JAVA_WSDL_LOCATION_TOOLTIP=Specifies the value of the @WebService annotation's wsdlLocation property
-WSDL2JAVA_XML_CATALOG_TOOLTIP=Specify the URL of an XML catalog to use for resolving imported schemas and WSDL documents.
+WSDL2JAVA_XML_CATALOG_TOOLTIP=Specify the URL of an XML catalog to use for resolving imported schemas and WSDL documents
 WSDL2JAVA_NO_ADDRESS_BINDING=Use the {0} proprietary WS-&Addressing type
-WSDL2JAVA_NO_ADDRESS_BINDING_TOOLTIP=Use the {0} proprietary WS-Addressing type instead of the JAX-WS 2.1 compliant mapping.
+WSDL2JAVA_NO_ADDRESS_BINDING_TOOLTIP=Use the {0} proprietary WS-Addressing type instead of the JAX-WS 2.1 compliant mapping
 WSDL2JAVA_AUTO_NAME_RESOLUTION=Enable Auto Name Resolution
-WSDL2JAVA_AUTO_NAME_RESOLUTION_TOOLTIP=Automatically resolve naming conflicts without requiring the use of binding customizations.
+WSDL2JAVA_AUTO_NAME_RESOLUTION_TOOLTIP=Automatically resolve naming conflicts without requiring the use of binding customizations
 WSDL2JAVA_XJC_ARGS_TOOLTIP=Specify the arguments to be passed to directly to the XJC
 WSDL2JAVA_XJC_ARG_GROUP_TITLE=XJC Arguments
 WSDL2JAVA_XJC_ARG_COLUMN_NAME=XJC Arg
@@ -141,7 +141,7 @@
 WSDL2JAVA_OUTPUT_DIRECTORY_TOOLTIP=Specify the directory into which the generated code files are written
 
 WSDL2JAVA_PACKAGE_NAME=&Package Name:
-WSDL2JAVA_PACKAGE_NAME_TOOLTIP=The java package name to use for the generated code. 
+WSDL2JAVA_PACKAGE_NAME_TOOLTIP=The java package name to use for the generated code
 
 WSDL2JAVA_PACKAGE_NAME_OPTIONAL=Specify &WSDL Namepsace to Package Name Mappings
 WSDL2JAVA_PACKAGE_NAME_OPTIONAL_TOOLTIP=Optionally specify the wsdl namespace mapping to a particular java package name
@@ -153,7 +153,7 @@
 WSDL2JAVA_SERVICE_NAME_TOOLTIP=Specify the name of the WSDL service for which code is to be generated. The default is to generate code for every service in the WSDL document
 
 WSDL2JAVA_BINDING_FILES=&Binding Files:
-WSDL2JAVA_BINDING_NAME_TOOLTIP=Specify zero, or more, JAXWS or JAXB binding files.
+WSDL2JAVA_BINDING_NAME_TOOLTIP=Specify zero, or more, JAXWS or JAXB binding files
 WSDL2JAVA_BINDING_FILES_ADD=&Add...
 WSDL2JAVA_BINDING_FILES_REMOVE=&Remove...