Java源码示例:org.eclipse.xtext.xbase.lib.Procedures.Procedure3

示例1
@Test
public void testFunctionType7() {
  FunctionTypeReference _newFunctionTypeReference = this.getOwner().newFunctionTypeReference(this.type(Procedure3.class));
  final Procedure1<FunctionTypeReference> _function = (FunctionTypeReference it) -> {
    it.addParameterType(this.typeRef(String.class));
    it.addTypeArgument(this.typeRef(String.class));
    ParameterizedTypeReference _typeRef = this.typeRef(List.class);
    final Procedure1<ParameterizedTypeReference> _function_1 = (ParameterizedTypeReference it_1) -> {
      WildcardTypeReference _newWildcardTypeReference = it_1.getOwner().newWildcardTypeReference();
      final Procedure1<WildcardTypeReference> _function_2 = (WildcardTypeReference it_2) -> {
        it_2.setLowerBound(this.typeRef(CharSequence.class));
      };
      WildcardTypeReference _doubleArrow = ObjectExtensions.<WildcardTypeReference>operator_doubleArrow(_newWildcardTypeReference, _function_2);
      it_1.addTypeArgument(_doubleArrow);
    };
    final ParameterizedTypeReference listOfCharSequence = ObjectExtensions.<ParameterizedTypeReference>operator_doubleArrow(_typeRef, _function_1);
    it.addParameterType(listOfCharSequence);
    it.addTypeArgument(listOfCharSequence);
    final ArrayTypeReference arrayOfObject = it.getOwner().newArrayTypeReference(this.typeRef(Object.class));
    it.addParameterType(arrayOfObject);
    it.addTypeArgument(arrayOfObject);
  };
  this.assertInJava(this.assertInXtend(ObjectExtensions.<FunctionTypeReference>operator_doubleArrow(_newFunctionTypeReference, _function), "(java.lang.String, java.util.List<? super java.lang.CharSequence>, java.lang.Object[])=>void"), "org.eclipse.xtext.xbase.lib.Procedures$Procedure3<java.lang.String, java.util.List<? super java.lang.CharSequence>, java.lang.Object[]>");
}
 
示例2
/**
 * Curries a procedure that takes three arguments.
 * 
 * @param procedure
 *            the original procedure. May not be <code>null</code>.
 * @param argument
 *            the fixed first argument of {@code procedure}.
 * @return a procedure that takes two arguments. Never <code>null</code>.
 */
@Pure
public static <P1, P2, P3> Procedure2<P2, P3> curry(final Procedure3<? super P1, ? super P2, ? super P3> procedure, final P1 argument) {
	if (procedure == null)
		throw new NullPointerException("procedure");
	return new Procedure2<P2, P3>() {
		@Override
		public void apply(P2 p2, P3 p3) {
			procedure.apply(argument, p2, p3);
		}
	};
}
 
示例3
/**
 * Curries a procedure that takes four arguments.
 * 
 * @param procedure
 *            the original procedure. May not be <code>null</code>.
 * @param argument
 *            the fixed first argument of {@code procedure}.
 * @return a procedure that takes three arguments. Never <code>null</code>.
 */
@Pure
public static <P1, P2, P3, P4> Procedure3<P2, P3, P4> curry(final Procedure4<? super P1, ? super P2, ? super P3, ? super P4> procedure,
		final P1 argument) {
	if (procedure == null)
		throw new NullPointerException("procedure");
	return new Procedure3<P2, P3, P4>() {
		@Override
		public void apply(P2 p2, P3 p3, P4 p4) {
			procedure.apply(argument, p2, p3, p4);
		}
	};
}
 
示例4
/**
 * Applies the given {@code procedure} for each {@link java.util.Map.Entry key value pair} of the given {@code map}. 
 * The procedure takes the key, the value and a loop counter. If the counter would overflow, {@link Integer#MAX_VALUE}
 * is returned for all subsequent pairs. The first pair is at index zero.
 * 
 * @param map
 *            the map. May not be <code>null</code>.
 * @param procedure
 *            the procedure. May not be <code>null</code>.
 */
public static <K, V> void forEach(Map<K, V> map, Procedure3<? super K, ? super V, ? super Integer> procedure) {
	if (procedure == null)
		throw new NullPointerException("procedure");
	int i = 0;
	for (Map.Entry<K, V> entry : map.entrySet()) {
		procedure.apply(entry.getKey(), entry.getValue(), i);
		if (i != Integer.MAX_VALUE)
			i++;
	}
}
 
示例5
/** Do a type mapping check.
 *
 * @param source the source of the type.
 * @param type the type to check.
 * @param errorHandler the error handler.
 * @return {@code true} if a type mapping is defined.
 */
protected boolean doTypeMappingCheck(EObject source, JvmType type, Procedure3<? super EObject, ? super JvmType, ? super String> errorHandler) {
	if (source != null && type != null) {
		final ExtraLanguageTypeConverter converter = getTypeConverter();
		final String qn = type.getQualifiedName();
		if (converter != null && !converter.hasConversion(qn)) {
			if (errorHandler != null) {
				errorHandler.apply(source, type, qn);
			}
			return false;
		}
	}
	return true;
}
 
示例6
/** Check if the feature call could be translated to the extra-language.
 *
 * @param featureCall the feature call.
 * @param typeErrorHandler the error handler for the type conversion.
 * @param featureErrorHandler the error handler for the feature call conversion.
 */
protected void doCheckMemberFeatureCallMapping(XAbstractFeatureCall featureCall,
		Procedure3<? super EObject, ? super JvmType, ? super String> typeErrorHandler,
		Function2<? super EObject, ? super JvmIdentifiableElement, ? extends Boolean> featureErrorHandler) {
	final XAbstractFeatureCall rootFeatureCall = Utils.getRootFeatureCall(featureCall);
	final Map<Object, Object> context = getContext().getContext();
	if (isCheckedFeatureCall(context, rootFeatureCall)) {
		// One of the containing expressions was already checked.
		return;
	}
	// Mark the root container as validated.
	setCheckedFeatureCall(context, rootFeatureCall);
	// Validate the current call.
	internalCheckMemberFeaturCallMapping(rootFeatureCall, typeErrorHandler, featureErrorHandler);
}
 
示例7
private boolean internalCheckMemberFeaturCallMapping(XAbstractFeatureCall featureCall,
		Procedure3<? super EObject, ? super JvmType, ? super String> typeErrorHandler,
		Function2<? super EObject, ? super JvmIdentifiableElement, ? extends Boolean> featureErrorHandler) {
	final ExtraLanguageFeatureNameConverter converter = getFeatureNameConverter();
	if (converter != null) {
		final ConversionType conversionType = converter.getConversionTypeFor(featureCall);
		switch (conversionType) {
		case EXPLICIT:
			return true;
		case IMPLICIT:
			final JvmIdentifiableElement element = featureCall.getFeature();
			if (element instanceof JvmType) {
				return doTypeMappingCheck(featureCall, (JvmType) element, typeErrorHandler);
			}
			if (featureCall instanceof XMemberFeatureCall) {
				final XMemberFeatureCall memberFeatureCall = (XMemberFeatureCall) featureCall;
				final XExpression receiver = memberFeatureCall.getMemberCallTarget();
				if (receiver instanceof XMemberFeatureCall || receiver instanceof XFeatureCall) {
					internalCheckMemberFeaturCallMapping(
							(XAbstractFeatureCall) receiver,
							typeErrorHandler,
							featureErrorHandler);
				}
			}
			break;
		case FORBIDDEN_CONVERSION:
		default:
			if (featureErrorHandler != null) {
				return !featureErrorHandler.apply(featureCall, featureCall.getFeature());
			}
			return false;
		}
	}
	return true;
}
 
示例8
/** Initialize the conversions mapping.
 *
 * @param result the function to invoke for initializing the element.
 *     The first formal parameter is the simple name of the source.
 *     The second formal parameter is the full name of source of the conversion.
 *     The third formal parameter is the target of the conversion.
 */
void initializeConversions(Procedure3<? super String, ? super String, ? super String> result);