Class JpaInventoryLocationVendorVisibilityHandler

java.lang.Object
com.broadleafcommerce.inventory.provider.jpa.marketplace.JpaInventoryLocationVendorVisibilityHandler
All Implemented Interfaces:
com.broadleafcommerce.common.extension.data.DataRoutePartitionAware, com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler, org.springframework.core.Ordered

public class JpaInventoryLocationVendorVisibilityHandler extends Object implements com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler
Responsible for performing vendor-visibility operations on InventoryLocation entities.
  • Constructor Details

    • JpaInventoryLocationVendorVisibilityHandler

      public JpaInventoryLocationVendorVisibilityHandler(int order, String dataRoutePartition)
  • Method Details

    • canHandle

      public boolean canHandle(@NonNull @NonNull Class<?> persistedDomainEntityType)
      If the persistedDomainEntityType is JpaInventoryLocation, this handler supports it.
      Specified by:
      canHandle in interface com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler
      Parameters:
      persistedDomainEntityType - the type to check support for
      Returns:
      true if the entity is a type of JpaInventoryLocation, false otherwise
    • isEntityMutableByVendorRestrictions

      public boolean isEntityMutableByVendorRestrictions(Object persistedDomainEntity, Set<String> restrictedVendorRefs, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Given a persistedDomainEntity, report whether that entity is mutable by the given vendor restrictions.

      A vendor-restricted user can only mutate inventory locations with non-null vendorRef which matches one of their restrictedVendorRefs.

      Specified by:
      isEntityMutableByVendorRestrictions in interface com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler
      Parameters:
      persistedDomainEntity - the persisted-domain entity to validate mutability for. This is guaranteed to only be an entity for which canHandle(Class) returns true.
      restrictedVendorRefs - the "vendorRef" (typically a vendor ID or code) of all vendors that mutability should be restricted to. Will never be empty.
      contextInfo - context information surrounding sandboxing/multitenant state
      Returns:
      true if the entity is mutable by the given vendor restrictions, false otherwise
    • createVendorNarrowingFilter

      public String createVendorNarrowingFilter(Set<String> restrictedVendorRefs, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Build a Node filter string that can be used in queries for JpaInventoryLocations that restricts results to only include data with null JpaInventoryLocation.getVendorRef() or matching the restrictedVendorRefs.
      Specified by:
      createVendorNarrowingFilter in interface com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler
      Parameters:
      restrictedVendorRefs - the "vendorRef" (typically a vendor ID or code) of all vendors that the results need to be restricted to. Will never be empty.
      contextInfo - context information surrounding sandboxing/multitenant state. Some implementations may inform their filtration decisions with this.
      Returns:
      a Node filter string that can be used to restrict results on supported entity type(s) to only include data from the restrictedVendorRefs. Cannot return null.
    • getAssociatedVendorRef

      @Nullable public String getAssociatedVendorRef(Object persistedDomainEntity, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Specified by:
      getAssociatedVendorRef in interface com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler
    • getOrder

      public int getOrder()
      Defines the priority of this vendor visibility handler in comparison to others injected by VendorVisibilityManager.
      Specified by:
      getOrder in interface org.springframework.core.Ordered
      Specified by:
      getOrder in interface com.broadleafcommerce.data.tracking.core.marketplace.vendor.visibility.VendorVisibilityHandler
      See Also:
    • getDataRoutePartition

      public String getDataRoutePartition()
      Defines the data route in which this vendor visibility handler should apply.
      Specified by:
      getDataRoutePartition in interface com.broadleafcommerce.common.extension.data.DataRoutePartitionAware