[jboss-cvs] jbosside/ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards ...

Robert Stryker rawblem at gmail.com
Mon Nov 6 12:04:23 EST 2006


  User: rawb    
  Date: 06/11/06 12:04:23

  Added:       ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards     
                        NewSessionBeanWizard.java
                        NewMessageDrivenBeanWizard.java
                        Ejb30ProjectFirstPage.java Ejb30ProjectWizard.java
                        NewEJB3ProjectWizard.java
  Log:
  Completely new infrastructure to support the webtools / facets. It still needs better text messages and some cleanup but should be more than functional. 
  
  Revision  Changes    Path
  1.1      date: 2006/11/06 17:04:23;  author: rawb;  state: Exp;jbosside/ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards/NewSessionBeanWizard.java
  
  Index: NewSessionBeanWizard.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.ejb3.ui.wizards;
  
  import org.eclipse.core.resources.IFile;
  import org.eclipse.core.resources.IResource;
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.jdt.core.IJavaElement;
  import org.eclipse.jdt.internal.ui.JavaPluginImages;
  import org.eclipse.jdt.internal.ui.wizards.NewElementWizard;
  import org.eclipse.jdt.ui.ISharedImages;
  import org.eclipse.jdt.ui.JavaUI;
  import org.eclipse.jface.viewers.IStructuredSelection;
  import org.eclipse.ui.IWorkbench;
  import org.jboss.ide.eclipse.ejb3.ui.wizards.pages.NewSessionBeanWizardPage;
  
  /**
   * @author Marshall
   */
  public class NewSessionBeanWizard extends NewElementWizard
  {
  
     NewSessionBeanWizardPage page;
  
     private IStructuredSelection selection;
  
     public NewSessionBeanWizard ()
     {
  	   super();
  	   setDefaultPageImageDescriptor(JavaPluginImages.DESC_WIZBAN_NEWCLASS);
  	   setWindowTitle("New Session Bean");
     }
     
     public void init(IWorkbench workbench, IStructuredSelection selection)
     {
        page = new NewSessionBeanWizardPage();
        this.selection = selection;
        
        super.init(workbench, selection);
     }
  
     public boolean performFinish()
     {
        warnAboutTypeCommentDeprecation();
        boolean res = super.performFinish();
        if (res)
        {
           IResource resource = page.getModifiedResource();
           if (resource != null)
           {
              selectAndReveal(resource);
              openResource((IFile) resource);
           }
        }
        return true;
     }
  
     public void addPages()
     {
        addPage(page);
        page.init(selection);
     }
  
     protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException
     {
        page.createType(monitor);
     }
  
     public IJavaElement getCreatedElement()
     {
        return page.getCreatedType();
     }
  }
  
  
  
  1.1      date: 2006/11/06 17:04:23;  author: rawb;  state: Exp;jbosside/ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards/NewMessageDrivenBeanWizard.java
  
  Index: NewMessageDrivenBeanWizard.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.ejb3.ui.wizards;
  
  import org.eclipse.core.resources.IFile;
  import org.eclipse.core.resources.IResource;
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.jdt.core.IJavaElement;
  import org.eclipse.jdt.internal.ui.wizards.NewElementWizard;
  import org.eclipse.jface.viewers.IStructuredSelection;
  import org.eclipse.ui.IWorkbench;
  import org.jboss.ide.eclipse.ejb3.ui.wizards.pages.NewMessageDrivenBeanWizardPage;
  
  /**
   * @author Marshall
   *
   * TODO To change the template for this generated type comment go to
   * Window - Preferences - Java - Code Style - Code Templates
   */
  public class NewMessageDrivenBeanWizard extends NewElementWizard
  {
  
     NewMessageDrivenBeanWizardPage page;
  
     private IStructuredSelection selection;
  
     public void init(IWorkbench workbench, IStructuredSelection selection)
     {
        page = new NewMessageDrivenBeanWizardPage();
        this.selection = selection;
  
        super.init(workbench, selection);
     }
  
     public boolean performFinish()
     {
        warnAboutTypeCommentDeprecation();
        boolean res = super.performFinish();
        if (res)
        {
           IResource resource = page.getModifiedResource();
           if (resource != null)
           {
              selectAndReveal(resource);
              openResource((IFile) resource);
           }
        }
        return true;
     }
  
     public void addPages()
     {
        addPage(page);
        page.init(selection);
     }
  
     protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException
     {
        page.createType(monitor);
     }
  
     public IJavaElement getCreatedElement()
     {
        return page.getCreatedType();
     }
  
  }
  
  
  
  1.1      date: 2006/11/06 17:04:23;  author: rawb;  state: Exp;jbosside/ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards/Ejb30ProjectFirstPage.java
  
  Index: Ejb30ProjectFirstPage.java
  ===================================================================
  package org.jboss.ide.eclipse.ejb3.ui.wizards;
  
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Set;
  
  import org.eclipse.jface.dialogs.IDialogSettings;
  import org.eclipse.jst.j2ee.internal.wizard.J2EEComponentFacetCreationWizardPage;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.SelectionAdapter;
  import org.eclipse.swt.events.SelectionEvent;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Combo;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Group;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
  import org.eclipse.wst.common.frameworks.datamodel.DataModelPropertyDescriptor;
  import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
  import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
  import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
  import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
  import org.eclipse.wst.common.project.facet.core.runtime.internal.RuntimeComponent;
  import org.eclipse.wst.common.project.facet.core.runtime.internal.RuntimeManagerImpl;
  import org.eclipse.wst.project.facet.ProductManager;
  import org.eclipse.wst.web.internal.ResourceHandler;
  import org.eclipse.wst.web.ui.internal.wizards.DataModelFacetCreationWizardPage;
  
  public class Ejb30ProjectFirstPage extends J2EEComponentFacetCreationWizardPage {
  	public static final String EJB30_FACET_ID = "jboss.ejb30";
  
  	protected String getModuleFacetID() {
  		return EJB30_FACET_ID;
  	}
  	protected String getModuleTypeID() {
  		return null;
  	}
  
  	public Ejb30ProjectFirstPage(IDataModel model, String pageName) {
  		super(model, pageName);
  		setTitle("JBIDE EJB30");
  		setDescription("JBIDE EJB30 DESC");
  	}
  	
  	
  	public void restoreDefaultSettings() {
  		IDialogSettings settings = getDialogSettings();
  		//restoreRuntimeSettings2(settings, model);
  	}
  
  	private static String NULL_RUNTIME = "NULL_RUNTIME"; //$NON-NLS-1$
  	private static String MRU_RUNTIME_STORE = "MRU_RUNTIME_STORE"; //$NON-NLS-1$
  
  	private void restoreRuntimeSettings2(IDialogSettings settings, IDataModel model){
  		if (settings != null) {
  			if (!model.isPropertySet(IFacetProjectCreationDataModelProperties.FACET_RUNTIME)) {
  				boolean runtimeSet = false;
  				String[] mruRuntimeArray = settings.getArray(MRU_RUNTIME_STORE);
  				DataModelPropertyDescriptor[] descriptors = model.getValidPropertyDescriptors(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
  				List mruRuntimes = new ArrayList();
  				if (mruRuntimeArray == null) {
  					List defRuntimes = ProductManager.getDefaultRuntimes();
  					for (Iterator iter = defRuntimes.iterator(); iter.hasNext();)
  						mruRuntimes.add(((IRuntime) iter.next()).getName());
  				} else {
  					mruRuntimes.addAll(Arrays.asList(mruRuntimeArray));
  				}
  				if (!mruRuntimes.isEmpty()) {
  					for (int i = 0; i < mruRuntimes.size() && !runtimeSet; i++) {
  						for (int j = 0; j < descriptors.length-1 && !runtimeSet; j++) {
  							if (mruRuntimes.get(i).equals(descriptors[j].getPropertyDescription())) {
  								model.setProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME, descriptors[j].getPropertyValue());
  								runtimeSet = true;
  							}
  						}
  						if(!runtimeSet && mruRuntimes.get(i).equals(NULL_RUNTIME) && descriptors.length != 0){
  							model.setProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME, descriptors[descriptors.length -1].getPropertyValue());
  							runtimeSet = true;
  						}
  					}
  				}
  				if (!runtimeSet && descriptors.length > 0) {
  					model.setProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME, descriptors[0].getPropertyValue());
  				}
  			}
  		}
  	}
  
  	
  	/*
  	 * Coppied from superclass and added merely a label
  	 * (non-Javadoc)
  	 * @see org.eclipse.wst.web.ui.internal.wizards.DataModelFacetCreationWizardPage#createServerTargetComposite(org.eclipse.swt.widgets.Composite)
  	 */
  	protected void createServerTargetComposite(Composite parent) {
          Group group = new Group(parent, SWT.NONE);
          group.setText(ResourceHandler.TargetRuntime);
          group.setLayoutData(gdhfill());
          group.setLayout(new GridLayout(2, false));
  		serverTargetCombo = new Combo(group, SWT.BORDER | SWT.READ_ONLY);
  		serverTargetCombo.setLayoutData(gdhfill());
  		Button newServerTargetButton = new Button(group, SWT.NONE);
  		newServerTargetButton.setText(ResourceHandler.NewDotDotDot);
  		newServerTargetButton.addSelectionListener(new SelectionAdapter() {
  			public void widgetSelected(SelectionEvent e) {
  				if (!internalLaunchNewRuntimeWizard(getShell(), model)) {
  					//Bugzilla 135288
  					//setErrorMessage(ResourceHandler.InvalidServerTarget);
  				}
  			}
  		});
  		
  		Label label = new Label(group, SWT.NONE);
  		label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
  		label.setText("Warning: Make sure you're creating a runtime that supports ejb3.0.");
  		
  		Control[] deps = new Control[]{newServerTargetButton};
  		synchHelper.synchCombo(serverTargetCombo, FACET_RUNTIME, deps);
  		if (serverTargetCombo.getSelectionIndex() == -1 && serverTargetCombo.getVisibleItemCount() != 0)
  			serverTargetCombo.select(0);
  	}
  }
  
  
  1.1      date: 2006/11/06 17:04:23;  author: rawb;  state: Exp;jbosside/ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards/Ejb30ProjectWizard.java
  
  Index: Ejb30ProjectWizard.java
  ===================================================================
  package org.jboss.ide.eclipse.ejb3.ui.wizards;
  
  import java.net.URL;
  
  import org.eclipse.core.runtime.Platform;
  import org.eclipse.jface.resource.ImageDescriptor;
  import org.eclipse.jface.wizard.IWizardPage;
  import org.eclipse.ui.INewWizard;
  import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
  import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
  import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
  import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
  import org.eclipse.wst.web.ui.internal.wizards.NewProjectDataModelFacetWizard;
  import org.jboss.ide.eclipse.ejb3.core.facet.Ejb30FacetProjectCreationDataModelProvider;
  import org.osgi.framework.Bundle;
  
  public class Ejb30ProjectWizard extends NewProjectDataModelFacetWizard
  		implements INewWizard {
  
  	public Ejb30ProjectWizard(IDataModel model){
  		super(model);
  		setWindowTitle("JBIDE EJB 3.0");
  	}
  	
  	public Ejb30ProjectWizard(){
  		super();
  		setWindowTitle("JBIDE EJB 3.0");
  	}
  	
  	protected IDataModel createDataModel() {
  		return DataModelFactory.createDataModel(new Ejb30FacetProjectCreationDataModelProvider());
  	}
  
  	protected IFacetedProjectTemplate getTemplate() {
  		return ProjectFacetsManager.getTemplate("template.jboss.ejb30"); //$NON-NLS-1$
  	}
  
  	protected IWizardPage createFirstPage() {
  		return new Ejb30ProjectFirstPage(model, "first.page"); //$NON-NLS-1$
  	}
  	
  	// TODO: change
  	protected ImageDescriptor getDefaultPageImageDescriptor() {
  		final Bundle bundle = Platform.getBundle("org.eclipse.jst.ejb.ui"); //$NON-NLS-1$
  		final URL url = bundle.getEntry("icons/full/wizban/ejbproject_wiz.gif"); //$NON-NLS-1$
  		return ImageDescriptor.createFromURL(url);
  	}
  	
  	// Let's you switch to another perspective
  	protected String getFinalPerspectiveID() {
  		return null;
  	}
  
  }
  
  
  
  1.1      date: 2006/11/06 17:04:23;  author: rawb;  state: Exp;jbosside/ejb3/plugins/org.jboss.ide.eclipse.ejb3.wizards.ui/src/main/org/jboss/ide/eclipse/ejb3/ui/wizards/NewEJB3ProjectWizard.java
  
  Index: NewEJB3ProjectWizard.java
  ===================================================================
  /*
   * JBoss, a division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.ejb3.ui.wizards;
  
  import java.io.ByteArrayInputStream;
  import java.io.File;
  import java.io.FileFilter;
  import java.lang.reflect.InvocationTargetException;
  import java.util.ArrayList;
  import java.util.Iterator;
  
  import org.eclipse.core.internal.resources.ResourceException;
  import org.eclipse.core.resources.IFile;
  import org.eclipse.core.resources.IFolder;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.IResource;
  import org.eclipse.core.resources.IResourceVisitor;
  import org.eclipse.core.resources.ResourcesPlugin;
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IPath;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.core.runtime.Path;
  import org.eclipse.jdt.core.IClasspathEntry;
  import org.eclipse.jdt.core.IJavaProject;
  import org.eclipse.jdt.core.JavaCore;
  import org.eclipse.jdt.core.JavaModelException;
  import org.eclipse.jdt.internal.ui.util.CoreUtility;
  import org.eclipse.jdt.internal.ui.wizards.JavaProjectWizardSecondPage;
  import org.eclipse.jdt.launching.JavaRuntime;
  import org.eclipse.jface.dialogs.ProgressMonitorDialog;
  import org.eclipse.jface.operation.IRunnableWithProgress;
  import org.eclipse.jface.viewers.IStructuredSelection;
  import org.eclipse.jface.wizard.Wizard;
  import org.eclipse.ui.INewWizard;
  import org.eclipse.ui.IWorkbench;
  import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
  import org.jboss.ide.eclipse.ejb3.core.classpath.EJB3ClasspathContainer;
  import org.jboss.ide.eclipse.ejb3.ui.EJB3WizardsUIPlugin;
  import org.jboss.ide.eclipse.ejb3.ui.wizards.pages.JBossEJB3LibrariesPage;
  import org.jboss.ide.eclipse.jdt.aop.core.AopCorePlugin;
  import org.jboss.ide.eclipse.jdt.aop.core.classpath.AopJdk15ClasspathContainer;
  
  /**
   * @author Marshall
   */
  public class NewEJB3ProjectWizard extends Wizard implements INewWizard
  {
  
     protected WizardNewProjectCreationPage page1;
  
     protected JBossEJB3LibrariesPage page2;
  
     public void addPages()
     {
        page1 = new WizardNewProjectCreationPage("EJB3 Project Wizard");
        page1.setDescription("Create a EJB 3.0 Project in the workspace or in an external location.");
        page1.setTitle("Create a EJB3 Project");
  
        page2 = new JBossEJB3LibrariesPage();
        page2.setDescription("Select a JBoss configuration that has the JBoss EJB3 container installed.");
        page2.setTitle("Select a JBoss configuration");
        addPage(page1);
        addPage(page2);
     }
  
     private ArrayList findSourcePaths(IProject project) throws CoreException
     {
        final ArrayList sourcePaths = new ArrayList();
        project.accept(new IResourceVisitor()
        {
           public boolean visit(IResource resource) throws CoreException
           {
              if (resource.getType() == IResource.FILE && resource.getFileExtension().equals("java"))
              {
                 IPath dir = resource.getFullPath().removeLastSegments(1);
  
                 for (int i = 0; i < dir.segmentCount(); i++)
                 {
                    if (dir.segment(i).equalsIgnoreCase("org") || dir.segment(i).equalsIgnoreCase("net")
                          || dir.segment(i).equalsIgnoreCase("com") || dir.segment(i).equalsIgnoreCase("edu"))
                    {
                       dir = dir.uptoSegment(i - 1);
                       break;
                    }
                 }
                 if (!sourcePaths.contains(dir))
                 {
                    sourcePaths.add(dir);
                 }
              }
              return true;
           }
        });
  
        return sourcePaths;
     }
  
     private class OutputLocationFinder implements IResourceVisitor
     {
        private IPath outputLocation;
  
        public OutputLocationFinder()
        {
           outputLocation = null;
        }
  
        public IPath getOuptutLocation()
        {
           return outputLocation;
        }
  
        public boolean visit(IResource resource) throws CoreException
        {
           if (resource.getType() == IResource.FILE && resource.getFileExtension().equals("class"))
           {
              outputLocation = resource.getFullPath().removeLastSegments(1);
              return false;
           }
           return true;
        }
     }
  
     private IPath findOutputLocation(IProject project) throws CoreException
     {
        OutputLocationFinder finder = new OutputLocationFinder();
        project.accept(finder);
  
        return finder.getOuptutLocation();
     }
  
     private void createSrcAndBin(IJavaProject project, IProgressMonitor monitor) throws CoreException
     {
        IPath srcLocation = project.getProject().getFullPath().append(new Path("/src"));
        IPath outputLocation = project.getProject().getFullPath().append(new Path("/bin"));
  
        createFolder(srcLocation, monitor);
        createFolder(outputLocation, monitor);
  
        ArrayList entries = new ArrayList();
        entries.add(JavaCore.newSourceEntry(srcLocation));
  
        createJndiProperties(srcLocation);
        project.setRawClasspath(configureClasspathEntries(entries), outputLocation, monitor);
     }
  
     private void createFolder(IPath location, IProgressMonitor monitor) throws CoreException
     {
        if (!ResourcesPlugin.getWorkspace().getRoot().exists(location))
        {
           IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(location);
           try
           {
              CoreUtility.createFolder(folder, true, true, monitor);
           }
           catch (ResourceException e)
           {
  
           }
        }
     }
  
     private IClasspathEntry[] getDefaultClasspathEntries() throws CoreException
     {
        return new IClasspathEntry[]
        {JavaRuntime.getDefaultJREContainerEntry()};
     }
  
     private IClasspathEntry[] configureClasspathEntries(ArrayList classpathEntries) throws CoreException
     {
        IClasspathEntry defaultEntries[] = getDefaultClasspathEntries();
        for (int i = 0; i < defaultEntries.length; i++)
        {
           classpathEntries.add(defaultEntries[i]);
        }
  
        classpathEntries.add(JavaCore.newContainerEntry(new Path(AopJdk15ClasspathContainer.CONTAINER_ID)));
        classpathEntries.add(JavaCore.newContainerEntry(new Path(EJB3ClasspathContainer.CONTAINER_ID).append(page2
              .getServer().getServer().getName())));
  
        return (IClasspathEntry[]) classpathEntries.toArray(new IClasspathEntry[classpathEntries.size()]);
     }
  
     private void createJndiProperties(IPath srcPath) throws CoreException
     {
        IPath jndiPath = srcPath.append("jndi.properties");
        IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(jndiPath);
  
        String jndiProps = "java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory\n"
              + "java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces\n"
              + "java.naming.provider.url=localhost:1099\n";
  
        file.create(new ByteArrayInputStream(jndiProps.getBytes()), true, new NullProgressMonitor());
     }
  
     private class JndiPropertiesFileFilter implements FileFilter
     {
        public boolean accept(File file)
        {
           return (file.getName().equals("jndi.properties"));
        }
     }
  
     private boolean is15Classpath(IJavaProject javaProject)
     {
        try
        {
           return javaProject.findType("java.lang.Enum") != null; //$NON-NLS-1$
        }
        catch (JavaModelException e)
        {
           // ignore
           return false;
        }
     }
  
     public boolean performFinish()
     {
        IRunnableWithProgress op = new IRunnableWithProgress()
        {
           public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
           {
              try
              {
                 monitor.beginTask("Configuring EJB3 Classpath...", 1);
                 boolean page2Finished = page2.finish();
  
                 if (!page2Finished)
                 {
                    throw new InterruptedException();
                 }
  
                 monitor.worked(1);
  
                 monitor.beginTask("Applying natures..", 2);
                 IProject project = page1.getProjectHandle();
  
                 JavaProjectWizardSecondPage.createProject(project, page1.getLocationPath(), monitor);
                 AopCorePlugin.addProjectNature(project, JavaCore.NATURE_ID);
                 monitor.worked(1);
  
                 IJavaProject javaProject = JavaCore.create(project);
                 javaProject.setRawClasspath(getDefaultClasspathEntries(), monitor);
                 monitor.worked(1);
  
                 if (!is15Classpath(javaProject))
                 {
                    EJB3WizardsUIPlugin
                          .warn("EJB3 Projects require a 5.0 JRE to compile. "
                                + "Since a 5.0 JRE isn't available, a simple java project will be created with your current default JRE. "
                                + "After you have installed a 5.0 JRE you can add JBoss EJB3 Libraries to your Java Project under "
                                + "Project Properties > Java Build Path > Libraries > Add Library.");
  
                    return;
                 }
  
                 //EJB3ProjectNature.ensureAopProjectNature(javaProject);
                 AopCorePlugin.getDefault().setJava50CompilerCompliance(javaProject);
  
                 ArrayList sourcePaths = findSourcePaths(project);
                 IPath outputLocation = findOutputLocation(project);
  
                 if (sourcePaths.size() > 0)
                 {
                    ArrayList cpEntries = new ArrayList();
                    boolean jndiPropertiesExists = false;
                    JndiPropertiesFileFilter jndiFilter = new JndiPropertiesFileFilter();
  
                    for (Iterator iter = sourcePaths.iterator(); iter.hasNext();)
                    {
                       IPath sourcePath = (IPath) iter.next();
                       cpEntries.add(JavaCore.newSourceEntry(sourcePath));
  
                       if (!jndiPropertiesExists)
                       {
                          File propFiles[] = sourcePath.toFile().listFiles(jndiFilter);
                          if (propFiles != null && propFiles.length > 0)
                          {
                             jndiPropertiesExists = true;
                          }
                       }
                    }
  
                    if (!jndiPropertiesExists)
                    {
                       IPath sourcePath = (IPath) sourcePaths.iterator().next();
                       try
                       {
                          createJndiProperties(sourcePath);
                       }
                       catch (Exception e)
                       {
  
                       }
                    }
  
                    if (outputLocation == null)
                    {
                       EJB3WizardsUIPlugin.alert("While importing existing source, JBossIDE was unable to find"
                             + " a location to place compiled java class files. The directory \"bin\" will"
                             + " be created under the project directory and used as an output location instead.");
  
                       outputLocation = project.getProject().getFullPath().append(new Path("/bin"));
                       createFolder(outputLocation, monitor);
                    }
  
                    javaProject.getProject().getPersistentProperty(EJB3ClasspathContainer.JBOSS_EJB3_CONFIGURATION);
                    javaProject.setRawClasspath(configureClasspathEntries(cpEntries), outputLocation, monitor);
  
                 }
                 else
                 {
                    createSrcAndBin(javaProject, monitor);
                 }
              }
              catch (CoreException e)
              {
                 e.printStackTrace();
              }
  
              monitor.done();
           }
        };
  
        try
        {
           new ProgressMonitorDialog(getShell()).run(false, true, op);
        }
        catch (InterruptedException e)
        {
           return false;
        }
        catch (Exception e)
        {
           e.printStackTrace();
        }
  
        return true;
     }
  
     public void init(IWorkbench workbench, IStructuredSelection selection)
     {
     }
  
     public boolean canFinish()
     {
        if (page2 == null)
           return false;
  
        return page2.getServer() != null;
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list