Giter Club home page Giter Club logo

aem-core-cif-components's People

Contributors

akumarsingh avatar alkim91 avatar aniham avatar brandonmaynard avatar buuhuu avatar cjelger avatar dabe5651 avatar deepkamal avatar dependabot[bot] avatar dhardtke avatar dplaton avatar godanny86 avatar hbacila avatar herzog31 avatar hollywoodtonight avatar hrayrpapikyan avatar kevin-mitchell avatar laurentiumagureanu avatar lsantha avatar martinbuergi avatar mhaack avatar nettree avatar realgpp avatar renovate[bot] avatar rkdmen avatar sandyaggarwal avatar sewec avatar steffenrosi avatar tyler-tessmann-bounteous avatar vladbailescu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aem-core-cif-components's Issues

Additional image to components product cards

User Story

As per UX/UI request of the client, we need to add to every product card (inside Product List, Product Teaser, Product Carousel, Related Products, Search Results) an additional image to show only on mouse over event.
Assuming the image is coming from backend as the others, which would be the best approach?

AEM Magento integration using graphQL

Not able to access

Actual Behaviour

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

user address is not fetched on page reload

Expected Behaviour - once user save its address in address book, after page reload or moving to another page, address should be there.

Actual Behaviour - once we save address and come back to address book, user address is not there.

Steps to Reproduce - Sign in and add address in address book. Address got saved. Reload the address page, or move to another page and come back to address book page. Address is not there.

JS warnings in the console while using the My Account dropdown

Steps to Reproduce

Open the JS dev console and sign in using the form from the account dropdown

There is a warning in the console:

VM2201:1 Warning: Cannot update a component (`UserContextProvider`) while rendering a different component (`SignIn`). To locate the bad setState() call inside `SignIn`, follow the stack trace as described in https://fb.me/setstate-in-render
    in SignIn (created by AccountDropdown)
    in div (created by AccountDropdown)
    in AccountDropdown (created by AccountContainer)
    in AccountContainer (created by App)
    in CheckoutProvider (created by App)
    in CartInitializer (created by App)
    in CartProvider (created by App)

This error occurs because the SignIn component dispatches a state update for the user context during rendering.

Question: Roadmap

Hi there,

Do you have a roadmap to deliver features for AEM Core CIF Components?

Thanks,

Ability to control carousel count

User Story

As an author, I want the ability to limit the number of products displayed in the Related Products.

Description & Motivation

Instead of showing all the products available, I would like to showcase a limited number of products in the Related Products component to entice customers to click into another page.

Deliverables

Provide a way for content authors to provide a limit to the number of products displayed. If provided, the component should display at most that many products in the component. This would require code change.

Acceptance Criteria

Should have the ability to author a maximum number of products to showcase.
Should be able to "revert" back to default behavior.
When authored, the component should render up to the authored maximum limit.

Verification Steps

Author the component and verify the default (existing) behavior works as expected.
Configure the component to have a limit on the number of products displayed.
Verify that no more than the authored limit show up.
Configure the component to revert back to the default behavior.
Verify that all products show up.

Some icons are not working with minified clientlibs

Expected Behaviour

All icons to show up. Specifically I've detected close icon and basket icon in cart.

.icon__root.icon__root-close {
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>');
}

Actual Behaviour

When minification is turned on: https://www.aemquickstart.in/2016/04/enable-js-and-css-minification.html

Then the css for some svg icons is not working

For instance, this doesn't work:

.icon__root.icon__root-close{background:url('data:image/svg+xml;utf8,<svgxmlns="http://www.w3.org/2000/svg"width="24"height="24"viewBox="002424"fill="none"stroke="currentColor"stroke-width="2"stroke-linecap="round"stroke-linejoin="round"><linex1="18"y1="6"x2="6"y2="18"></line><linex1="6"y1="6"x2="18"y2="18"></line></svg>')}

Reproduce Scenario (including but not limited to)

Steps to Reproduce

  • Enable minification in AEM instance.
  • Go to a /content/venia/us/en/ page or any page that contains mini-cart component.
  • Open the cart.
  • Close icon is not showing.

Platform and Version

AEM 6.5

Sample Code that illustrates the problem

OOTB

Logs taken while reproducing problem

N/A

Pagination Type is always set to default on Product List

This seems to be also related to the fact that the PageMetadata is the first instance where the product list is executed. The code in ProductCollectionImpl

paginationType = properties.get(PN_PAGINATION_TYPE, currentStyle.get(PN_PAGINATION_TYPE, PAGINATION_TYPE_DEFAULT));
is incorrectly picking up the currentStyle of the page rather than the product list component which then ends up setting the pagination to default.

Setting a paginationType property on the category page (manually, via crx/de) results in a correct behaviour.

Product added to cart and removes on the page load - cookie not set

Expected Behaviour

  1. When user add product to cart, it is added.
  2. When user refresh the page or navigate to any other page, the added product stays in cart.

Actual Behaviour

Product removes from cart if navigate to other page or we reload the page.
The cookie 'cif.cart' is not set

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

AEM 6.5.0
Magento 2.3.4
CIF 1.1.0

Sample Code that illustrates the problem

Logs taken while reproducing problem

Main image doesn't change when selecting another color

Expected Behaviour

Main image changes to the selected color.

Actual Behaviour

Main image doesn't updates when changing color.

Reproduce Scenario (including but not limited to)

Product from magento sample data catalog: http://localhost:4502/content/venia/language-masters/en/products/product-page.teton-pullover-hoodie.html

Steps to Reproduce

Click on the color swatches to change color.

Platform and Version

Chrome 75.0.3770.18
AEM 6.5

Sample Code that illustrates the problem

Screen Shot 2019-05-07 at 2 27 23 PM

Full cart and checkout component

User Story

As a user, I want to be able to see the cart and checkout process as a standalone page (or pages) because that's what I'm used to from other e-commerce shops.

Description & Motivation

  • Online shoppers are not accustomed to using a "mini checkout" the way it's implemented with the CIF Components. They're used to seeing a full-page to go through the checkout process.
  • Having the checkout process on a separate template that's more minimal with fewer distractions may also help with conversions.

Deliverables

Add a new "full checkout" component (potentially based on the existing mini-cart component) that can be dropped on a page on its own and guide the user through the checkout process. To allow for more flexibility and extensibility, there should also be a separate "full cart" component.

Acceptance Criteria

  • The full cart and full checkout components should have feature parity to the existing mini-cart component.
  • The cart/checkout pages should be configurable similar to how the category/product/search pages are configurable.

DevTools failed to load SourceMap

Expected Behaviour

no warnings/errors

Actual Behaviour

Errors in console related to SourceMap's when opening any store page.
Errors occur on Safari.
Warnings on Chrome.

Reproduce Scenario (including but not limited to)

  1. Open /content/venia-store/us/en.html page either in publish or author (venia store demo content)
  2. Verify JS warnings with any browser debugger.

Platform and Version

AEM 6.5.0
Magento 2.3.4
CIF 0.11.0

Sample Code that illustrates the problem

image

Address form issues with single country selected

Expected Behaviour

If a single country is added to the list of country options the address form still works.

Actual Behaviour

If a single country is added to the list of country options a submission does not get the country_code sent to the create customer address mutation.

Reproduce Scenario (including but not limited to)

Example of the issue can be seen when trying to add a address to the address book

Steps to Reproduce

  1. Configure a store with United States as the only country option following these steps https://docs.magento.com/user-guide/stores/country-options.html
  2. Go to address book while logged in
  3. Create customer address
  4. Submit and get internal server error.

Platform and Version

Magento 2.4.0-p1
AEM 6.5.5
CIF 1.7

Sample Code that illustrates the problem

Logs taken while reproducing problem

Browser Compatibility Matrix

Could you please provide what browsers are supported to know where can we tests and report any issues we may find?

It's also helpful to understand the gap for the browsers we need to support in a project.

Switch to more inclusive language

Could you please take some time in the next few days to make changes to some terminology in your repos and content as much as is possible:

  • Whitelist/blacklist to Allowed List and Blocked List (or Approve List/Deny List - some software uses this instead) respectively. Google and many developers are formalizing allowlist and blocklist. You might want to lobby for those terms to be used in the UI.
  • Master/Slave to master and replica (or subordinate, if that makes more sense) respectively.

If you cannot remove the term because the writing for example reflects the UI or the code, please make a note and send me an email to [email protected] so we can bring it that team’s attention. Thanks for your efforts in this matter.

Feature request: Data Layer capability

User Story

As a Analytics consultant I would like to be able to track the whole commerce flow in a standardised way without the need of code changes on component/template level.

Description & Motivation

Is it planned to add Data Layer capability to the CIF Core Components? If so, when will this be available?

Deliverables

tbd

Acceptance Criteria

tbd

Verification Steps

tbd

Add to Cart Not Working

Expected Behaviour

Product is added to cart.

Actual Behaviour

Dispatcher Docker log shows DNS error.
[Fri Jun 26 03:26:36.020909 2020] [proxy:error] [pid 7:tid 140345463514880] [client 172.17.0.1:59964] AH00898: DNS lookup failure for: magento235hv.local returned by /magento/graphql, referer: http://localhost/content/venia/us/en/products/product-page.affirm-water-bottle.html
172.17.0.1 - - [26/Jun/2020:03:26:26 +0000] "POST /magento/graphql HTTP/1.1" 502 351

Reproduce Scenario (including but not limited to)

AEM 6.5 running on local host machine.
Magento 2.3.5 running on Hyper-V via Vagrant.
AEM Dispatcher Docker running as described here.

Steps to Reproduce

Access PDP which loads fine.
Add to Cart button appears to be working, but error received after fetching cart data for a while.

Platform and Version

AEM 6.5 running on local host machine.
Magento 2.3.5 running on Hyper-V via Vagrant.
AEM Dispatcher Docker running as described here.

Sample Code that illustrates the problem

See above.

Logs taken while reproducing problem

Docker logs pasted above.

Build requires npm to be installed

The maven build of the reactor breaks if no npm binary is installed. This could be avoided if the maven-frontend-plugin is used, which allows to freely specify which version of node and npm should be used.
It also makes it easier to build the project without maintaining these dependencies manually.

Checkout issue - tax not being added

Expected Behaviour

Tax is added to grand total after a shipping address has been set on the cart.

Actual Behaviour

Tax is missing until page is refreshed and cart query is run.

Reproduce Scenario (including but not limited to)

Checkout as a guest or logged in user

Steps to Reproduce

  1. Add item to cart.
  2. Click on checkout button.
  3. Open shipping address view, enter address, click use address button.
  4. Tax is missing from total.

Platform and Version

AEM 6.5
CIF Core Components 0.10.1
Magento 2.3.4

Use an address from the Address Book during checkout

User Story

As a registered shopper, I want to select an address from my address book during checkout.

Description & Motivation

During the checkout experience, a registered shopper must be able to select an address from the address book as the shipping or billing address

Deliverables

  • A dropdown has to be added to the shipping and billing address steps of the checkout experience
  • The values in the dropdown should be the street names
  • The dropdown and the address form should be pre-filled with the default address

Acceptance Criteria

  • In the "Shipping Address" section I have the form pre-filled with my default address. I also have a dropdown that lists the addresses (street names) that I can choose another address from.
  • In the "Billing address" section - if I deselect the "Same as shipping address" option I get the address form and a dropdown from which I can select a different address

Verification Steps

[Examples] Commerce section title and left margin are not aligned with the rest on aemcomponents.dev main page

image

Title is missing separator and all section is off to the right a few pixels. This is due to direct usage of Core Components RTs, after adobe/aem-core-wcm-components#1452 was fixed and released all examples should reference the proxies.

Possible fix: replace all direct usage of core components RTs (https://github.com/adobe/aem-core-cif-components/search?l=XML&q=%22core%2Fwcm%2Fcomponents%22) with the Library proxies.

Product query extension is not executed for custom product model

It looks like the first time the product query gets constructed is via the PageMetadata call in head.html on the CIF page component. The PageMetadata makes an adaptTo call to adapt the request to a product model which doesn't take in account the custom product model (which has the product query hook) resulting in AEM caching an incorrect product object. The subsequent call from the product component on the page doesn't result in a new product query call being made (which is correct from a performance perspective as we don't want to fetch the "same" product twice).

One way that I managed to get around this is to create a custom PageMetadata Sling model and overload the head.html HTL script to use it instead of the core one.

Expected Behaviour

New product attributes defined via a product query hook are available in the product component.

Actual Behaviour

Calls to get methods for new attributes result in a NullPointerException as attributes are not available in the query response due to the query hook not being included.

Reproduce Scenario (including but not limited to)

Steps to Reproduce

  1. Create a custom Product Model and add an extend* call in the @PostConstruct method
  2. Add a get* method for the additional attributes
  3. Extend product.html and include a call to any of the get methods

Platform and Version

CIF core components: 1.7.0
Magento Graphql: 6.0.0-magento235
AEM: Cloud Service SDK 2021.1.4830.20210128T075814Z-201217

Sample Code that illustrates the problem

Logs taken while reproducing problem

Caused by: java.lang.RuntimeException: java.lang.NullPointerException
at com.shopify.graphql.support.AbstractResponse.lambda$converterWrapper$0(AbstractResponse.java:83) [com.adobe.commerce.cif.magento-graphql:6.0.0.magento235]
at com.shopify.graphql.support.AbstractResponse.getAs(AbstractResponse.java:93) [com.adobe.commerce.cif.magento-graphql:6.0.0.magento235]
at com.shopify.graphql.support.AbstractResponse.getAsString(AbstractResponse.java:106) [com.adobe.commerce.cif.magento-graphql:6.0.0.magento235]
at com.CUSTOMER.aem.brands.core.models.commerce.CustomProductImpl.getMethod(CustomProductImpl.java:243) [breville-aem-brands.core:1.0.0.SNAPSHOT]
... 444 common frames omitted
Caused by: java.lang.NullPointerException: null
at com.shopify.graphql.support.AbstractResponse.jsonAsString(AbstractResponse.java:197) [com.adobe.commerce.cif.magento-graphql:6.0.0.magento235]
at com.shopify.graphql.support.AbstractResponse.lambda$converterWrapper$0(AbstractResponse.java:81) [com.adobe.commerce.cif.magento-graphql:6.0.0.magento235]
... 447 common frames omitted
25.02.2021 15:38:11.791 INFO [[0:0:0:

My account dropdown - move the Sign in option in the dropdown

User Story

As a visitor, I want to have a dedicated space from which I can access "Sign in" options, without having to open the navigation side panel.

Description & Motivation

Deliverables

  1. Updated Header component with the icon for the user dropdown
  2. The drop-down containing only the sign-in button, with complete functionality (enter username and password, sign in)
  3. The sign-out option must be accessible and functional
  4. After the sign in the dropdown will only display the user name and the sign-out option.

Acceptance Criteria

  1. The feature is implemented
  2. The unit tests meet the coverage criteria
  3. The UI fits the Venia theme

Verification Steps

  1. Create a new project using the archetype
  2. Install the SNAPSHOT version of this project.
  3. Check the home page:
    1.1 The user icon must be present in the header component
    1.2 Clicking the icon opens the dropdown which has the sign-in form
    1.3 Enter an existing username and password and click "Sign in" - the user should be signed in and the "Sign out" button should be displayed
    1.4 Click the "Sign out" option. It should work as expected.

Mockups:

Before logging in:

  • we should keep the "Sign in" text next to the icon

Screenshot 2020-06-23 at 10 34 33

  • after login, dropdown closed

Screenshot 2020-06-23 at 10 34 54

  • dropdown open
  • we don't need all the links here, but we should at least have "Account information" and "Address Book"

Screenshot 2020-06-23 at 10 35 13

Internal ref

CIF-1444 and CIF-1445

[My Account] Address book management

User Story

As a registered shopper, I want to manage my shipping/billing addresses so I can use them properly during the checkout process.

Description & Motivation

Improve the checkout experience by allowing the shopper to select a previously stored address in the checkout process.

Deliverables

  1. A dedicated AEM page for address book management (can be created using the "Content Page" template), accessible via the "Address book" link from the account drop down or side-panel.

  2. A self contained React component that allows address book management:

address_book_3

The component must allow the developer to customize the display type (list/grid) via props or a similar mechanism.

Each entry in the list must have the "Edit" and "Remove" actions:

address_book_delete_confirmation

Adding a new address must be done via the same form used in the checkout process

address_book_2

  1. Unit tests for the React component

Acceptance Criteria

  1. The Address book page can be accessed via the link in the account dropdown or side panel
  2. The address book page is working as expected - you can create, update, or delete addresses.
  3. You can select one and only one address to be the "default" address.

Verification Steps

[Bundle products] Implement option and quantity selection

User Story

As a user, I want to be able to select the options and quantities of the items of a bundle product. When selecting an option and/or changing the selected quantities, the price calculation and bundle content should be updated to always display the current selection. See the screenshot of that feature in Magento's LUMA demo.

Deliverables

That feature should be implemented client-side as a React component. The selection of options and quantities should be stored so that's later possible to add the bundle product to the cart but this will be implemented in another related issue. This will done according to https://devdocs.magento.com/guides/v2.3/graphql/mutations/add-bundle-products.html

The content and options of the bundle product should be fetched client-side with GraphQL, using the onBundleProduct fragment of a product query.

Acceptance Criteria

The user must be able to select the option(s) and quantities of the bundle product, and the price and current content of the bundle must always be displayed. upon changes.

Screenshots

Screenshot 2020-07-06 at 11 28 55

CIF Page component custom head template overrides support for HtmlPageItems

Because the CIF Page component uses a custom head.html template, no HTML page items can be inserted in the the page header.

Expected Behaviour

Defining HtmlPageItemsConfig will make the items render in page header.

Actual Behaviour

HTML page items are not inserted in page header.

Reproduce Scenario (including but not limited to)

Pages created using the CIF Page component that need to use HTMLPageItemsConfig to inject CSS and JS.

Steps to Reproduce

  • Create a page based on the CIF Page component (either directly or using a proxy component)
  • Create a context-aware HtmlPageItemsConfig that applies to the selected page and defines some items to be added to page header and some to the footer.
  • Notice the header items do not get inserted while those in the footer get inserted

Platform and Version

AEMaaCS/SDK + Core Components 2.15.2 + CIF Components 1.9.0

Sample Code that illustrates the problem

CIF page head.html is missing HTML items includes.

Logs taken while reproducing problem

N/A

Export Cart context useCartState() at app level.

User Story

As a developer, I want the ability to use the Cart context throughout the CommerceApp so that other external components can react to state changes of the MiniCart.

Description & Motivation

Currently, the MiniCart context [../components/Minicart/cartContext.js - line 133] is not exported for later use within the CommerceApp. The motivation behind this fix stems from a desire to add new components in the header for a business client that will require the current state of the Cart -- ie isOpen or other stored state values.

Deliverables

Code changes:

  1. Within 'Minicart/index.js' export useCartState from './cartContext';
  2. Within the main 'index.js' file, export useCartState from './components/Minicart';

Acceptance Criteria

A developer should be able to import { useCartState } from '@adobe/aem-core-cif-react-components' with no errors.

Verification Steps

Try importing useCartState and using it within a child component of the .

FilterRangeTypeInput doesn't account for *_????

Expected Behaviour

When you filter on price for *_10 you should get a result back of all products from 0_10.

Actual Behaviour

When you filter for *_10 no items are returned because it is passing a * in from price

Reproduce Scenario (including but not limited to)

Add product listing to category page.

Steps to Reproduce

Click the first filter *_10
Page reloads and no items found

Platform and Version

AEM 6.5.3
Magento 6.4.3

Sample Code that illustrates the problem

filter.setFrom(rangeValues[0]);
// For values such as `60_*`, the to range should be left empty
if (StringUtils.isNumeric(rangeValues[1])) {
    filter.setTo(rangeValues[1]);
}

Button component doesn't use UrlProvider to create product and category links

Expected Behaviour

When using the CIF Button (v1) component, I expected it to create URLs that are formatted based on what's defined in the UrlProvider OSGi config.

Expected: /content/luma/language-masters/en/category/category-page.21.html/women/tops-women

Actual Behaviour

The behavior that I'm seeing is that it's missing the suffix and therefore breaks the special sling mapping that's set up.

Actual: /content/luma/language-masters/en/category/category-page.21.html

Steps to Reproduce

Drop the CIF Button on a page and link to a category from the authoring dialog.

Platform and Version

AEM 6.5.6

Sample Code that illustrates the problem

Logs taken while reproducing problem

ButtonImpl:

    private String constructUrl(final String pagePath, final String urlKey) {
        return String.format("%s.%s.html", pagePath, urlKey);
    }

[request of clarification] Nested Product Pages

Is it possible to organize products pages with a deep structure of pages? As far I can say from my test it is not possible because tab "Commerce" is not visible under depth level 6 preventing from configuring product slugs.

To clarify my question let say we have the path "/content/mt-store/language-masters/en/products/product-page" as root page of all product pages. I'm wondering if it's possible to create

  • "content/cassina/language-masters/en/products/product-page/cluster-1-page" with different products slugs configured

  • "content/cassina/language-masters/en/products/product-page/cluster-1-page/product-1234" with single product slug configured; slug of this product should not be configured in the parent page.

Is the missing tab "Commerce" under certain page depth level an intended feature? Or with the presence of this tab all other features would work as expected anyway?

Ability to change class outside of the Search Bar component

User Story

As a developer, I want the ability to close the Search Bar component by simply changing the CSS class without bugs resulting from the internal toggle() method.

Description & Motivation

Instead of relying on an internal state (this._state.visible), we would like to check against the current CSS class (.searchBar__root_open) of the the search bar root

. The current method introduces errors when the CSS class is changed outside the components toggle method.
The motivation for this change is to prevent phantom clicks that don’t change the component state when the CSS of the root element is changed (from an outside source). Furthermore, this will ultimately let the user see only one menu item open at a time.

Deliverables

Provide a code update for the toggle() function within searchbar.js (lines 73 -81) to check for the current CSS state and toggle that class. This would require code change and also update stateObject.visible afterward.

Acceptance Criteria

Should have the ability to detect the current CSS state of the component and toggle accordingly despite any internal state. (Check against this._classes.open class that gets assigned to the root element)

Verification Steps

  • Author the component and "view as published".
  • Next, click to open the Search Bar and leave the component in the open state.
  • Now, manually remove the open class on the root element (save). This is just under the trigger button in most cases.
  • Proceed to click the search bar trigger again.
  • Verify that when the CSS class on the root changes, the search bar closes but now clicking the trigger will open it again. Previously, these actions would result in a phantom click where nothing happened.

addCoupon is not a function

Expected Behaviour

Able to add coupon to cart.

Actual Behaviour

Sometimes users are not able to add coupon to cart without refreshing page to get access to addCoupon function

Reproduce Scenario (including but not limited to)

  1. Chrome → Incognito window.
  2. Go to product page
  3. Add product to the cart
  4. Add coupon code and press apply. If you look into the console, you will get the error.
  5. Refresh the page, add the coupon code and press apply and now it works.

Steps to Reproduce

Platform and Version

AEM 6.5.0
Magento 2.3.4
CIF 1.0.1

Sample Code that illustrates the problem

Logs taken while reproducing problem

Uncaught TypeError: addCoupon is not a function
at addCouponHandler (react-components.js:90858)
at HTMLUnknownElement.callCallback (react-components.js:128716)
at Object.invokeGuardedCallbackDev (react-components.js:128765)
at invokeGuardedCallback (react-components.js:128820)
at invokeGuardedCallbackAndCatchFirstError (react-components.js:128834)
at executeDispatch (react-components.js:128964)
at executeDispatchesInOrder (react-components.js:128989)
at executeDispatchesAndRelease (react-components.js:129093)
at executeDispatchesAndReleaseTopLevel (react-components.js:129102)
at forEachAccumulated (react-components.js:129074)

Wishlist Feature

User Story

As I user I want to use whishlists to manage products with my personal touch.

Description & Motivation

The ability to create/edit/delete different wishlists is crucial to offer the user a pleasant commerce journey. The user should be able to add/remove/update products to the desired wishlist organizing the cluster of products as preferred.

Deliverables

As far I can see the feature is missing so it requires all kind of development tasks.

Acceptance Criteria

Components should support all CRUD operations (create, read, update and delete) to customize/handle wishlist itself.
Components should support all CRUD operations (create, read, update and delete) to manage products of wishlist.

Ability to control how product URLs are displayed/chosen

User Story

  • As a user, I want to have full control over how a product URL looks, so that I can use the CIF connector on an existing product site without changing anything from an SEO perspective, or from a marketing perspective.

Description & Motivation

  • Whoever is using the CIF library would like full control over how product pages respond, or category pages. This motivation came from a client using the CIF library and was unable to do this - workarounds were implemented for this client, but I thought it would be much cleaner if a UrlDelegator could be used to choose which UrlProvider to use. This way, custom client-specific code can be used to implement the UrlProvider class and the UrlDelegator will be able to use theirs or the default provider based on priority.

Deliverables

  • Make a UrlDelegator class so that custom versions of the UrlProvider can be implemented for client-specific product-name handling. The documentation would need to reflect that people can implement their own UrlProvider methods. The shouldProcess method of the UrlProvider will determine if the custom version should be used on a case-by-case basis.

Acceptance Criteria

  • A user of the CIF library should be able to have product pages be whatever page they want. If they have a custom/existing page template type, they should not have to modify the URL structure to make it work with CIF. An implementor can help write custom logic to define what the product-key is for any of their custom pages, which would then pull in the product on the page with the customer's existing URL structure.

Verification Steps

  • Implement your own version of the UrlProvider and set the ranking to the min value so it is used first. Validate that product info is coming into your page(s) and test out with categories as well, according to your implementation.

JSON Parse error for gallery.js

Expected Behaviour

No errors

Actual Behaviour

SyntaxError: JSON Parse error: Unexpected identifier "object"

Reproduce Scenario (including but not limited to)

  1. Open /content/venia-store/us/en.html page either in publish or author (venia store demo content)
  2. Verify JS logs

Platform and Version

AEM 6.5.0
Magento 2.3.4
CIF 0.11.0

Additional info

It seems there is a problem with apps/core/cif/components/commerce/product/v1/product/clientlib/js/gallery.js file
const galleryItems = JSON.parse(galleryItemsJson);
When galleryItemsJson === { assets: [] }

Extending react-components

User Story

As a developer, I want to extend the core cif react-component so that I can add new functionalities to the react component by extending them

Description & Motivation

react-components provide only limited number of components out of the box. To add new component developer should be able to create new component consuming the core react component provided in the library or a way to override, overlap the component so that new features can be added to the checkout react components.

Deliverables

My Account Component: Core react component provide only limited functionality. To be able to add the wishlist, orderhistory and other customized components.

Acceptance Criteria

  • To be able to customize core-react-component
  • Add new component utilizing core-react-components
  • Write new queries in application using react-components

CIF connecter vs core cif components version issues

Hi,
CIF connector version 1.8.0-magento242ee is released and it is compatible with Magento 242 version. whereas Core cif components version 1.9 is released and it is not compatible with Magento 242 version. 1.9 version of CIF Core components are still using magento graphql version 6.0.0-magento235.
Could you please let us know when the CIF core components version is released which is compatible with magenot graph ql version 9.0.0-magento242ee.

Expected Behaviour

Actual Behaviour

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

cart not updating

Expected Behaviour

  1. When a user enters shipping address the tax is updated.
  2. When a user selects a shipping method, the shipping cost is updated

Actual Behaviour

Neither get updated until page is reloaded .

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

AEM 6.5.0
Magento 2.3.4
CIF 1.0.1

Sample Code that illustrates the problem

Logs taken while reproducing problem

Idea for improved Customization of Product Teaser component when teasing variants

Expected Behaviour

See Sample Code

Actual Behaviour

See Sample Code

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Core CIF Components 1.2.0
AEM 6.5.0

Sample Code that illustrates the problem

Using delegation, I can customize the ProductTeaser comp with ease (e.g. add a getCountryOfManufacture method):

@Model(adaptables = SlingHttpServletRequest.class, adapters = MyProductTeaser.class, resourceType = MyProductTeaserImpl.RESOURCE_TYPE)
public class MyProductTeaserImpl implements MyProductTeaser {

    protected static final String RESOURCE_TYPE = "shop/components/commerce/productteaser";

    @Self
    @Via(type = ResourceSuperType.class)
    private ProductTeaser productTeaser;

    private AbstractProductRetriever productRetriever;

    @PostConstruct
    public void initModel() {
        productRetriever = productTeaser.getProductRetriever();

        if (productRetriever != null) {
            productRetriever.extendProductQueryWith(p -> p.countryOfManufacture());
        }
    }

    @Override
    public String getCountryOfManufacture() {
        return productRetriever.fetchProduct().getCountryOfManufacture();
    }

    @Override
    public String getFormattedPrice() {
        return productTeaser.getPriceRange().getFormattedFinalPrice();
    }

    @Override
    public Price getPriceRange() {
        return productTeaser.getPriceRange();
    }

    @Override
    public String getImage() {
        return productTeaser.getImage();
    }

    @Override
    public String getName() {
        return productTeaser.getName();
    }

    @Override
    public String getUrl() {
        return productTeaser.getUrl();
    }

    @Override
    public String getSku() {
        return productTeaser.getSku();
    }

    @Override
    public String getCallToAction() {
        return productTeaser.getCallToAction();
    }

    @Override
    public Boolean isVirtualProduct() {
        return productTeaser.isVirtualProduct();
    }

    @Override
    public AbstractProductRetriever getProductRetriever() {
        return productRetriever;
    }
}

This works fine for base variants (e.g. WJ08), but it doesn't for sub-variants (e.g. WJ08-XS-Gray) because the ProductRetriever is given only the left side of the SKU (see

). ProductRetriever#fetchProduct will always return the base variant.

Unfortunately, getProduct() of the impl class is private. Is there a reason, the ProductTeaser explicitly passes only the LHS of the SKU to the ProductRetriever?

I'd at least wish it was configurable in some way. Or, if it was a design decision, prevent editors from choosing a variant of a SKU in the component's edit dialog.

Logs taken while reproducing problem

Feature Request: Allow dynamic filtering of search results

User Story

As a user I want to able to use the filtering or "faceting" functionality provided by Magento to more easily narrow down search results.

Description & Motivation

Magento allows for dynamic filtering of search results based on attribute configuration within Magento. It would be nice if the search related components supported some of this functionality. The "dynamic" part of this comes in because the attributes that are configured for search within Magento are dynamic and so too the AEM components used should also be dynamic so that as the searchable attributes are updated in Magento the attributes too are updated within AEM.

Deliverables

  • Additional components
  • Modification to existing search, navigation bar, and potentially product list UI elements
  • Ability to make simple introspection queries is required to be able to dynamically query Magento's GraphQL endpoints

Acceptance Criteria

After setting up CIF and adding the appropriate search component(s) to a page...

  • Search displays with a list of available filters
  • Adding a new attribute as filterable in Magento should result in the option being available for filtering in AEM
  • Removing an attribute from Magento should also remove the attribute as a filter option from the AEM search steps

Product Collection Item has adjacent links with the same destination, cuasing lower site scores on accessibility tests.

Expected Behaviour

It seems that to meet accessibility standards the Product Collection Item should be made with only one link covering both the title and image.

Actual Behaviour

There are redundant links on the item image and item title.

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Use the WAVE web accessibility evaluation tool(available as a firefox/chrome extension) or Siteimprove accessibility tool on a page using the product collection component and notice the warning given for adjacent redundant links.

Platform and Version

AEM 6.5, CIF core 1.9

Sample Code that illustrates the problem

Logs taken while reproducing problem

Alerts
Redundant link
What It Means
Adjacent links go to the same URL.
Why It Matters
When adjacent links go to the same location (such as a linked product image and an adjacent linked product name that go to the same product page) this results in additional navigation and repetition for keyboard and screen reader users.
How to Fix It
If possible, combine the redundant links into one link and remove any redundant text or alternative text (for example, if a product image and product name are in the same link, the image can usually be given alt="").
The Algorithm... in English
Two adjacent links go to the same URL.
Standards and Guidelines
2.4.4 Link Purpose (In Context) (Level A)
Icon index

mvn clean install is giving error

Expected Behaviour

Project compiles succesfully

Actual Behaviour

Getting error "MagentoGraphqlClient.java has not been previously formatted. Please format file and commit before running validation!"

Reproduce Scenario (including but not limited to)

Download zip file, extract, run mvn clean install

Steps to Reproduce

Download zip file, extract, run mvn clean install

Platform and Version

master version

Sample Code that illustrates the problem

Logs taken while reproducing problem

The price search facet does not work when the price is a single value

Expected Behaviour

Given : As a visitor on the venia website
When : i click on the price search face
And : my price facet value is a single value (30 and not a range 20_30)
Then : I expected the venia website to display all the product in the current categoy
which have 30$ as price

Actual Behaviour

Given : As a visitor on the venia website
When : i click on the price search face
And : my price facet value is a single value (30 and not a range 20_30)
Then : I do not see any product displayed

Reproduce Scenario (including but not limited to)

  • Configure a Magento instance to display all price aggregates from a category with single values and not a ranges.
  • Configure the CIF with AEM (author,publish) as per the official documentation
  • Open a category page and check the values of the price facet

Platform and Version

AEM 6.5
Magento 2.3.4

Sample Code that illustrates the problem

GraphQL query executed by the CIF
{ products(currentPage: 1, pageSize: 6, filter: {category_id: {eq: "8"}}) { total_count items { __typename id sku name small_image { url } url_key price_range { minimum_price { regular_price { value currency } final_price { value currency } discount { amount_off percent_off } } } ... on ConfigurableProduct { price_range { maximum_price { regular_price { value currency } final_price { value currency } discount { amount_off percent_off } } } } } aggregations { options { count label value } attribute_code count label } } }

Price aggregates with single values
"aggregations": [ { "options": [ { "count": 1, "label": "34", "value": "34" }, { "count": 1, "label": "100", "value": "100" } ], "attribute_code": "price", "count": 2, "label": "Price" } ]

Price aggregates with ranges
"aggregations": [ { "options": [ { "count": 1, "label": "10-20", "value": "10_20" }, { "count": 6, "label": "20-30", "value": "20_30" }, { "count": 6, "label": "30-40", "value": "30_40" }, { "count": 7, "label": "40-50", "value": "40_50" }, { "count": 6, "label": "50-60", "value": "50_60" }, { "count": 2, "label": "60-70", "value": "60_70" }, { "count": 1, "label": "70-80", "value": "70_80" }, { "count": 1, "label": "80-90", "value": "80_90" }, { "count": 2, "label": "90-*", "value": "90_*" } ], "attribute_code": "price", "count": 9, "label": "Price" } ]

Logs taken while reproducing problem

JavaScript errors on Product pages if Product can't be found

Expected Behaviour

When opening a product page where the product can't be found, the Product component should not throw.

Actual Behaviour

Screenshot_20200810_125119
When loading the page (e.g. http://localhost:4502/content/venia/us/en/products/product-page.i-do-not-exist.html) a JS error appears in the console.

Reproduce Scenario (including but not limited to)

Open a product detail page where the product can't be found.

Steps to Reproduce

  1. Open http://localhost:4502/content/venia/us/en/products/product-page.i-do-not-exist.html
  2. Notice the error in the console (see the screenshot above)

Platform and Version

AEM 6.5.5 on-premise, CIF Components 1.2.0

Sample Code that illustrates the problem

Logs taken while reproducing problem

Validation errors with filevault-maven-plugin 1.1.4 in core-cif-components-apps-1.2.0.zip

When the core-cif-components-apps-1.2.0.zip content package is embedded into a project which is using the latest maven-filevault-plugin the build is throwing a validation error:
[INFO] [ERROR] ValidationViolation: "jackrabbit-docviewparser: Invalid XML found: Given root node name 'cq:design_dialog' (implicitly given via filename) cannot be resolved. The prefix used in the filename must be declared as XML namespace in the child docview XML as well!", filePath=jcr_root/apps/testing-cif-cloud-vendor-packages/application/install/core-cif-components-apps-1.2.0.zip/jcr_root/apps/core/cif/components/commerce/productlist/v1/productlist/_cq_design_dialog/.content.xml, nodePath=/apps/core/cif/components/commerce/productlist/v1/productlist/cq:design_dialog

ProductCarousel cannot be correctly instantiated by the Use API

Expected Behaviour

Product carousel can be overridden as per readme instructions

Actual Behaviour

Extending Product Carousel component and overriding productcarousel.html template throws an error when component is added to a template

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Install Venia demo store
Add productcarousel.html into proxy component folder in your project (no modifications to component template required)
Deploy updated ui.apps
Add productcarousel component to product page

Platform and Version

AEM 6.5
core.cif.components.version - 0.6.0
cif.connector.version - 0.7.0

Sample Code that illustrates the problem

productcarousel - .content.xml

<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
          jcr:description="Product Carousel Component"
          jcr:primaryType="cq:Component"
          jcr:title="Product Carousel"
          sling:resourceSuperType="core/cif/components/commerce/productcarousel/v1/productcarousel"
          componentGroup="project-name"/>

Logs taken while reproducing problem

org.apache.sling.api.SlingException: Cannot get DefaultSlingScript: Identifier com.adobe.cq.commerce.core.components.models.productcarousel.ProductCarousel cannot be correctly instantiated by the Use API
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:510) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilterWithErrorHandling(WCMDeveloperModeFilter.java:164) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilter(WCMDeveloperModeFilter.java:135) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:217) [com.adobe.granite.csrf:1.0.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilterWithErrorHandling(WCMDebugFilter.java:192) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:159) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:278) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.page.PageLockFilter.doFilter(PageLockFilter.java:91) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:94) [com.day.cq.cq-personalization:5.12.36]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.dispatchRequest(SlingRequestProcessorImpl.java:322) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.dispatch(SlingRequestDispatcher.java:211) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.include(SlingRequestDispatcher.java:104) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter$ForwardRequestDispatcher.include(WCMComponentFilter.java:516) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.adobe.cq.sightly.WCMScriptHelper.includeResource(WCMScriptHelper.java:179) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at com.adobe.cq.sightly.internal.extensions.ResourceExtension.call(ResourceExtension.java:138) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl.call(RenderContextImpl.java:77) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.sightly.libs.wcm.foundation.components.responsivegrid.responsivegrid_html.render(responsivegrid_html.java:119)
	at org.apache.sling.scripting.sightly.render.RenderUnit.render(RenderUnit.java:50) [org.apache.sling.scripting.sightly.runtime:1.1.0.1_4_0]
	at org.apache.sling.scripting.sightly.impl.engine.SightlyCompiledScript.eval(SightlyCompiledScript.java:60) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:386) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:491) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilterWithErrorHandling(WCMDeveloperModeFilter.java:164) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilter(WCMDeveloperModeFilter.java:135) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:217) [com.adobe.granite.csrf:1.0.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilterWithErrorHandling(WCMDebugFilter.java:192) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:159) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:278) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.page.PageLockFilter.doFilter(PageLockFilter.java:91) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:94) [com.day.cq.cq-personalization:5.12.36]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.dispatchRequest(SlingRequestProcessorImpl.java:322) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.dispatch(SlingRequestDispatcher.java:211) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.include(SlingRequestDispatcher.java:104) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter$ForwardRequestDispatcher.include(WCMComponentFilter.java:516) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.adobe.cq.sightly.WCMScriptHelper.includeResource(WCMScriptHelper.java:179) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at com.adobe.cq.sightly.internal.extensions.ResourceExtension.call(ResourceExtension.java:138) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl.call(RenderContextImpl.java:77) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.sightly.libs.wcm.foundation.components.responsivegrid.responsivegrid_html.render(responsivegrid_html.java:119)
	at org.apache.sling.scripting.sightly.render.RenderUnit.render(RenderUnit.java:50) [org.apache.sling.scripting.sightly.runtime:1.1.0.1_4_0]
	at org.apache.sling.scripting.sightly.impl.engine.SightlyCompiledScript.eval(SightlyCompiledScript.java:60) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:386) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:491) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilterWithErrorHandling(WCMDeveloperModeFilter.java:164) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilter(WCMDeveloperModeFilter.java:135) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:217) [com.adobe.granite.csrf:1.0.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilterWithErrorHandling(WCMDebugFilter.java:192) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:159) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:278) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.page.PageLockFilter.doFilter(PageLockFilter.java:91) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:94) [com.day.cq.cq-personalization:5.12.36]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.dispatchRequest(SlingRequestProcessorImpl.java:322) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.dispatch(SlingRequestDispatcher.java:211) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.include(SlingRequestDispatcher.java:104) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter$ForwardRequestDispatcher.include(WCMComponentFilter.java:516) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.adobe.cq.sightly.WCMScriptHelper.includeResource(WCMScriptHelper.java:179) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at com.adobe.cq.sightly.internal.extensions.ResourceExtension.call(ResourceExtension.java:138) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl.call(RenderContextImpl.java:77) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.sightly.apps.core.wcm.components.page.v2.page.body_html.render(body_html.java:62)
	at org.apache.sling.scripting.sightly.render.RenderUnit.render(RenderUnit.java:50) [org.apache.sling.scripting.sightly.runtime:1.1.0.1_4_0]
	at org.apache.sling.scripting.sightly.impl.engine.SightlyCompiledScript.eval(SightlyCompiledScript.java:60) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:386) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:491) [org.apache.sling.scripting.core:2.0.56]
	at com.adobe.cq.sightly.WCMScriptHelper.includeScript(WCMScriptHelper.java:222) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at com.adobe.cq.sightly.internal.extensions.IncludeExtension.call(IncludeExtension.java:72) [com.adobe.cq.sightly.cq-wcm-sightly-extension:1.6.0]
	at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl.call(RenderContextImpl.java:77) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.sightly.apps.core.cif.components.structure.page.v1.page.page_html.render(page_html.java:143)
	at org.apache.sling.scripting.sightly.render.RenderUnit.render(RenderUnit.java:50) [org.apache.sling.scripting.sightly.runtime:1.1.0.1_4_0]
	at org.apache.sling.scripting.sightly.impl.engine.SightlyCompiledScript.eval(SightlyCompiledScript.java:60) [org.apache.sling.scripting.sightly:1.1.2.1_4_0]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:386) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:491) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilterWithErrorHandling(WCMDeveloperModeFilter.java:164) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDeveloperModeFilter.doFilter(WCMDeveloperModeFilter.java:135) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:217) [com.adobe.granite.csrf:1.0.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilterWithErrorHandling(WCMDebugFilter.java:192) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:159) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:278) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.page.PageLockFilter.doFilter(PageLockFilter.java:91) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:94) [com.day.cq.cq-personalization:5.12.36]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.dispatchRequest(SlingRequestProcessorImpl.java:322) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.dispatch(SlingRequestDispatcher.java:211) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.request.SlingRequestDispatcher.include(SlingRequestDispatcher.java:104) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter$ForwardRequestDispatcher.include(WCMComponentFilter.java:516) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.jsp.libs.cq.Page.Page_jsp._jspService(Page_jsp.java:117)
	at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [org.apache.sling.scripting.jsp:2.3.4]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [org.apache.felix.http.servlet-api:1.1.2]
	at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:502) [org.apache.sling.scripting.jsp:2.3.4]
	at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:449) [org.apache.sling.scripting.jsp:2.3.4]
	at org.apache.sling.scripting.jsp.JspScriptEngineFactory.callJsp(JspScriptEngineFactory.java:342) [org.apache.sling.scripting.jsp:2.3.4]
	at org.apache.sling.scripting.jsp.JspScriptEngineFactory.access$100(JspScriptEngineFactory.java:97) [org.apache.sling.scripting.jsp:2.3.4]
	at org.apache.sling.scripting.jsp.JspScriptEngineFactory$JspScriptEngine.eval(JspScriptEngineFactory.java:603) [org.apache.sling.scripting.jsp:2.3.4]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:388) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:491) [org.apache.sling.scripting.core:2.0.56]
	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:156) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMComponentFilter.filterRootInclude(WCMComponentFilter.java:375) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:190) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.page.PageLockFilter.doFilter(PageLockFilter.java:91) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:94) [com.day.cq.cq-personalization:5.12.36]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:76) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:78) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.warp.TimeWarpFilter.doFilter(TimeWarpFilter.java:109) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.cq.social.ugcbase.security.impl.SaferSlingPostServlet.doFilter(SaferSlingPostServlet.java:114) [com.adobe.cq.social.cq-social-ugcbase-impl:2.5.2]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:78) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:78) [org.apache.sling.engine:2.6.18]
	at com.day.cq.dam.core.impl.servlet.ActivityRecordHandler.doFilter(ActivityRecordHandler.java:141) [com.day.cq.dam.cq-dam-core:5.12.164]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler.doFilter(AdhocAssetShareAuthHandler.java:437) [com.day.cq.dam.cq-dam-core:5.12.164]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.rest.impl.servlet.ApiResourceFilter.doFilter(ApiResourceFilter.java:70) [com.adobe.granite.rest.api:1.1.16]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.requests.logging.impl.RequestLoggerImpl.doFilter(RequestLoggerImpl.java:134) [com.adobe.granite.requests.logging:1.0.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.rest.assets.impl.AssetContentDispositionFilter.doFilter(AssetContentDispositionFilter.java:96) [com.adobe.granite.rest.assets:1.0.58]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:217) [com.adobe.granite.csrf:1.0.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.doFilter(AuthoringUIModeServiceImpl.java:372) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter.doFilter(RedirectFilter.java:248) [com.day.cq.wcm.cq-wcm-mobile-core:5.11.10]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.cq.commerce.core.components.internal.servlets.SpecificPageFilterFactory.doFilter(SpecificPageFilterFactory.java:97) [com.adobe.commerce.cif.core-cif-components-core:0.6.0]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:107) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.cq.social.commons.cors.CORSAuthenticationFilter.doFilter(CORSAuthenticationFilter.java:91) [com.adobe.cq.social.cq-social-commons:1.10.70]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.foundation.forms.FormsHandlingServletHelper.handleFilter(FormsHandlingServletHelper.java:226) [com.day.cq.wcm.cq-wcm-foundation:5.12.20]
	at com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet.doFilter(FormsHandlingServlet.java:138) [com.day.cq.wcm.cq-wcm-foundation:5.12.20]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.optout.impl.OptOutFilter.doFilter(OptOutFilter.java:76) [com.adobe.granite.optout:1.0.0]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.foundation.forms.FormsHandlingServletHelper.handleFilter(FormsHandlingServletHelper.java:226) [com.day.cq.wcm.cq-wcm-foundation:5.12.20]
	at com.adobe.cq.wcm.core.components.internal.servlets.CoreFormHandlingServlet.doFilter(CoreFormHandlingServlet.java:126) [com.adobe.cq.core.wcm.components.core:2.7.0]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.day.cq.wcm.core.impl.WCMRequestFilter.doFilter(WCMRequestFilter.java:90) [com.day.cq.wcm.cq-wcm-core:5.12.90]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.cq.history.impl.HistoryRequestFilter.doFilter(HistoryRequestFilter.java:122) [com.adobe.cq.cq-history:5.10.6]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.cq.mcm.campaign.servlets.CampaignCopyTracker.doFilter(CampaignCopyTracker.java:100) [com.day.cq.mcm.cq-mcm-campaign:1.3.12]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.rewriter.impl.RewriterFilter.doFilter(RewriterFilter.java:87) [org.apache.sling.rewriter:1.2.2]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.httpcache.impl.InnerCacheFilter.doFilter(InnerCacheFilter.java:81) [com.adobe.granite.httpcache.core:1.0.8]
	at com.adobe.granite.httpcache.impl.InnerCacheFilter.doFilter(InnerCacheFilter.java:60) [com.adobe.granite.httpcache.core:1.0.8]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:131) [org.apache.sling.i18n:2.5.14]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.security.impl.ContentDispositionFilter.doFilter(ContentDispositionFilter.java:152) [org.apache.sling.security:1.1.16]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:78) [org.apache.sling.engine:2.6.18]
	at com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl.doFilter(ResourceResolverHelperImpl.java:83) [com.adobe.granite.resourceresolverhelper:1.0.4]
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:151) [org.apache.sling.engine:2.6.18]
	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:244) [org.apache.sling.engine:2.6.18]
	at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:123) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:86) [org.apache.felix.http.jetty:4.0.8]
	at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:308) [com.adobe.granite.license:1.2.10]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:131) [org.apache.sling.i18n:2.5.14]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:116) [org.apache.sling.featureflags:1.2.2]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:72) [org.apache.sling.engine:2.6.18]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.sling.engine.impl.parameters.RequestParameterSupportConfigurer.doFilter(RequestParameterSupportConfigurer.java:63) [org.apache.sling.engine:2.6.18]
	at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.Dispatcher$1.doFilter(Dispatcher.java:146) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1002) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:326) [org.apache.sling.security:1.1.16]
	at org.apache.felix.http.base.internal.handler.PreprocessorHandler.handle(PreprocessorHandler.java:136) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1008) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:97) [org.apache.felix.http.sslfilter:1.2.6]
	at org.apache.felix.http.base.internal.handler.PreprocessorHandler.handle(PreprocessorHandler.java:136) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1008) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.invokePreprocessors(WhiteboardManager.java:1012) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:91) [org.apache.felix.http.jetty:4.0.8]
	at org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service(DispatcherServlet.java:49) [org.apache.felix.http.jetty:4.0.8]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) [org.apache.felix.http.servlet-api:1.1.2]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.Server.handle(Server.java:502) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) [org.apache.felix.http.jetty:4.0.8]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) [org.apache.felix.http.jetty:4.0.8]
	at java.lang.Thread.run(Thread.java:748)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.