Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn More

View all

Sign in to view all badges

Why the "uber-jar-6.5.5-sources.jar" does not contain the source code of all open source libraries and why the file "uber-jar-6.5.5-javadoc.jar" does not contain Javadoc for some proprietary code?

Avatar

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile
software_engineer
Level 2

03-03-2021

Hi, 

I have two questions which are related to the usage of the "uber-jar" in an IDE like Eclipse: 

 

Question 1) Why the file "uber-jar-6.5.5-sources.jar" does not contain at least the source code of the open source libraries which are included in the uber-jar? Why it is either empty or not provided by Adobe at all? 

For example, why it does not contain the source code of "org.apache.jackrabbit.api.security.user.UserManager"? 

At least the file "uber-jar-6.5.5-javadoc.jar" contains the Javadoc of the above-mentioned class, but why the file "uber-jar-6.5.5-sources.jar" does not contain its source code? It is an open source project and you can see links to its source repository here: https://jackrabbit.apache.org/jcr/source-repository.html

Therefore I do not understand why Adobe did not include it (and the source code of other open source libraries) in the file "uber-jar-6.5.5-sources.jar". 

In case if Adobe does not provide the "sources" file for its uber-jar at all (it is currently unavailable under the Adobe's public repo, as of 4th March 2021), then why Adobe does not provide it? 

 

Question 2) Why the file "uber-jar-6.5.5-javadoc.jar" does not contain at least the Javadoc of some proprietary classes which are not open source? (I don't mean their source code here as these seem to be some proprietary "closed" code of Adobe, but at least their Javadoc should be available.)

For example, why it does not contain at least the Javadoc of all classes which are located in the package "javax.jcr" and its sub-packages, like for example the class "javax.jcr.security.AccessControlManager"? 

 

It makes the life of an AEM developer who uses Eclipse more difficult. 

The problem with the file uber-jar-6.5.5-apis.jar is that in Eclipse you can only attach one jar file as a source of the Javadocs for it and also you can attach only one jar file as a source of the source code for it. 

For example, I can't specify for the file uber-jar-6.5.5-apis.jar in Eclipse multiple jar files with the source code of the Apache Jackrabbit library and multiple other open source libraries which are included in the uber-jar, if I already use the file "uber-jar-6.5.5-sources.jar" (or any other single jar file) as the source of the source code for it. 

I am used to being able to display all possible Javadocs and source codes of all libraries using the keys F2 and F3 in Eclipse. It disturbs my workflow and costs me additional time when I have to search for the Javadoc or source code of a given method/class in other places (e.g. on the Internet for each single open source library which is included in the Adobe's uber-jar). 

 

Does anyone know a solution to the above-mentioned problems? Or even better, will you Adobe fix these issues and make the life of the developers using your product easier? 

 

Thank you in advance for your answers. 

eclipse java Javadoc Open Source source code uber-jar uber-jar-6.5.5-apis.jar

Replies

Avatar

Avatar
Coach
Employee
jbrar
Employee

Likes

377 likes

Total Posts

867 posts

Correct Reply

283 solutions
Top badges earned
Coach
Establish
Give Back 50
Give Back 5
Give Back 3
View profile

Avatar
Coach
Employee
jbrar
Employee

Likes

377 likes

Total Posts

867 posts

Correct Reply

283 solutions
Top badges earned
Coach
Establish
Give Back 50
Give Back 5
Give Back 3
View profile
jbrar
Employee

03-03-2021

Hi,

 

I don't believe Adobe shares a file named "uber-jar-6.5.5-sources.jar". I could not find it under the public repo[1]

 

Also, user manager API details can be found at [2]. Is there anything specific you are looking for?

 

[1] https://repo.adobe.com/nexus/content/repositories/releases/com/adobe/aem/uber-jar/6.5.5/

 

[2] https://jackrabbit.apache.org/api/2.12/org/apache/jackrabbit/api/security/user/UserManager.html

 

Avatar

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile
software_engineer
Level 2

03-03-2021

Hi @jbrar, I can't find it neither under the public repo [1], because it is currently unavailable. When I go to that URL, using the Chrome browser, I receive an error "Error: Request Entity Too Large: head". I know that I had indeed accessed this repo in the past, because I also have it in my bookmarks, but now it doesn't work. I hope that Adobe will fix this issue also. Anyway, I am almost sure that we have received the file "uber-jar-6.5.5-sources.jar" from Adobe. However, if you know a different source of the source code for the uber-jar, then please tell me - hopefully it will be better than the file "uber-jar-6.5.5-sources.jar". Regarding the link [2] from your post - yes, that's actually what I had written in my question that it is available there. I asked why it is not included in the jar from Adobe if it is an open source project which is generally available.

 

Update: I have just checked that the file "uber-jar-6.5.5-sources.jar" (which is in my local Maven repo) is almost empty. It doesn't contain any source code at all. So, well, it's actually worse than I thought. Only the jar with Javadoc does contain something, but also with the limitations about which I asked in the question. Where can I get a jar file with all possible source code for the uber-jar? I don't expect Adobe to provide me its secret proprietary code, but at least the source code of all included open source libraries should be included in it, shouldn't it? I mean, in Eclipse I can set only one jar file as a source of the source code for the uber-jar (which includes lots of open source libraries), so I hope that Adobe provides it. - If it does not, then why? 

 

Update #2: I have found out that I can access the public repo [1] using the Firefox browser. I still get the above-mentioned error "Error: Request Entity Too Large: head" when I try to access it using the Chrome browser, but it works using Firefox. The file "uber-jar-6.5.5-sources.jar" is indeed currently (as of 4th March 2021) not listed there. So it's a mystery to me where it came from into our company's Nexus repo. The other people involved in our project didn't put it there manually. - Its last modification date there is on the 4th November 2020, similar to the other uber-jar files there. Maybe this file had been temporarily provided by Adobe earlier, but has been removed, because it's empty and useless? The source Adobe's repo for our Nexus repo is the following URL (the current contents there are the same as under the repo [1], i.e. currently the sources jar is unavailable there): 

[3] https://repo.adobe.com/nexus/content/groups/public/com/adobe/aem/uber-jar/6.5.5/

Anyway, even if we assume that Adobe currently does not provide the file "uber-jar-6.5.5-sources.jar", then why Adobe does not provide it?

Avatar

Avatar
Coach
Employee
jbrar
Employee

Likes

377 likes

Total Posts

867 posts

Correct Reply

283 solutions
Top badges earned
Coach
Establish
Give Back 50
Give Back 5
Give Back 3
View profile

Avatar
Coach
Employee
jbrar
Employee

Likes

377 likes

Total Posts

867 posts

Correct Reply

283 solutions
Top badges earned
Coach
Establish
Give Back 50
Give Back 5
Give Back 3
View profile
jbrar
Employee

04-03-2021

I checked Internally with a wider adobe audience and "uber-jar-6.5.5-sources.jar" is not a valid jar file. So, not sure how you got it in the first place. API and Javadoc jar is your best option.

Avatar

Avatar
Coach
Employee
jbrar
Employee

Likes

377 likes

Total Posts

867 posts

Correct Reply

283 solutions
Top badges earned
Coach
Establish
Give Back 50
Give Back 5
Give Back 3
View profile

Avatar
Coach
Employee
jbrar
Employee

Likes

377 likes

Total Posts

867 posts

Correct Reply

283 solutions
Top badges earned
Coach
Establish
Give Back 50
Give Back 5
Give Back 3
View profile
jbrar
Employee

04-03-2021

You can log a ticket with AEM support to get more details on this if you have any followup questions

Avatar

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile
software_engineer
Level 2

04-03-2021

Hi @jbrar, as I wrote above, the file "uber-jar-6.5.5-sources.jar" which we have is empty - it does not contain any source code, not even the source code of the open source libraries which are included in the uber-jar. - Please note that exactly these open source libraries and not the Adobe's proprietary code are the point about which I have asked in my question #1 regarding the source code. It's interesting to hear that the software developers at Adobe are able to use such a file with the source code internally and I wonder if it includes only the Adobe's proprietary (closed) source code or also the source code of all the open source libraries which are included in the uber-jar. This could explain why the software engineers at Adobe don't understand the pain of the technical customers of their AEM product, because they simply don't have the same problems in their everyday work.

You wrote: "it ["uber-jar-6.5.5-sources.jar"] was never supposed to be available to customers as it[']s Adobe's code". I suppose that we have some misunderstanding here. I am sure that the software engineers at Adobe are smart enough to know that the Apache Jackrabbit open source library and multiple other open source libraries which are included in the uber-jar are not Adobe's code. Therefore what you have written doesn't explain at all why Adobe doesn't provide a jar with the source code of all open source libraries which are included in the uber-jar.

I hope that some other people here will reply to my questions. - Maybe other software developers who managed to find a good solution for these problems. I hope also that someone at Adobe will read this and decide to make the AEM product better for its technical customers, i.e. for the developers who use this product outside of Adobe, by providing a jar with the source code of all open source libraries which are included in the uber-jar.

Avatar

Avatar
Coach
Employee
Jörg_Hoh
Employee

Likes

1,081 likes

Total Posts

3,121 posts

Correct Reply

1,061 solutions
Top badges earned
Coach
Give back 600
Ignite 5
Ignite 3
Ignite 1
View profile

Avatar
Coach
Employee
Jörg_Hoh
Employee

Likes

1,081 likes

Total Posts

3,121 posts

Correct Reply

1,061 solutions
Top badges earned
Coach
Give back 600
Ignite 5
Ignite 3
Ignite 1
View profile
Jörg_Hoh
Employee

07-03-2021

(Update)

 

I am using Eclipse as well, and I don't recall to have a problem with accessing the sourcecode of the opensource parts of AEM, even though they are not shipped. Honestly, I don't think that it is necessary, because by using maven and exact version numbers you (or Eclipse) can get the source packages directly from Maven central. 

 

Also, I haven't heard complaints about this yet, you are the first I know which requests the inclusion of these libraries.

Avatar

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile
software_engineer
Level 2

15-03-2021

(Updated)

Hi @Jörg_Hoh, thank you for updating your comment. It's great to hear that you have managed to solve this problem for you. Could you please share your knowledge with us and write how you managed to configure Eclipse so that after pressing the key F3 (for the command "Open Declaration") in your Java code on the type "org.apache.jackrabbit.api.security.user.UserManager", the source code of this class is displayed and at the same time (without changing the Java Source Attachment for the uber-jar before the next action) the same command can be used successfully on a class from a different open source library (from the uber-jar) in order to display also its source code?

Another, even better example, would be to press the key F3 on a call to a method of the class "org.apache.jackrabbit.api.security.user.UserManager" in your own Java code, for example on a call to the method "UserManager.getAuthorizable(Principal principal)". - Does Eclipse in your case jump to the source code of this method after pressing F3 and can you do the same for a method of a class from a different open source library (but also from the uber-jar), without changing the Java Source Attachment for the uber-jar between these two commands? 

In other words: How did you manage to attach in Eclipse the source code of more than one library for the single, big "uber-jar-6.5.5-apis.jar" which includes multiple open source libraries?

Did you maybe build your own sources jar for the uber-jar? - I mean, we thought about building a sources jar for the uber-jar on our own, but it requires some effort, has to be automated (extraction of the version numbers of the open source libraries from the uber-jar etc.) in order to build such a sources jar automatically for each new version of the uber-jar and most of all - we don't understand why Adobe doesn't provide such a sources jar which includes the source code of all open source libraries, considering that it would be much easier for Adobe to do it (because Adobe must have a build process for the uber-jar anyway, so adding a step for building a sources jar for it would be simple) than for each single development team using Adobe's product around the world to do it by themselves. 

 

Our team has configured (already earlier) our maven project configurations so that the source code of the required open source libraries (for example the source code of the open source Apache Jackrabbit library) is available to us in Eclipse in the "Open Type" window. - But this is the "best" solution that we know so far and it has the downside that we have to "manually" search for a given method in a class, instead of being able to see it immediately after pressing the F3 key. In other words - something what a developer in every usual Java project (at least in every Java project at which I have worked in my career until now) can do in a single step ("press F3 key on the method which source code you want to see"), has to be done in case of the open source libraries from the uber-jar in at least three steps (press Ctrl+Shift+T" to open the "Open Type" window, search for a class, select the found class (and remember not to select the one from the uber-jar, because it doesn't contain a source attachment...), press Enter or click on the selected class, search for a method which is interesting you in the opened source code of this class).

Another solution which I sometimes use is to attach in Eclipse a source code jar of a single open source library as the source code for the uber-jar. But this means that only the source code of this single library is available when pressing the F3 key for anything what comes from the uber-jar, until I change the source attachment for the uber-jar to another open source library. - This is obviously inefficient, because we use usually multiple open source libraries from the uber-jar in our code. 

- I hope that you found a better solution than these which we know. 

 

I also saw a partially similar, older question of another user "@jkpanera" here: https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/why-isn-t-debugging-easier... - Unfortunately, it does not have any accepted answer. It is not the same question as my two questions, but is partially similar (regarding the source code). 

Avatar

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile

Avatar
Validate 1
Level 2
software_engineer
Level 2

Likes

8 likes

Total Posts

19 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile
software_engineer
Level 2

15-03-2021

Please note that the answer of @jbrar does not answer the question #2 from my main "question" at all (regarding the javadoc jar). It only partially answers my first question (regarding the source code) and therefore I find this answer insufficient (please see my comment from ‎04-03-2021 above for more information regarding this part). I still hope that someone else will be able to provide me some helpful hints. I actually also hope that Adobe will decide to make its product better for the developers who use it.

Avatar

Avatar
Coach
Employee
Jörg_Hoh
Employee

Likes

1,081 likes

Total Posts

3,121 posts

Correct Reply

1,061 solutions
Top badges earned
Coach
Give back 600
Ignite 5
Ignite 3
Ignite 1
View profile

Avatar
Coach
Employee
Jörg_Hoh
Employee

Likes

1,081 likes

Total Posts

3,121 posts

Correct Reply

1,061 solutions
Top badges earned
Coach
Give back 600
Ignite 5
Ignite 3
Ignite 1
View profile
Jörg_Hoh
Employee

14-04-2021

@software_engineer: I think you are right. I just checked and found, that Javadoc is not displayed inline when hovering over a class- or method-name (complaining about missing source file). But I have a decompiler configured so jumping into the source code (decompiled on the fly) is possible. But IIUC that's not what you want to achieve.

 

After a bit of search I found https://stackoverflow.com/questions/310720/get-source-jar-files-attached-to-eclipse-for-maven-manage... which pointed me to some eclipse settings, which is currently downloading a ton of source and javadoc jar files. That seems to be quite promising.