blob: e5277ed92e7081434b4b5e8762c37b25b727e76b [file] [log] [blame]
/*
* 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);
}
}