Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.wst.web/static_web_project/org/eclipse/wst/web/internal/deployables/FlatComponentDeployable.java')
-rw-r--r--plugins/org.eclipse.wst.web/static_web_project/org/eclipse/wst/web/internal/deployables/FlatComponentDeployable.java379
1 files changed, 0 insertions, 379 deletions
diff --git a/plugins/org.eclipse.wst.web/static_web_project/org/eclipse/wst/web/internal/deployables/FlatComponentDeployable.java b/plugins/org.eclipse.wst.web/static_web_project/org/eclipse/wst/web/internal/deployables/FlatComponentDeployable.java
deleted file mode 100644
index fb8689ba2..000000000
--- a/plugins/org.eclipse.wst.web/static_web_project/org/eclipse/wst/web/internal/deployables/FlatComponentDeployable.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Red Hat and others.
- * 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:
- * Red Hat - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.web.internal.deployables;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.componentcore.ComponentCore;
-import org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent;
-import org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.FlatComponentTaskModel;
-import org.eclipse.wst.common.componentcore.internal.flat.IChildModuleReference;
-import org.eclipse.wst.common.componentcore.internal.flat.IFlatFile;
-import org.eclipse.wst.common.componentcore.internal.flat.IFlatFolder;
-import org.eclipse.wst.common.componentcore.internal.flat.IFlatResource;
-import org.eclipse.wst.common.componentcore.internal.flat.IFlatVirtualComponent;
-import org.eclipse.wst.common.componentcore.internal.flat.IFlattenParticipant;
-import org.eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.ServerUtil;
-import org.eclipse.wst.server.core.model.IModuleFile;
-import org.eclipse.wst.server.core.model.IModuleFolder;
-import org.eclipse.wst.server.core.model.IModuleResource;
-import org.eclipse.wst.server.core.model.ModuleDelegate;
-import org.eclipse.wst.server.core.util.ModuleFile;
-import org.eclipse.wst.server.core.util.ProjectModule;
-
-public abstract class FlatComponentDeployable extends ProjectModule {
-
- /*
- * Register an adapt IModule to IVirtualComponent
- */
- static {
- Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {
- public Class[] getAdapterList() {
- return new Class[] { IVirtualComponent.class };
- }
-
- public Object getAdapter(Object adaptableObject, Class adapterType) {
- if (adaptableObject instanceof IModule) {
- IModule module = (IModule) adaptableObject;
- FlatComponentDeployable deployable = (FlatComponentDeployable) module.loadAdapter(FlatComponentDeployable.class, null);
- if(deployable != null){
- IVirtualComponent virtualComponent = deployable.getComponent();
- return virtualComponent;
- }
- }
- return null;
- }
- }, IModule.class);
- }
-
- protected IVirtualComponent component = null;
- protected List<IModuleResource> members = new ArrayList<IModuleResource>();
-
- public FlatComponentDeployable(IProject project) {
- this(project,ComponentCore.createComponent(project));
- }
-
- public FlatComponentDeployable(IProject project, IVirtualComponent aComponent) {
- super(project);
- this.component = aComponent;
- }
-
- public IVirtualComponent getComponent() {
- return component;
- }
-
- /**
- * We will cache the flattened piece here, and instead redirect
- * the module factories to recreate the modules *whenever* there is
- * a workspace change. This will still be much more efficient than
- * traversing the tree each time a call to getResources() or getChildModules().
- */
- private FlatVirtualComponent cacheFlattened = null;
-
-
- public boolean shouldCache() {
- return false;
- }
-
- public void clearCache() {
- cacheFlattened = null;
- }
-
- /**
- * The export model is what does the grunt of the work
- * @return
- */
- protected IFlatVirtualComponent getFlatComponent() {
- if( !shouldCache() || cacheFlattened == null ) {
- FlatComponentTaskModel options = new FlatComponentTaskModel();
- options.put(FlatVirtualComponent.PARTICIPANT_LIST, Arrays.asList(getParticipants()));
- FlatVirtualComponent tmp = new FlatVirtualComponent(component, options);
- if( shouldCache())
- cacheFlattened = tmp;
- return tmp;
- }
- return cacheFlattened;
- }
-
- /**
- * Subclasses can provide a list of participants who may
- * be involved in forming the export model
- *
- * A deployable with no participant should still properly
- * consume consumed references and traverse the model appropriately
- *
- * @return
- */
- protected IFlattenParticipant[] getParticipants() {
- return new IFlattenParticipant[]{
- };
- }
-
- public boolean isBinary() {
- return component == null ? false : component.isBinary();
- }
-
- @Override
- public IModuleResource[] members() throws CoreException {
- if( component.isBinary() )
- return LEGACY_binaryMembers();
-
- IFlatVirtualComponent em = getFlatComponent();
- IFlatResource[] resources = em.fetchResources();
- return convert(resources);
-
- }
-
- protected IModuleResource[] LEGACY_binaryMembers() {
- IFile ifile = (IFile)component.getAdapter(IFile.class);
- File file = (File)component.getAdapter(File.class);
- ModuleFile mf = ifile != null ? new ModuleFile(ifile, ifile.getName(), new Path("")) //$NON-NLS-1$
- : new ModuleFile(file, file.getName(), new Path("")); //$NON-NLS-1$
- return new IModuleResource[]{mf};
- }
-
- /**
- * Returns the child modules of this module.
- *
- * @return org.eclipse.wst.server.core.model.IModule[]
- */
- @Override
- public IModule[] getChildModules() {
- return getModules();
- }
-
- public /* non api */ IChildModuleReference[] getExportModelChildren() throws CoreException {
- IFlatVirtualComponent em = getFlatComponent();
- IChildModuleReference[] children = em.getChildModules();
- return children;
- }
-
- public IModule[] getModules() {
- // Legacy, here in case the old modules are used
- if( component.isBinary() )
- return new IModule[]{};
-
- try {
- List<IModule> modules = new ArrayList<IModule>();
- IChildModuleReference[] children = getExportModelChildren();
- for( int i = 0; i < children.length; i++ ) {
- IModule child = gatherModuleReference(component, children[i]);
- if( child != null )
- modules.add(child);
- }
- return modules.toArray(new IModule[modules.size()]);
- } catch( CoreException ce ) {
- }
- return new IModule[]{};
- }
-
- @Override
- public String getPath(IModule m) {
- return getURI(m);
- }
-
- /**
- * Returns the URI of the given contained CHILD module.
- *
- * SOFT requirements (NOT API!!) in use by some adopters
- * If the passed in module is equal to this module, return our own deployed name
- *
- * @param module a module
- * @return the URI of the given module, or <code>null</code> if the URI could
- * not be found
- */
- public String getURI(IModule module) {
- ProjectModule md = (ProjectModule)module.loadAdapter(ProjectModule.class, new NullProgressMonitor());
- if( md == this ) {
- // guess my own name
- return VirtualReferenceUtilities.INSTANCE.getDefaultProjectArchiveName(this.component);
- }
- try {
- FlatComponentDeployable cd = (FlatComponentDeployable)module.loadAdapter(FlatComponentDeployable.class, new NullProgressMonitor());
- if( cd != null ) {
- IFlatVirtualComponent em = getFlatComponent();
- IChildModuleReference[] children = em.getChildModules();
- for( int i = 0; i < children.length; i++ ) {
- IModule child = gatherModuleReference(component, children[i]);
- if( child != null && child.getId().equals(module.getId()))
- return children[i].getRelativeURI().toString();
- }
- }
- } catch( CoreException ce ) {
- }
- return null;
- }
-
- /**
- * If I know how to find an IModule for this child, do so now
- *
- * I would love to see this replaced with some API to locate a
- * possible child module based on a virtual component.
- *
- * @param component
- * @param targetComponent
- * @return
- */
- protected IModule gatherModuleReference(IVirtualComponent component, IChildModuleReference child) {
- // Handle workspace project module components
- // Subclasses should extend
- IVirtualComponent targetComponent = child.getComponent();
- if (targetComponent != null && targetComponent.getProject()!= component.getProject()) {
- if (!targetComponent.isBinary()) {
- return filterModuleDelegates(ServerUtil.getModules(targetComponent.getProject()));
- }
- }
- return null;
- }
-
- /**
- * An extender may wish to override this method in order to control which
- * delegate is returned in the scenario where more than one exist. By default
- * the first one found is returned.
- *
- * @param IModule[] modules
- * @return IModule[]
- */
- protected IModule filterModuleDelegates(IModule[] modules) {
- for (int i = 0; i < modules.length; i++) {
- ModuleDelegate md = (ModuleDelegate)modules[i].loadAdapter(ModuleDelegate.class, new NullProgressMonitor());
- if (md instanceof ProjectModule) {
- return modules[i];
- }
- }
- return modules.length > 0 ? modules[0] : null;
- }
-
- /*
- * Below are STATIC utility classes and methods
- */
- protected static IModuleResource[] convert(IFlatResource[] resources) {
- ArrayList<IModuleResource> list = new ArrayList<IModuleResource>();
- for( int i = 0; i < resources.length; i++ ) {
- if( resources[i] instanceof IFlatFile)
- list.add(new ComponentModuleFile(resources[i]));
- else if( resources[i] instanceof IFlatFolder)
- list.add(new ComponentModuleFolder(resources[i]));
- }
- return list.toArray(new IModuleResource[list.size()]);
- }
-
- public static class ComponentModuleResource {
- protected IFlatResource delegate;
- public ComponentModuleResource(IFlatResource resource) {
- this.delegate = resource;
- }
- public long getModificationStamp() {
- return ((IFlatFile)delegate).getModificationStamp();
- }
-
- public IPath getModuleRelativePath() {
- return delegate.getModuleRelativePath();
- }
- public String getName() {
- return delegate.getName();
- }
- public Object getAdapter(Class adapter) {
- return delegate.getAdapter(adapter);
- }
- public IModuleResource[] members() {
- IFlatResource[] children = ((IFlatFolder)delegate).members();
- return convert(children);
- }
- }
-
- public static class ComponentModuleFile extends ComponentModuleResource implements IModuleFile{
- public ComponentModuleFile(IFlatResource resource) {
- super(resource);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == this)
- return true;
-
- if (!(obj instanceof IModuleFile))
- return false;
-
- IModuleFile mf = (IModuleFile) obj;
- if (!getName().equals(mf.getName()))
- return false;
- if (!getModuleRelativePath().equals(mf.getModuleRelativePath()))
- return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- return getName().hashCode() * 37 + getModuleRelativePath().hashCode();
- }
- }
-
- public static class ComponentModuleFolder extends ComponentModuleResource implements IModuleFolder {
- public ComponentModuleFolder(IFlatResource resource) {
- super(resource);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == this)
- return true;
-
- if (!(obj instanceof IModuleFolder))
- return false;
-
- IModuleFolder mf = (IModuleFolder) obj;
- if (!getName().equals(mf.getName()))
- return false;
- if (!getModuleRelativePath().equals(mf.getModuleRelativePath()))
- return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- return getName().hashCode() * 37 + getModuleRelativePath().hashCode();
- }
-
- }
-
- protected static boolean isProjectOfType(IProject project, String typeID) {
- IFacetedProject facetedProject = null;
- try {
- facetedProject = ProjectFacetsManager.create(project);
- } catch (CoreException e) {
- return false;
- }
-
- if (facetedProject !=null && ProjectFacetsManager.isProjectFacetDefined(typeID)) {
- IProjectFacet projectFacet = ProjectFacetsManager.getProjectFacet(typeID);
- return projectFacet!=null && facetedProject.hasProjectFacet(projectFacet);
- }
- return false;
- }
-}

Back to the top