/* * Copyright(C) OASIS(R) 2005,2010. All Rights Reserved. * OASIS trademark, IPR and other policies apply. */ package org.oasisopen.sca.annotation; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Retention; import java.lang.annotation.Target; /** * The @AllowsPassByReference annotation is used on implementations * of remotable interfaces to indicate that interactions with the * service from a client within the same address space are allowed * to use pass by reference data exchange semantics. * * The implementation promises that its by-value semantics will be * maintained even if the parameters and return values are actually * passed by-reference. This means that the service will not modify * any operation input parameter or return value, even after returning * from the operation. * * Either a whole class implementing a remotable service or an individual * remotable service method implementation can be annotated using the * {@literal @AllowsPassByReference} annotation. * * {@literal @AllowsPassByReference} has no attributes. */ @Target({TYPE, METHOD, FIELD, PARAMETER}) @Retention(RUNTIME) public @interface AllowsPassByReference { boolean value() default true; }