Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2002-2013 the original author or authors.
   * 
   * 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.data.gemfire.function;
 
 
 
 import  com.gemstone.gemfire.cache.execute.Function;
 import  com.gemstone.gemfire.cache.execute.FunctionContext;
 import  com.gemstone.gemfire.cache.execute.ResultSender;

Invokes a POJO's given method as a Gemfire remote function. If the POJO has a constructor that takes a Map, and the function context is Region, the region will be injected. The delegate class name, the method name, and the method arguments are part of a remote function invocation, therefore all arguments must be serializable or an alternate serialization method must be used. The delegate class must be the class path of the remote cache(s)

Author(s):
David Turanski
 
 
 @SuppressWarnings("serial")
 public class PojoFunctionWrapper implements Function {
 
 	private static transient Log logger = LogFactory.getLog(PojoFunctionWrapper.class);
 
 	private volatile boolean HA;
 	private volatile boolean optimizeForWrite;
 	private volatile boolean hasResult;
 	private final Object target;
 	private final Method method;
 	private final String id;
 	private volatile int batchSize;
 
 
 	public PojoFunctionWrapper(Object targetMethod methodString id) {
 
 
 		this. = StringUtils.hasText(id) ? id : method.getName();
 		this. = target;
 		this. = method;
 
 		this. = false;
 
 		this. = !(method.getReturnType().equals(void.class));
 
 		this. = false;
 	}
 
 	//@Override	 
 	public String getId() {
 		return this.;
 	}
 
 	//@Override	 
 	public boolean hasResult() {
 		return this.;
 	}
 
 	//@Override	
 	public boolean isHA() {
 		return this.;
 	}
 
 	public void setHA(boolean HA) {
 		this. = HA;
 	}
 
 	//@Override	
 	public boolean optimizeForWrite() {
 		return this.;
 	}
 
 	public void setOptimizeForWrite(boolean optimizeForWrite) {
 		this. = optimizeForWrite;
 	}
 
 	public void setBatchSize(int batchSize) {
 		this. = batchSize;
 	}
 
	public void setHasResult(boolean hasResult) {
		this. = hasResult;
	}
	//@Override
	public void execute(FunctionContext functionContext) {
		Object[] args = this..resolveFunctionArguments(functionContext);
		Object result = null;
		result = invokeTargetMethod(args);
		if (hasResult()) {
			sendResults(functionContext.getResultSender(), result);
		}
	}
	protected final Object invokeTargetMethod(Object[] args) {
			.debug(String.format("about to invoke method %s on class %s as function %s".getName(), 
					.getClass().getName(), this.));
			for (Object arg : args) {
				.debug("arg:" + arg.getClass().getName() + " " + arg.toString());
			}
		}
		return (Object) ReflectionUtils.invokeMethod(, (Object[]) args);
	}
	private void sendResults(ResultSender<ObjectresultSenderObject result) {
		if (result == null) {
			resultSender.lastResult(null);
			return;
		}
		if (ObjectUtils.isArray(result)) {	
			new BatchingResultSender(resultSender).sendArrayResults(result);
else if (Iterable.class.isAssignableFrom(result.getClass())) {
			new BatchingResultSender(resultSender).sendResults((Iterable<?>) result);
else {
			resultSender.lastResult(result);
		}
	}
New to GrepCode? Check out our FAQ X