blob: db0cc6ee9b2831af21863730a7bf2df5fe248105 [file] [log] [blame]
/*
* Copyright (c) 2011 Google Inc.
*
* 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
*/
package com.google.eclipse.protobuf.resource;
import org.eclipse.emf.ecore.*;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.resource.IGlobalServiceProvider.ResourceServiceProviderImpl;
import org.eclipse.xtext.resource.*;
import org.eclipse.xtext.resource.IResourceServiceProvider.Registry;
import com.google.inject.Inject;
/**
* @author alruiz@google.com (Alex Ruiz)
*/
public class GlobalResourceServiceProvider extends ResourceServiceProviderImpl {
@Inject public GlobalResourceServiceProvider(Registry registry, IResourceServiceProvider provider) {
super(registry, provider);
}
@Override public <T> T findService(EObject e, Class<T> serviceType) {
if (e.eIsProxy()) {
InternalEObject internalEObject = (InternalEObject) e;
return findService(internalEObject.eProxyURI(), serviceType);
}
Resource resource = e.eResource();
return (resource != null) ? findService(resource.getURI(), serviceType) : null;
}
}