What are the use of ExtensionAttribute JoinProcessorInterface and CollectionProcessorInterface at magento...












6















I built Magento 2 Module which has a model and Service contracts/API.



During this implementation, I have followed vinai Kopp article and also magento2 module Magento_Quote.



On this MagentoQuoteModelQuoteRepository, i have found two classes




MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;



MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;




And found that during the implementation of getList() this two classes used



   this->collectionProcessor->process($searchCriteria, $this->quoteCollection);
$this->extensionAttributesJoinProcessor->process($this->quoteCollection)


MY repository class



<?php
namespace DevamitberaProductSuggestionModel;

use DevamitberaProductSuggestionApiDataProductSuggestionInterface;
use MagentoFrameworkApiSearchCriteriaInterface;
use MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;
use MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;
use DevamitberaProductSuggestionApiProductSuggestionRepositoryInterface;
use DevamitberaProductSuggestionModelProductSuggestionFactory;
use DevamitberaProductSuggestionModelResourceModelProductSuggestion as ProductSuggestionResource;
use DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory as ProductSuggestionCollectionFactory ;
use MagentoFrameworkExceptionNotFoundException;
use MagentoFrameworkExceptionCouldNotSaveException;
use DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory;


/**
* Repository class
*/

class ProductSuggestionRepository implements ProductSuggestionRepositoryInterface
{

/**
* @var MagentoFrameworkApiExtensionAttributeJoinProcessorInterface
*/
protected $extensionAttributesJoinProcessor;

/**
* @var MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface
*/
protected $collectionProcessor;

/**
* @var DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory
*/
protected $productSuggestionSearchResultFactory;

/**
* @var DevamitberaProductSuggestionModelProductSuggestionFactory
*/
protected $productSuggestionFactory;

/**
* @var DevamitberaProductSuggestionModelResourceModelProductSuggestion
*/
protected $productSuggestionResource;

/**
* @var DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory
*/
protected $collectionFactory;

public function __construct(
ProductSuggestionFactory $productSuggestionFactory,
ProductSuggestionResource $productSuggestionResource,
ProductSuggestionCollectionFactory $CollectionFactory,
ProductSuggestionSearchResultInterfaceFactory $productSuggestionSearchResultFactory,
CollectionProcessorInterface $collectionProcessor,
JoinProcessorInterface $extensionAttributesJoinProcessor
)
{

$this->collectionFactory = $CollectionFactory;
$this->productSuggestionResource = $productSuggestionResource;
$this->productSuggestionFactory = $productSuggestionFactory;

$this->productSuggestionSearchResultFactory = $productSuggestionSearchResultFactory;
$this->collectionProcessor = $collectionProcessor ?: MagentoFrameworkAppObjectManager::getInstance()
->get(MagentoFrameworkApiSearchCriteriaCollectionProcessor::class);;
$this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
}
/**
* {@inheritdoc}
*/
public function delete(ProductSuggestionInterface $productSuggestion){
$this->productSuggestionResource->delete($productSuggestion);
}
/**
* {@inheritdoc}
*/
public function getById($id){

$productSuggestion = $this->productSuggestionFactory->create();
$this->productSuggestionResource->load($productSuggestion, $id);
if(!$productSuggestion->getId()){
throw new NotFoundException(__('unable to find the record'));
}
return $productSuggestion;
}
/**
* {@inheritdoc}
*/
public function getList(SearchCriteriaInterface $searchCriteria){

$collection = $this->collectionFactory->create();

$searchData = $this->productSuggestionSearchResultFactory->create();
$searchData->setSearchCriteria($searchCriteria);

$this->collectionProcessor->process($searchCriteria, $collection);
// $this->extensionAttributesJoinProcessor->process($collection ,null)
$this->extensionAttributesJoinProcessor->process($collection);

$searchData->setItems($this->quoteCollection->getItems());
$searchData->setTotalCount($this->quoteCollection->getSize());
return $searchData;
}
/**
* {@inheritdoc}
*/
public function save(ProductSuggestionInterface $productSuggestion){
try{
$this->productSuggestionResource->save($productSuggestion);
} catch (Exception $exception) {
throw new CouldNotSaveException(__($exception->getMessage()));
}

return $productSuggestion;
}

}


Now, i want to know,




  • why do this two classes use?

  • Do I need this classes when I will implement Service contracts/API ?










share|improve this question





























    6















    I built Magento 2 Module which has a model and Service contracts/API.



    During this implementation, I have followed vinai Kopp article and also magento2 module Magento_Quote.



    On this MagentoQuoteModelQuoteRepository, i have found two classes




    MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;



    MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;




    And found that during the implementation of getList() this two classes used



       this->collectionProcessor->process($searchCriteria, $this->quoteCollection);
    $this->extensionAttributesJoinProcessor->process($this->quoteCollection)


    MY repository class



    <?php
    namespace DevamitberaProductSuggestionModel;

    use DevamitberaProductSuggestionApiDataProductSuggestionInterface;
    use MagentoFrameworkApiSearchCriteriaInterface;
    use MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;
    use MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;
    use DevamitberaProductSuggestionApiProductSuggestionRepositoryInterface;
    use DevamitberaProductSuggestionModelProductSuggestionFactory;
    use DevamitberaProductSuggestionModelResourceModelProductSuggestion as ProductSuggestionResource;
    use DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory as ProductSuggestionCollectionFactory ;
    use MagentoFrameworkExceptionNotFoundException;
    use MagentoFrameworkExceptionCouldNotSaveException;
    use DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory;


    /**
    * Repository class
    */

    class ProductSuggestionRepository implements ProductSuggestionRepositoryInterface
    {

    /**
    * @var MagentoFrameworkApiExtensionAttributeJoinProcessorInterface
    */
    protected $extensionAttributesJoinProcessor;

    /**
    * @var MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface
    */
    protected $collectionProcessor;

    /**
    * @var DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory
    */
    protected $productSuggestionSearchResultFactory;

    /**
    * @var DevamitberaProductSuggestionModelProductSuggestionFactory
    */
    protected $productSuggestionFactory;

    /**
    * @var DevamitberaProductSuggestionModelResourceModelProductSuggestion
    */
    protected $productSuggestionResource;

    /**
    * @var DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory
    */
    protected $collectionFactory;

    public function __construct(
    ProductSuggestionFactory $productSuggestionFactory,
    ProductSuggestionResource $productSuggestionResource,
    ProductSuggestionCollectionFactory $CollectionFactory,
    ProductSuggestionSearchResultInterfaceFactory $productSuggestionSearchResultFactory,
    CollectionProcessorInterface $collectionProcessor,
    JoinProcessorInterface $extensionAttributesJoinProcessor
    )
    {

    $this->collectionFactory = $CollectionFactory;
    $this->productSuggestionResource = $productSuggestionResource;
    $this->productSuggestionFactory = $productSuggestionFactory;

    $this->productSuggestionSearchResultFactory = $productSuggestionSearchResultFactory;
    $this->collectionProcessor = $collectionProcessor ?: MagentoFrameworkAppObjectManager::getInstance()
    ->get(MagentoFrameworkApiSearchCriteriaCollectionProcessor::class);;
    $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
    }
    /**
    * {@inheritdoc}
    */
    public function delete(ProductSuggestionInterface $productSuggestion){
    $this->productSuggestionResource->delete($productSuggestion);
    }
    /**
    * {@inheritdoc}
    */
    public function getById($id){

    $productSuggestion = $this->productSuggestionFactory->create();
    $this->productSuggestionResource->load($productSuggestion, $id);
    if(!$productSuggestion->getId()){
    throw new NotFoundException(__('unable to find the record'));
    }
    return $productSuggestion;
    }
    /**
    * {@inheritdoc}
    */
    public function getList(SearchCriteriaInterface $searchCriteria){

    $collection = $this->collectionFactory->create();

    $searchData = $this->productSuggestionSearchResultFactory->create();
    $searchData->setSearchCriteria($searchCriteria);

    $this->collectionProcessor->process($searchCriteria, $collection);
    // $this->extensionAttributesJoinProcessor->process($collection ,null)
    $this->extensionAttributesJoinProcessor->process($collection);

    $searchData->setItems($this->quoteCollection->getItems());
    $searchData->setTotalCount($this->quoteCollection->getSize());
    return $searchData;
    }
    /**
    * {@inheritdoc}
    */
    public function save(ProductSuggestionInterface $productSuggestion){
    try{
    $this->productSuggestionResource->save($productSuggestion);
    } catch (Exception $exception) {
    throw new CouldNotSaveException(__($exception->getMessage()));
    }

    return $productSuggestion;
    }

    }


    Now, i want to know,




    • why do this two classes use?

    • Do I need this classes when I will implement Service contracts/API ?










    share|improve this question



























      6












      6








      6








      I built Magento 2 Module which has a model and Service contracts/API.



      During this implementation, I have followed vinai Kopp article and also magento2 module Magento_Quote.



      On this MagentoQuoteModelQuoteRepository, i have found two classes




      MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;



      MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;




      And found that during the implementation of getList() this two classes used



         this->collectionProcessor->process($searchCriteria, $this->quoteCollection);
      $this->extensionAttributesJoinProcessor->process($this->quoteCollection)


      MY repository class



      <?php
      namespace DevamitberaProductSuggestionModel;

      use DevamitberaProductSuggestionApiDataProductSuggestionInterface;
      use MagentoFrameworkApiSearchCriteriaInterface;
      use MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;
      use MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;
      use DevamitberaProductSuggestionApiProductSuggestionRepositoryInterface;
      use DevamitberaProductSuggestionModelProductSuggestionFactory;
      use DevamitberaProductSuggestionModelResourceModelProductSuggestion as ProductSuggestionResource;
      use DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory as ProductSuggestionCollectionFactory ;
      use MagentoFrameworkExceptionNotFoundException;
      use MagentoFrameworkExceptionCouldNotSaveException;
      use DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory;


      /**
      * Repository class
      */

      class ProductSuggestionRepository implements ProductSuggestionRepositoryInterface
      {

      /**
      * @var MagentoFrameworkApiExtensionAttributeJoinProcessorInterface
      */
      protected $extensionAttributesJoinProcessor;

      /**
      * @var MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface
      */
      protected $collectionProcessor;

      /**
      * @var DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory
      */
      protected $productSuggestionSearchResultFactory;

      /**
      * @var DevamitberaProductSuggestionModelProductSuggestionFactory
      */
      protected $productSuggestionFactory;

      /**
      * @var DevamitberaProductSuggestionModelResourceModelProductSuggestion
      */
      protected $productSuggestionResource;

      /**
      * @var DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory
      */
      protected $collectionFactory;

      public function __construct(
      ProductSuggestionFactory $productSuggestionFactory,
      ProductSuggestionResource $productSuggestionResource,
      ProductSuggestionCollectionFactory $CollectionFactory,
      ProductSuggestionSearchResultInterfaceFactory $productSuggestionSearchResultFactory,
      CollectionProcessorInterface $collectionProcessor,
      JoinProcessorInterface $extensionAttributesJoinProcessor
      )
      {

      $this->collectionFactory = $CollectionFactory;
      $this->productSuggestionResource = $productSuggestionResource;
      $this->productSuggestionFactory = $productSuggestionFactory;

      $this->productSuggestionSearchResultFactory = $productSuggestionSearchResultFactory;
      $this->collectionProcessor = $collectionProcessor ?: MagentoFrameworkAppObjectManager::getInstance()
      ->get(MagentoFrameworkApiSearchCriteriaCollectionProcessor::class);;
      $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
      }
      /**
      * {@inheritdoc}
      */
      public function delete(ProductSuggestionInterface $productSuggestion){
      $this->productSuggestionResource->delete($productSuggestion);
      }
      /**
      * {@inheritdoc}
      */
      public function getById($id){

      $productSuggestion = $this->productSuggestionFactory->create();
      $this->productSuggestionResource->load($productSuggestion, $id);
      if(!$productSuggestion->getId()){
      throw new NotFoundException(__('unable to find the record'));
      }
      return $productSuggestion;
      }
      /**
      * {@inheritdoc}
      */
      public function getList(SearchCriteriaInterface $searchCriteria){

      $collection = $this->collectionFactory->create();

      $searchData = $this->productSuggestionSearchResultFactory->create();
      $searchData->setSearchCriteria($searchCriteria);

      $this->collectionProcessor->process($searchCriteria, $collection);
      // $this->extensionAttributesJoinProcessor->process($collection ,null)
      $this->extensionAttributesJoinProcessor->process($collection);

      $searchData->setItems($this->quoteCollection->getItems());
      $searchData->setTotalCount($this->quoteCollection->getSize());
      return $searchData;
      }
      /**
      * {@inheritdoc}
      */
      public function save(ProductSuggestionInterface $productSuggestion){
      try{
      $this->productSuggestionResource->save($productSuggestion);
      } catch (Exception $exception) {
      throw new CouldNotSaveException(__($exception->getMessage()));
      }

      return $productSuggestion;
      }

      }


      Now, i want to know,




      • why do this two classes use?

      • Do I need this classes when I will implement Service contracts/API ?










      share|improve this question
















      I built Magento 2 Module which has a model and Service contracts/API.



      During this implementation, I have followed vinai Kopp article and also magento2 module Magento_Quote.



      On this MagentoQuoteModelQuoteRepository, i have found two classes




      MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;



      MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;




      And found that during the implementation of getList() this two classes used



         this->collectionProcessor->process($searchCriteria, $this->quoteCollection);
      $this->extensionAttributesJoinProcessor->process($this->quoteCollection)


      MY repository class



      <?php
      namespace DevamitberaProductSuggestionModel;

      use DevamitberaProductSuggestionApiDataProductSuggestionInterface;
      use MagentoFrameworkApiSearchCriteriaInterface;
      use MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface;
      use MagentoFrameworkApiExtensionAttributeJoinProcessorInterface;
      use DevamitberaProductSuggestionApiProductSuggestionRepositoryInterface;
      use DevamitberaProductSuggestionModelProductSuggestionFactory;
      use DevamitberaProductSuggestionModelResourceModelProductSuggestion as ProductSuggestionResource;
      use DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory as ProductSuggestionCollectionFactory ;
      use MagentoFrameworkExceptionNotFoundException;
      use MagentoFrameworkExceptionCouldNotSaveException;
      use DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory;


      /**
      * Repository class
      */

      class ProductSuggestionRepository implements ProductSuggestionRepositoryInterface
      {

      /**
      * @var MagentoFrameworkApiExtensionAttributeJoinProcessorInterface
      */
      protected $extensionAttributesJoinProcessor;

      /**
      * @var MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface
      */
      protected $collectionProcessor;

      /**
      * @var DevamitberaProductSuggestionApiDataProductSuggestionSearchResultInterfaceFactory
      */
      protected $productSuggestionSearchResultFactory;

      /**
      * @var DevamitberaProductSuggestionModelProductSuggestionFactory
      */
      protected $productSuggestionFactory;

      /**
      * @var DevamitberaProductSuggestionModelResourceModelProductSuggestion
      */
      protected $productSuggestionResource;

      /**
      * @var DevamitberaProductSuggestionModelResourceModelProductSuggestionCollectionFactory
      */
      protected $collectionFactory;

      public function __construct(
      ProductSuggestionFactory $productSuggestionFactory,
      ProductSuggestionResource $productSuggestionResource,
      ProductSuggestionCollectionFactory $CollectionFactory,
      ProductSuggestionSearchResultInterfaceFactory $productSuggestionSearchResultFactory,
      CollectionProcessorInterface $collectionProcessor,
      JoinProcessorInterface $extensionAttributesJoinProcessor
      )
      {

      $this->collectionFactory = $CollectionFactory;
      $this->productSuggestionResource = $productSuggestionResource;
      $this->productSuggestionFactory = $productSuggestionFactory;

      $this->productSuggestionSearchResultFactory = $productSuggestionSearchResultFactory;
      $this->collectionProcessor = $collectionProcessor ?: MagentoFrameworkAppObjectManager::getInstance()
      ->get(MagentoFrameworkApiSearchCriteriaCollectionProcessor::class);;
      $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
      }
      /**
      * {@inheritdoc}
      */
      public function delete(ProductSuggestionInterface $productSuggestion){
      $this->productSuggestionResource->delete($productSuggestion);
      }
      /**
      * {@inheritdoc}
      */
      public function getById($id){

      $productSuggestion = $this->productSuggestionFactory->create();
      $this->productSuggestionResource->load($productSuggestion, $id);
      if(!$productSuggestion->getId()){
      throw new NotFoundException(__('unable to find the record'));
      }
      return $productSuggestion;
      }
      /**
      * {@inheritdoc}
      */
      public function getList(SearchCriteriaInterface $searchCriteria){

      $collection = $this->collectionFactory->create();

      $searchData = $this->productSuggestionSearchResultFactory->create();
      $searchData->setSearchCriteria($searchCriteria);

      $this->collectionProcessor->process($searchCriteria, $collection);
      // $this->extensionAttributesJoinProcessor->process($collection ,null)
      $this->extensionAttributesJoinProcessor->process($collection);

      $searchData->setItems($this->quoteCollection->getItems());
      $searchData->setTotalCount($this->quoteCollection->getSize());
      return $searchData;
      }
      /**
      * {@inheritdoc}
      */
      public function save(ProductSuggestionInterface $productSuggestion){
      try{
      $this->productSuggestionResource->save($productSuggestion);
      } catch (Exception $exception) {
      throw new CouldNotSaveException(__($exception->getMessage()));
      }

      return $productSuggestion;
      }

      }


      Now, i want to know,




      • why do this two classes use?

      • Do I need this classes when I will implement Service contracts/API ?







      magento2 api rest service-contract






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Sep 18 '18 at 13:40







      Amit Bera

















      asked Sep 17 '18 at 9:07









      Amit BeraAmit Bera

      57.4k1474171




      57.4k1474171






















          1 Answer
          1






          active

          oldest

          votes


















          1














          As I know
          Yes, for Service contracts/API you have to use this both classes.




          why do this two classes use?




          It will useful in api for retrieve data, CollectionProcessorInterface class is used for retrieving data with where condition $searchCriteria and JoinProcessorInterface is used for retrieving custom_attribute_fields on api call time.




          Do I need this classes when I will implement Service contracts/API ?




          MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface

          This class is used for get listing with seach criteria in your api(like where condition).



          MagentoFrameworkApiExtensionAttributeJoinProcessorInterface

          This class is retrieve custom_checkout_field on api select, which is defined in extension_attributes.xml






          share|improve this answer
























          • Pretty good answer

            – Amit Bera
            2 days ago











          • Thank you for that .. :)

            – Himanshu
            2 days ago











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "479"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f242502%2fwhat-are-the-use-of-extensionattribute-joinprocessorinterface-and-collectionproc%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          As I know
          Yes, for Service contracts/API you have to use this both classes.




          why do this two classes use?




          It will useful in api for retrieve data, CollectionProcessorInterface class is used for retrieving data with where condition $searchCriteria and JoinProcessorInterface is used for retrieving custom_attribute_fields on api call time.




          Do I need this classes when I will implement Service contracts/API ?




          MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface

          This class is used for get listing with seach criteria in your api(like where condition).



          MagentoFrameworkApiExtensionAttributeJoinProcessorInterface

          This class is retrieve custom_checkout_field on api select, which is defined in extension_attributes.xml






          share|improve this answer
























          • Pretty good answer

            – Amit Bera
            2 days ago











          • Thank you for that .. :)

            – Himanshu
            2 days ago
















          1














          As I know
          Yes, for Service contracts/API you have to use this both classes.




          why do this two classes use?




          It will useful in api for retrieve data, CollectionProcessorInterface class is used for retrieving data with where condition $searchCriteria and JoinProcessorInterface is used for retrieving custom_attribute_fields on api call time.




          Do I need this classes when I will implement Service contracts/API ?




          MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface

          This class is used for get listing with seach criteria in your api(like where condition).



          MagentoFrameworkApiExtensionAttributeJoinProcessorInterface

          This class is retrieve custom_checkout_field on api select, which is defined in extension_attributes.xml






          share|improve this answer
























          • Pretty good answer

            – Amit Bera
            2 days ago











          • Thank you for that .. :)

            – Himanshu
            2 days ago














          1












          1








          1







          As I know
          Yes, for Service contracts/API you have to use this both classes.




          why do this two classes use?




          It will useful in api for retrieve data, CollectionProcessorInterface class is used for retrieving data with where condition $searchCriteria and JoinProcessorInterface is used for retrieving custom_attribute_fields on api call time.




          Do I need this classes when I will implement Service contracts/API ?




          MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface

          This class is used for get listing with seach criteria in your api(like where condition).



          MagentoFrameworkApiExtensionAttributeJoinProcessorInterface

          This class is retrieve custom_checkout_field on api select, which is defined in extension_attributes.xml






          share|improve this answer













          As I know
          Yes, for Service contracts/API you have to use this both classes.




          why do this two classes use?




          It will useful in api for retrieve data, CollectionProcessorInterface class is used for retrieving data with where condition $searchCriteria and JoinProcessorInterface is used for retrieving custom_attribute_fields on api call time.




          Do I need this classes when I will implement Service contracts/API ?




          MagentoFrameworkApiSearchCriteriaCollectionProcessorInterface

          This class is used for get listing with seach criteria in your api(like where condition).



          MagentoFrameworkApiExtensionAttributeJoinProcessorInterface

          This class is retrieve custom_checkout_field on api select, which is defined in extension_attributes.xml







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 12 at 6:24









          HimanshuHimanshu

          792521




          792521













          • Pretty good answer

            – Amit Bera
            2 days ago











          • Thank you for that .. :)

            – Himanshu
            2 days ago



















          • Pretty good answer

            – Amit Bera
            2 days ago











          • Thank you for that .. :)

            – Himanshu
            2 days ago

















          Pretty good answer

          – Amit Bera
          2 days ago





          Pretty good answer

          – Amit Bera
          2 days ago













          Thank you for that .. :)

          – Himanshu
          2 days ago





          Thank you for that .. :)

          – Himanshu
          2 days ago


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Magento Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f242502%2fwhat-are-the-use-of-extensionattribute-joinprocessorinterface-and-collectionproc%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          1300-talet

          1300-talet

          Display a custom attribute below product name in the front-end Magento 1.9.3.8