[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/module ...

Robert Stryker rawblem at gmail.com
Tue Nov 28 12:29:30 EST 2006


  User: rawb    
  Date: 06/11/28 12:29:30

  Added:       as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/module  
                        PackagedArtifactAdapter.java
                        PackagedProjectModuleFactory.java
  Log:
  First attempt to get package publisher to work
  
  Revision  Changes    Path
  1.1      date: 2006/11/28 17:29:30;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/module/PackagedArtifactAdapter.java
  
  Index: PackagedArtifactAdapter.java
  ===================================================================
  package org.jboss.ide.eclipse.as.core.module;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.ResourcesPlugin;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.jdt.core.IJavaProject;
  import org.eclipse.wst.server.core.IModule;
  import org.eclipse.wst.server.core.IModuleArtifact;
  import org.eclipse.wst.server.core.internal.ModuleFactory;
  import org.eclipse.wst.server.core.internal.ServerPlugin;
  import org.eclipse.wst.server.core.model.ModuleArtifactAdapterDelegate;
  
  public class PackagedArtifactAdapter extends ModuleArtifactAdapterDelegate {
  
  	public PackagedArtifactAdapter() {
  	}
  
  	private PackagedProjectModuleFactory factory;
  	public IModuleArtifact getModuleArtifact(Object obj) {
  		if( obj instanceof IJavaProject ) {
  			IProject[] projects2 = ResourcesPlugin.getWorkspace().getRoot().getProjects();
  			boolean done = false;
  			String jpName = ((IJavaProject)obj).getElementName();
  			for( int i = 0; i < projects2.length && !done; i++ ) {
  				if( projects2[i].getName().equals(jpName)) {
  					done = true;
  					obj = projects2[i];
  				}
  			}
  		} 
  		if( obj instanceof IProject ) {
  			PackagedProjectModuleFactory factory = getFactory();
  			if( factory != null ) {
  				IModule mod = factory.getModuleFromProject((IProject)obj);
  				if( mod != null ) {
  					return getArtifact(mod);
  				}
  			}
  		}
  		return null;
  	}
  	
  	protected PackagedProjectModuleFactory getFactory() {
  		if( factory != null ) return factory;
  		
  		ModuleFactory[] factories = ServerPlugin.getModuleFactories();
  		System.out.println(PackagedProjectModuleFactory.FACTORY_TYPE_ID);
  		for( int i = 0; i < factories.length; i++ ) {
  			System.out.println("  " + factories[i].getId());
  			if( factories[i].getId().equals(PackagedProjectModuleFactory.FACTORY_TYPE_ID)) {
  				Object o = factories[i].getDelegate(new NullProgressMonitor());
  				if( o instanceof PackagedProjectModuleFactory ) {
  					factory = (PackagedProjectModuleFactory)o;
  					return factory;
  				}
  			}
  		}
  		return null;
  	}
  	
  	protected IModuleArtifact getArtifact(IModule mod) {
  		return new PackagedArtifact(mod);
  	}
  	
  	public class PackagedArtifact implements IModuleArtifact{
  		protected IModule mod;
  		public PackagedArtifact(IModule module) {
  			this.mod = module;
  		}
  		public IModule getModule() {
  			return mod;
  		}
  	}
  }
  
  
  
  1.1      date: 2006/11/28 17:29:30;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/module/PackagedProjectModuleFactory.java
  
  Index: PackagedProjectModuleFactory.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.as.core.module;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.IResource;
  import org.eclipse.core.resources.IResourceChangeEvent;
  import org.eclipse.core.resources.IResourceChangeListener;
  import org.eclipse.core.resources.IResourceDelta;
  import org.eclipse.core.resources.ResourcesPlugin;
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IPath;
  import org.eclipse.core.runtime.IStatus;
  import org.eclipse.core.runtime.Status;
  import org.eclipse.wst.server.core.IModule;
  import org.eclipse.wst.server.core.model.IModuleResource;
  import org.eclipse.wst.server.core.model.ModuleDelegate;
  import org.eclipse.wst.server.core.util.ProjectModuleFactoryDelegate;
  import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
  import org.jboss.ide.eclipse.as.core.model.ModuleModel;
  import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  
  /**
   *
   * @author rob.stryker at jboss.com
   */
  public class PackagedProjectModuleFactory extends ProjectModuleFactoryDelegate implements IResourceChangeListener {
  	protected Map moduleDelegates = new HashMap(5);
  	protected HashMap projectsToModule = new HashMap(5);
  	
  	public static final String FACTORY_TYPE_ID = "org.jboss.ide.eclipse.as.core.PackagedModuleFactory";
  	public static final String MODULE_TYPE = "jboss.packaged.project";
  	public static final String VERSION = "1.0";
  
  	public PackagedProjectModuleFactory() {
  		super();
  		ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE );
  	}
  	
  	protected IModule[] createModules(IProject project) {
  		if( PackagesCore.projectHasPackages(project) ) {
  			IModule module = createModule(project.getName(), 
  					project.getName(), MODULE_TYPE, VERSION, project);
  			Object moduleDelegate = new PackagedModuleDelegate();
  			moduleDelegates.put(module, moduleDelegate);
  			projectsToModule.put(project, module);
  			return new IModule[] {module};
  		}
  		
  		return null;
  	}
  
  	public ModuleDelegate getModuleDelegate(IModule module) {
  		return (ModuleDelegate) moduleDelegates.get(module);
  	}
  
  
  	protected void clearCache() {
  		moduleDelegates = new HashMap(5);
  		projectsToModule = new HashMap(5);
  	}
  	
  	public IModule getModuleFromProject(IProject project) {
  		getModules(); // prime it
  		return (IModule)projectsToModule.get(project);
  	}
  	
  	/**
  	 * Returns the list of resources that the module should listen to
  	 * for state changes. The paths should be project relative paths.
  	 * Subclasses can override this method to provide the paths.
  	 *
  	 * @return a possibly empty array of paths
  	 */
  	protected IPath[] getListenerPaths() {
  		return null;
  	}
  
  	public class PackagedModuleDelegate extends ModuleDelegate {
  
  		public IModule[] getChildModules() {
  			return new IModule[0];
  		}
  
  		public IModuleResource[] members() throws CoreException {
  			return new IModuleResource[0];
  		}
  
  		public IStatus validate() {
  			return new Status(IStatus.OK, JBossServerCorePlugin.PLUGIN_ID, 
  					0, "", null);
  		}
  	}
  
  	public void resourceChanged(IResourceChangeEvent event) {
  		IResource res;
  		IResourceDelta delta = event.getDelta();
  		IResourceDelta[] children = delta.getAffectedChildren();
  		for( int i = 0; i < children.length; i++ ) {
  			if( children[i].getResource() instanceof IProject ) {
  				res = children[i].getResource();
  				IModule mod = getModuleFromProject((IProject)res);
  				if( mod != null )
  					ModuleModel.getDefault().markModuleChanged(mod);
  			}
  		}
  	}
  }
  
  
  



More information about the jboss-cvs-commits mailing list