blob: ba74ba0e052bd6ddafa19749c051c8008b2199dc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 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.wst.common.componentcore.ui.internal.propertypage.verifier;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.wst.server.core.IRuntime;
public class VerifierRegistry {
/**
*
*/
private static VerifierRegistry INSTANCE;
private HashMap assemblyVerifierExtensions = new HashMap();
public VerifierRegistry() {
super();
}
/**
* @param verifier
* @param serverTargets
* @param components
*/
protected void register(IConfigurationElement verifier, List serverTargets, List components) {
HashMap targetVerifiers;
for (Iterator iter = components.iterator(); iter.hasNext();) {
String compID = (String) iter.next();
for (Iterator iterator = serverTargets.iterator(); iterator.hasNext();) {
String runtimeID = (String) iterator.next();
targetVerifiers = getVerifierExtensions(compID);
getTargetVerifiers(targetVerifiers, runtimeID).add(verifier);
}
}
}
private List getVerifiers(String compID, String serverTarget) {
HashMap targetVerifiers = getVerifierExtensions(compID);
return getTargetVerifiers(targetVerifiers, serverTarget);
}
protected static VerifierRegistry instance() {
if (INSTANCE == null) {
INSTANCE = new VerifierRegistry();
readRegistry();
}
return INSTANCE;
}
/**
*
*/
private static void readRegistry() {
VerifierRegistryReader reader = new VerifierRegistryReader();
reader.readRegistry();
}
/**
* @param targetVerifiers
* @param serverTarget
*/
private List getTargetVerifiers(HashMap targetVerifiers, String serverTarget) {
if (targetVerifiers.get(serverTarget) == null)
targetVerifiers.put(serverTarget, new ArrayList());
return (List) targetVerifiers.get(serverTarget);
}
/**
* @param compID
* @return
*/
private HashMap getVerifierExtensions(String compID) {
if (getVerifierExtensions().get(compID) == null)
getVerifierExtensions().put(compID, new HashMap());
return (HashMap) getVerifierExtensions().get(compID);
}
/**
* @return Returns the verifierExtensions.
*/
private HashMap getVerifierExtensions() {
return assemblyVerifierExtensions;
}
/**
* @param facetTypeID
* @param runtime
* @return List of IConfigurationElements representing instances of IDeploymentAssemblyVerifier
*/
public List getVerifierExtensions(String facetTypeID, IRuntime runtime) {
// Identifier used by verifiers that will run for any runtime
String allRuntimes = "org.eclipse.wst.common.modulecore.ui.deploymentAssemblyVerifier.anyruntime"; //$NON-NLS-1$
String runtimeID = null;
if (runtime == null)
runtimeID = "None"; //$NON-NLS-1$
else
runtimeID = runtime.getRuntimeType().getId();
// Get the verifiers specific for the target runtime
List verifiers = getVerifiers(facetTypeID, runtimeID);
if (verifiers == null)
verifiers = Collections.EMPTY_LIST;
// Get the verifiers for any runtime
List genericVerifiers = getVerifiers(facetTypeID, allRuntimes);
if (genericVerifiers == null)
genericVerifiers = Collections.EMPTY_LIST;
// Merge both verifiers into one list and return
List result = new ArrayList(verifiers);
result.addAll(genericVerifiers);
return result;
}
}