package org.restler.spring.data.methods; import org.restler.client.Call; import org.restler.client.RestlerException; import org.restler.spring.data.calls.SaveSeveralCallEnhancer; import org.restler.spring.data.util.ArrayListType; import org.springframework.data.repository.CrudRepository; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.net.URI; public class SaveSeveralRepositoryMethod extends DefaultRepositoryMethod { private static final Method saveMethod; static { try { saveMethod = CrudRepository.class.getMethod("save", Iterable.class); } catch (NoSuchMethodException e) { throw new RestlerException("Can't find CrudRepository.findAll method.", e); } } @Override protected Call getCall(URI uri, Class<?> declaringClass, Object[] args) { Type itemType = getRepositoryType(declaringClass).getActualTypeArguments()[0]; return new SaveSeveralCallEnhancer.SaveSeveralCall((Iterable<Object>)args[0], new ArrayListType(itemType)); } @Override protected String getPathPart(Object[] args) { return ""; } @Override public boolean isRepositoryMethod(Method method) { return saveMethod.equals(method); } }