/* * Copyright 2011 Google Inc. * * 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 com.google.web.bindery.requestfactory.server; import com.google.web.bindery.requestfactory.server.impl.FindService; import com.google.web.bindery.requestfactory.shared.EntityProxyId; import com.google.web.bindery.requestfactory.shared.RequestContext; import com.google.web.bindery.requestfactory.shared.impl.Constants; import com.google.web.bindery.requestfactory.shared.impl.FindRequest; import java.lang.reflect.Method; /** * Allows the use of a very short operation name for the find method. This also * avoids the need to introduce special-case code for FindRequest into * RequestFactoryInterfaceValidator. */ public class FindServiceLayer extends ServiceLayerDecorator { @Override public Method resolveDomainMethod(String operation) { if (Constants.FIND_METHOD_OPERATION.equals(operation)) { Throwable ex; try { return FindService.class.getMethod("find", Object.class); } catch (SecurityException e) { ex = e; } catch (NoSuchMethodException e) { ex = e; } die(ex, "Could not retrieve %s.find() method", FindService.class.getCanonicalName()); } return super.resolveDomainMethod(operation); } @Override public Class<? extends RequestContext> resolveRequestContext(String operation) { if (Constants.FIND_METHOD_OPERATION.equals(operation)) { return FindRequest.class; } return super.resolveRequestContext(operation); } @Override public Method resolveRequestContextMethod(String operation) { if (Constants.FIND_METHOD_OPERATION.equals(operation)) { Throwable ex; try { return FindRequest.class.getMethod("find", EntityProxyId.class); } catch (SecurityException e) { ex = e; } catch (NoSuchMethodException e) { ex = e; } die(ex, "Could not retrieve %s.find() method", FindRequest.class.getCanonicalName()); } return super.resolveRequestContextMethod(operation); } }