[159314] Mishandling Utility jars
diff --git a/plugins/org.eclipse.jst.j2ee.navigator.ui/j2ee-navigator/org/eclipse/jst/j2ee/navigator/internal/dnd/ImportJ2EEModuleDropAssistant.java b/plugins/org.eclipse.jst.j2ee.navigator.ui/j2ee-navigator/org/eclipse/jst/j2ee/navigator/internal/dnd/ImportJ2EEModuleDropAssistant.java
index ea85dc0..a07688e 100644
--- a/plugins/org.eclipse.jst.j2ee.navigator.ui/j2ee-navigator/org/eclipse/jst/j2ee/navigator/internal/dnd/ImportJ2EEModuleDropAssistant.java
+++ b/plugins/org.eclipse.jst.j2ee.navigator.ui/j2ee-navigator/org/eclipse/jst/j2ee/navigator/internal/dnd/ImportJ2EEModuleDropAssistant.java
@@ -19,7 +19,6 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
@@ -27,7 +26,6 @@
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jst.j2ee.application.internal.operations.EARComponentImportDataModelProvider;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEUtilityJarImportDataModelProvider;
 import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentImportDataModelProvider;
 import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive;
 import org.eclipse.jst.j2ee.commonarchivecore.internal.CommonarchiveFactory;
@@ -37,29 +35,31 @@
 import org.eclipse.jst.j2ee.internal.navigator.ui.Messages;
 import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentImportDataModelProvider;
 import org.eclipse.jst.j2ee.navigator.internal.plugin.J2EENavigatorPlugin;
-import org.eclipse.jst.j2ee.project.facet.EARFacetUtils;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.dnd.DropTargetEvent;
 import org.eclipse.swt.dnd.FileTransfer;
 import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CopyFilesAndFoldersOperation;
 import org.eclipse.ui.navigator.CommonDropAdapter;
 import org.eclipse.ui.progress.IProgressService;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 
 public class ImportJ2EEModuleDropAssistant extends AddProjectToEARDropAssistant {
 	
 	public boolean isSupportedType(TransferData aTransferType) { 
 		return FileTransfer.getInstance().isSupportedType(aTransferType);
 	}
-
+	
 	public IStatus handleDrop(CommonDropAdapter aDropAdapter, final DropTargetEvent aDropTargetEvent, final Object aTarget) {		
+		
 		if(FileTransfer.getInstance().isSupportedType(aDropAdapter.getCurrentTransfer())) {
 			
+			final Shell shell = getShell();
+		
 			IProgressService service = PlatformUI.getWorkbench().getProgressService();	 
 			Job importArtifactsJob = new Job(Messages.ImportJ2EEModuleDropAssistant_Importing_Java_Enterprise_Edition_artifacts) {
 				protected IStatus run(IProgressMonitor monitor) {					
@@ -78,10 +78,14 @@
 					
 					SubProgressMonitor submonitor = new SubProgressMonitor(monitor, 10);
 					IDataModel importDataModel = null;
+					boolean performSimpleJarCopy = false;
+					List simpleJarsToCopyList = null;
 					IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
 					List createdComponents = new ArrayList();
 					for(int i=0; i<names.length && !monitor.isCanceled(); i++) {
 						try {
+							importDataModel = null;
+							performSimpleJarCopy = false;
 							int separatorIndex = names[i].lastIndexOf(File.separatorChar);
 							int dotIndex = names[i].lastIndexOf('.');
 							if(separatorIndex > 0 && separatorIndex+1 < dotIndex) {
@@ -104,8 +108,14 @@
 											importDataModel = DataModelFactory.createDataModel(new AppClientComponentImportDataModelProvider());
 										else if(archive.isEJBJarFile())
 											importDataModel = DataModelFactory.createDataModel(new EJBComponentImportDataModelProvider());
-										else 
-											importDataModel = DataModelFactory.createDataModel(new J2EEUtilityJarImportDataModelProvider());										
+										else {
+											performSimpleJarCopy = true; //handle Utility jars as regular jars.
+											if(simpleJarsToCopyList == null){
+												simpleJarsToCopyList = new ArrayList();
+												simpleJarsToCopyList.add(names[i]);
+											}
+										}
+										
 									} finally {
 										if(archive != null)
 											archive.close();
@@ -119,7 +129,7 @@
 									
 									createdComponents.add((IVirtualComponent) importDataModel.getProperty(IJ2EEComponentImportDataModelProperties.COMPONENT));
 									
-								} else {
+								} else if(!performSimpleJarCopy){
 									status.add(J2EENavigatorPlugin.createErrorStatus(0, NLS.bind(Messages.ImportJ2EEModuleDropAssistant_Could_not_recognize_extension_0_, extension), null));
 								}
 								
@@ -129,6 +139,7 @@
 							status.add(J2EENavigatorPlugin.createErrorStatus(0, msg, e));
 						} 						
 					}
+					
 					if(targetEARProject != null) {
 						List createdModuleProjects = new ArrayList();
 						for(int i=0; i<createdComponents.size(); i++) {
@@ -149,23 +160,34 @@
 							String msg = e.getMessage() != null ? e.getMessage() : e.toString();
 							status.add(J2EENavigatorPlugin.createErrorStatus(0, msg, null));
 						}
-						
+						//copy the simpleJarsOver
+						if(simpleJarsToCopyList != null ){
+							try{
+								final String [] jarsToCopyArray = new String[simpleJarsToCopyList.size()];
+								simpleJarsToCopyList.toArray(jarsToCopyArray);
+								
+								CopyFilesAndFoldersOperation operation = new CopyFilesAndFoldersOperation(shell);
+								operation.copyFilesInCurrentThread(jarsToCopyArray, targetEARProject, monitor);
+							}catch (Throwable e) {
+								String msg = e.getMessage() != null ? e.getMessage() : e.toString();
+								status.add(J2EENavigatorPlugin.createErrorStatus(0, msg, e));
+							} 	
+						}	
 					}
+					
 					return status;
 				}
 
 			};
+			
 			service.showInDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), importArtifactsJob);
 			importArtifactsJob.setRule(ResourcesPlugin.getWorkspace().getRoot());
 			importArtifactsJob.schedule();
-			
-			
 			return Status.OK_STATUS;
 		}
 		return Status.CANCEL_STATUS;
 	}
 	
-	
 
 	public IStatus validateDrop(Object target, int operation, TransferData transferType) {
 		IStatus status = Status.CANCEL_STATUS;