/* * Copyright 2012 by the original author(s). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.ide.eclipse.data.metadata.ui; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.springframework.ide.eclipse.beans.core.internal.model.BeansModelUtils; import org.springframework.ide.eclipse.beans.core.metadata.model.BeanMetadataProviderAdapter; import org.springframework.ide.eclipse.beans.core.metadata.model.IBeanMetadata; import org.springframework.ide.eclipse.beans.core.metadata.model.IBeanMetadataProvider; import org.springframework.ide.eclipse.beans.core.model.IBean; import org.springframework.ide.eclipse.beans.core.model.IBeansConfig; import org.springframework.ide.eclipse.core.java.JdtUtils; import org.springframework.ide.eclipse.core.model.java.JavaModelSourceLocation; import org.springframework.ide.eclipse.data.SpringDataUtils; /** * Custom {@link IBeanMetadataProvider} to create {@link RepositoriesBeanMetadata} instances for Spring Data repository * beans. * * @author Oliver Gierke */ public class RepositoriesBeanMetadataProvider extends BeanMetadataProviderAdapter { /* * (non-Javadoc) * @see org.springframework.ide.eclipse.beans.core.metadata.model.BeanMetadataProviderAdapter#provideBeanMetadata(org.springframework.ide.eclipse.beans.core.model.IBean, org.springframework.ide.eclipse.beans.core.model.IBeansConfig, org.eclipse.core.runtime.IProgressMonitor) */ @Override public Set<IBeanMetadata> provideBeanMetadata(final IBean bean, IBeansConfig beansConfig, IProgressMonitor progressMonitor) { Set<IBeanMetadata> beanMetadata = new HashSet<IBeanMetadata>(); if (SpringDataUtils.isRepositoryBean(bean)) { IType type = JdtUtils.getJavaType(bean.getElementResource().getProject(), BeansModelUtils.getBeanClass(bean, null)); try { beanMetadata.add(new RepositoriesBeanMetadata(bean, new JavaModelSourceLocation(type))); } catch (JavaModelException e) { } } return beanMetadata; } }