Beispiel #1
0
 /**
  * Returns a string that encodes the object. It is an error to try to encode
  * an object that is not assignable to the service method's return type.
  *
  * <p>
  * If the serializationPolicy parameter is not <code>null</code>, it is
  * used to determine what types can be encoded as part of this response. If
  * this parameter is <code>null</code>, then only subtypes of
  * {@link com.google.gwt.user.client.rpc.IsSerializable IsSerializable} or
  * types which have custom field serializers may be encoded.
  * </p>
  *
  * @param ReflectionMethod $serviceMethod the method whose result we are encoding
  * @param Object $object the instance that we wish to encode
  * @param SerializationPolicy $serializationPolicy determines the serialization policy to be used
  * @return String a string that encodes the object, if the object is compatible with
  *         the service method's declared return type
  *
  * @throws IllegalArgumentException if the result is not assignable to the
  *           service method's return type
  * @throws NullPointerException if the serviceMethod or the
  *           serializationPolicy are <code>null</code>
  * @throws SerializationException if the result cannot be serialized
  */
 public static function encodeResponseForSuccess(MappedMethod $serviceMethod, $object, SerializationPolicy $serializationPolicy, MappedClassLoader $mappedClassLoader)
 {
     if ($serviceMethod === null) {
         throw new NullPointerException("serviceMethod cannot be null");
     }
     if ($serializationPolicy === null) {
         throw new NullPointerException("serializationPolicy");
     }
     /*MappedClass*/
     $methodReturnType = $serviceMethod->getReturnType();
     if ($methodReturnType != '' && $object !== null) {
         $actualReturnType;
         if ($methodReturnType->isPrimitive()) {
             //$actualReturnType = RPC::getPrimitiveClassFromWrapper(object.getClass());
         } else {
             //actualReturnType = object.getClass();
         }
         //			if (actualReturnType == null
         //			|| !methodReturnType.isAssignableFrom(actualReturnType)) {
         //				throw new IllegalArgumentException("Type '"
         //				+ printTypeName(object.getClass())
         //				+ "' does not match the return type in the method's signature: '"
         //				+ getSourceRepresentation(serviceMethod) + "'");
         //			}
     }
     // TODO: fix this mess
     if ($methodReturnType !== null && ($methodReturnType->isPrimitive() || $methodReturnType->isArray() || JavaSignatureUtil::isVoid($methodReturnType->getSignature()))) {
     } else {
         if (is_object($object)) {
             //echo "<br>\n : ".print_r($object,true);
             //echo "<br>\n : ".print_r($methodReturnType,true);
             //echo "<br>\n <hr>";
             $_methodReturnType = $mappedClassLoader->findMappedClassByObject($object);
             if ($_methodReturnType != null) {
                 $methodReturnType = $_methodReturnType;
             }
         }
     }
     return RPC::encodeResponse($methodReturnType, $object, false, $serializationPolicy);
 }