/******************************************************************************* * Copyright (c) 2010 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jst.j2ee.internal.ui; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jst.j2ee.internal.ui.J2EEModuleDependenciesPropertyPage.ClasspathEntryProxy; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.componentcore.resources.IVirtualReference; import org.eclipse.wst.common.componentcore.ui.Messages; import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin; import org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier.DeploymentAssemblyVerifierHelper; import org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier.IDeploymentAssemblyVerifier; import org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier.VerifierRegistryReader; import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy; import org.eclipse.wst.server.core.IRuntime; public class J2EEModuleDeploymentAssemblyVerifierHelper { /** * This method will use the facet framework to find all registered verifiers based on installed facets and runtimes. * All the verifiers will have an opportunity to verify and return status on the proposed component mappings * @param component * @param runtime * @param resourceMappingsChanged * @param resourceMappings * @param currentReferences * @param currentClasspathEntries * @return IStatus */ public static IStatus verify(IVirtualComponent component,IRuntime runtime, ArrayList<IVirtualReference> currentReferences, ArrayList<ComponentResourceProxy> resourceMappings, boolean resourceMappingsChanged, List<ClasspathEntryProxy> currentClasspathEntries) { IProject project = component.getProject(); List verifiers = DeploymentAssemblyVerifierHelper.collectAllVerifiers(project,runtime); if (verifiers.isEmpty()) return Status.OK_STATUS; MultiStatus masterStatus = new MultiStatus(ModuleCoreUIPlugin.PLUGIN_ID, IStatus.OK, Messages.DeploymentAssemblyVerifierHelper_0,null); for (int i = 0; i < verifiers.size(); i++) { if (!(verifiers.get(i) instanceof IConfigurationElement)) continue; IDeploymentAssemblyVerifier verifier = null; try { verifier = (IDeploymentAssemblyVerifier) ((IConfigurationElement) verifiers.get(i)).createExecutableExtension(VerifierRegistryReader.VERIFIER_CLASS); J2EEModuleDeploymentAssemblyVerifierData data = new J2EEModuleDeploymentAssemblyVerifierData(component, runtime,currentReferences,resourceMappings,resourceMappingsChanged,currentClasspathEntries ); IStatus verifyStatus = verifier.verify(data); if(verifyStatus != null && verifyStatus.isMultiStatus()) { masterStatus.addAll(verifyStatus); } else { masterStatus.add(verifyStatus); } } catch (Exception e) { ModuleCoreUIPlugin.log(e); continue; } } return masterStatus; } }