blob: 1d86178d643a47b80bc57af92e403239f5348403 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Obeo.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.compare.match;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.LoadingCache;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.utils.EqualityHelper;
import org.eclipse.emf.compare.utils.IEqualityHelper;
import org.eclipse.emf.ecore.EObject;
/**
* Default implementation of {@link IEqualityHelperFactory}.
*
* @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
*/
public class DefaultEqualityHelperFactory implements IEqualityHelperFactory {
/** CacheBuilder that will be used to instantiate a cache. */
private final CacheBuilder<Object, Object> cacheBuilder;
/**
* Default constructor.
*/
public DefaultEqualityHelperFactory() {
this(CacheBuilder.newBuilder().maximumSize(DefaultMatchEngine.DEFAULT_EOBJECT_URI_CACHE_MAX_SIZE));
}
/**
* Creates a factory with the given CacheBuilder.
*
* @param cacheBuilder
* The cache builder to use to instantiate an {@link EqualityHelper}.
*/
public DefaultEqualityHelperFactory(CacheBuilder<Object, Object> cacheBuilder) {
this.cacheBuilder = cacheBuilder;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.compare.match.IEqualityHelperFactory#createEqualityHelper()
*/
public IEqualityHelper createEqualityHelper() {
LoadingCache<EObject, URI> cache = EqualityHelper.createDefaultCache(getCacheBuilder());
IEqualityHelper equalityHelper = new EqualityHelper(cache);
return equalityHelper;
}
/**
* Returns the cache builder that should be used by this factory to create its equality helpers.
*
* @return The cache builder that should be used by this factory to create its equality helpers.
*/
protected CacheBuilder<Object, Object> getCacheBuilder() {
return cacheBuilder;
}
}