I have created a new component for the WKND tutorial project. Its html file has the following code:
I have created an interface com.adobe.aem.guides.wknd.core.models.components.ContentFragmentByURL.java that extends the interface ComponentExporter.
I have also created an implementation of my interface in com.adobe.aem.guides.wknd.core.models.components.impl.ContentFragmentByURLImpl.java
...
@Model(
adaptables = {SlingHttpServletRequest.class},
adapters = {ContentFragmentByURL.class, ComponentExporter.class},
resourceType = {ContentFragmentByURLImpl.RESOURCE_TYPE},
defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL
)
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
public class ContentFragmentByURLImpl implements ContentFragmentByURL{
protected static final String RESOURCE_TYPE = "wknd/components/contentfragmentbyurl";
...
I have created a package-info.java inside com.adobe.aem.guides.wknd.core.models.components.
I can generate the project and I can deploy it into a local AEM 6.5 instance.
If I go to http://localhost:4502/system/console/bundles I can see that my bundle "WKND Sites Project - Core (aem-guides-wknd.core)" is active.
If I go to http://localhost:4502/system/console/adapters I can see my adapters listed but the interface and its implementation appear in red color:
com.adobe.aem.guides.wknd.core.models.components.ContentFragmentByURL
com.adobe.cq.export.json.ComponentExporter
com.adobe.aem.guides.wknd.core.models.components.impl.ContentFragmentByURLImpl
If I compare it with the Byline example from the WKND tutorial, the interfacte Byline.java does not appear in red color:
com.adobe.aem.guides.wknd.core.models.Byline
com.adobe.aem.guides.wknd.core.models.impl.BylineImpl
If I go to http://localhost:4502/system/console/status-adapters I can see the interface and its implementation listed:
Adaptable: org.apache.sling.api.SlingHttpServletRequest Providing Bundle: org.apache.sling.models.impl Available Adapters: * com.adobe.aem.guides.wknd.core.models.components.ContentFragmentByURL * com.adobe.cq.export.json.ComponentExporter * com.adobe.aem.guides.wknd.core.models.components.impl.ContentFragmentByURLImpl
If I create a page and add my component, I get the following error:
31.10.2022 13:35:07.189 *ERROR* [127.0.0.1 [1667219707133] GET /content/wknd/language-masters/en/detalle-de-fragmento-de-contenido-04/jcr:content/root/container/contentfragmentbyurl.html HTTP/1.1] com.day.cq.wcm.core.impl.WCMDebugFilter Error during include of SlingRequestPathInfo: path='/content/wknd/language-masters/en/detalle-de-fragmento-de-contenido-04/jcr:content/root/container/contentfragmentbyurl', selectorString='null', extension='html', suffix='null'
org.apache.sling.api.SlingException: Cannot get DefaultSlingScript: Compilation errors in org/apache/sling/scripting/sightly/apps/wknd/components/contentfragmentbyurl/contentfragmentbyurl_html.java:
Line 43, column 1927 : com.adobe.aem.guides.wknd.core.models.components.ContentFragmentByURL cannot be resolved to a type
at ...
Caused by: org.apache.sling.scripting.sightly.SightlyException: Compilation errors in org/apache/sling/scripting/sightly/apps/wknd/components/contentfragmentbyurl/contentfragmentbyurl_html.java:
Line 43, column 1927 : com.adobe.aem.guides.wknd.core.models.components.ContentFragmentByURL cannot be resolved to a type
at ... 141 common frames omitted
Can anybody, please, spot what I am missing?
Thanks in advance.
Views
Replies
Total Likes
My local instance is an Adobe Experience Manager 6.5.14.0 and I am using the latest WKND tutorial code available at https://github.com/adobe/aem-guides-wknd.
Hi @manuel_óscars89,
I believe the implementation is not correct.
The proper way to extend Core Components model is to use delegation pattern. Here is the similar question answered, kindly have a look [0].
Hope that helps!
Regards,
Santosh
Hi! I am not extending a Core Component. There is a project called Asset Share Commons (https://opensource.adobe.com/asset-share-commons/) in which they manage to show different images or videos using just one page instead of using one page per each image.
The way they have done this is by creating new components whose only purpose is to get an asset path for the URL suffix and then find that asset and render it.
I am trying to do the same for Content Fragments, which are another kind of asset in the DAM.
They did not extend the current Core Components but created new components. Here you can see a code example for images:
I am trying to replicate their success but for Content Fragments.
Thanks in advance for any help.
Hi Manuel,
glad to find a fellow sufferer...
I'm facing exactly the same issue when trying to install Asset Share Commons on a Vanilla AEM 6.5 op-prem instance. I tried various combinations of Asset Share Commons (versions 2.1.12 to 2.4.6) and AEM 6.5 (version 6.5.12.0 to 6.5.15.0) but always got the same error.
Have you find out what caused the problem and got a solution?
Thanks for a hint,
AEMazing greetings,
Chris
Views
Replies
Total Likes
Hi Chris,
Sadly I was moved to a different project and I have not found the time to get back to it yet.
If you ever find the cause, please, do not hesitate to tell me. I still don't understand what is causing it.
Best of luck!
Views
Replies
Total Likes
Please follow this example which is similar to your implementation.
Also, refer this link for information on similar kind of issue.
I faced same problem and I checked every thing; osgi bundles and web console sling adapters. Every thing seems correct and I was still facing the problem. And after adding package-info.java in my sub folder of sling model error disappeared.
Before adding the package-info.java my custom sling model appears red in http://localhost:4502/system/console/adapters. After adding the file the color change to black. I searched a lot why this color is red but I could not find.
Views
Likes
Replies