/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.ignite.internal.util.gridify;
import java.util.Iterator;
import org.apache.ignite.compute.gridify.aop.GridifyArgumentAdapter;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
* Convenience adapter for {@link org.apache.ignite.compute.gridify.GridifyArgument} interface.
* This adapter used in grid task for {@link org.apache.ignite.compute.gridify.GridifySetToSet} and
* {@link org.apache.ignite.compute.gridify.GridifySetToValue} annotations.
* <p>
* See {@link org.apache.ignite.compute.gridify.Gridify} documentation for more information about execution of
* {@code gridified} methods.
* @see org.apache.ignite.compute.gridify.GridifySetToValue
* @see org.apache.ignite.compute.gridify.GridifySetToSet
*/
public class GridifyRangeArgument extends GridifyArgumentAdapter {
/** */
private static final long serialVersionUID = 0L;
/** Identify where to find data in method signature. */
private int paramIdx = -1;
/** Method return type. */
private Class<?> mtdReturnType;
/**
* Gets index identifies where to find data in method signature.
*
* @return Index.
*/
public int getParamIndex() {
return paramIdx;
}
/**
* Sets index identifies where to find data in method signature.
*
* @param paramIdx Index.
*/
public void setParamIndex(int paramIdx) {
this.paramIdx = paramIdx;
}
/**
* Gets method return type in the same order they appear in method
* signature.
*
* @return Method return type.
*/
public Class<?> getMethodReturnType() {
return mtdReturnType;
}
/**
* Sets method return type.
*
* @param mtdReturnType Method return type.
*/
public void setMethodReturnType(Class<?> mtdReturnType) {
this.mtdReturnType = mtdReturnType;
}
/**
* Returns elements {@link Iterator} for current input argument.
* @return Iterator.
*/
public Iterator<?> getInputIterator() {
return GridifyUtils.getIterator(getMethodParameters()[paramIdx]);
}
/**
* Returns elements size for current input argument or
* {@link GridifyUtils#UNKNOWN_SIZE} for unknown input size.
*
* @return Elements size for current input argument or {@link GridifyUtils#UNKNOWN_SIZE}.
*/
public int getInputSize() {
return GridifyUtils.getLength(getMethodParameters()[paramIdx]);
}
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(GridifyRangeArgument.class, this);
}
}