All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.backendless.core.responder.policy.SetAdaptingPolicy Maven / Gradle / Ivy

The newest version!
package com.backendless.core.responder.policy;

import weborb.client.Fault;
import weborb.client.IResponder;
import weborb.exceptions.AdaptingException;
import weborb.reader.ArrayType;
import weborb.reader.NamedObject;
import weborb.types.IAdaptingType;

import java.util.HashSet;
import java.util.Set;

public class SetAdaptingPolicy implements IAdaptingPolicy
{
  @Override
  public Object adapt( Class clazz, IAdaptingType entity, IResponder nextResponder )
  {
    Set result = null;

    try
    {
      Set set = new HashSet<>();
      if( entity == null )
        return set;

      ArrayType data = (ArrayType) entity;

      Object[] dataArray = (Object[]) data.getArray();

      if( clazz != null && weborb.types.Types.getMappedClientClass( clazz.getName() ) == null )
      {
        for ( Object aDataArray : dataArray )
          if( aDataArray instanceof NamedObject )
            ((NamedObject) aDataArray).setDefaultType( clazz );
      }

      result = (Set) entity.adapt( set.getClass() );

      if( nextResponder != null )
        nextResponder.responseHandler( result );
    }
    catch( AdaptingException e )
    {
      Fault fault = new Fault( "Unable to adapt response to Set<" + clazz.getName() + ">", e.getMessage() );

      if( nextResponder != null )
        nextResponder.errorHandler( fault );
    }

    return result;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy