Add-On Component Development Guide Resolved Comments Page

This page records the resolved comments on the Add-On Component Development Guide.

Return to Add-On Component Development Guide Comments Page

Comments

Comment ID Date Section, Page Number/URL Comment Status – (RESOLVED/UNRESOLVED)
tjquinn-001 20-Oct-2008 p. 85, first sentence after the completion of the table Sentence claims that implementations of WriteableArchive provide read and write access. In fact, the interface requires only that they provide write access. RESOLVED
tjquinn-002 20-Oct-2008 p. 87, second sentence "Once a Sniffer implementation has decided that it owns the deployment request artifact, the setUp method is called." is ambiguous as to whether GlassFish invokes the setUp method or whether the container developer should write the Sniffer's handles to invoke setUp. In fact, GlassFish will invoke this method. RESOLVED
tjquinn-003 20-Oct-2008 p. 87, remark 6-2 Jerome should weigh in on this also, but I think the reference to Repository on the Container SPI page is to the hk2 Repository interface, or more precisely an implementation of that interface provided by the container developer. The developer of the new container will create one or more OSGi modules that make up the container, modules which contain the classes and resources (property files, images, etc.) that the container will need as it runs. The Repository referred to here is (I believe) an implementation of the hk2 Repository interface that can locate and describe such modules. The hk2 library includes a DirectoryBasedRepository which implements the Repository interface for modules that reside as files in a directory. Did not hear from Jerome, but RESOLVED, I hope
tjquinn-004 20-Oct-2008 p. 87, remark 6-3 In line with the previous comment, a module (somewhat simplified) is a collection of classes, resources, and other files that can be loaded and unloaded as a unit. Modules are often implemented as JAR files with additional content in the manifest file to convey module-system information. The idea here is that the Sniffer, because the container developer knows what module(s) are needed by the container, can prepare the array of Module objects (which is the return value of the Sniffer.setUp method). Then GlassFish, with that list of modules needed by the container of which that sniffer is a part, can load them so it (GlassFish) can create an instance of that container's Deployer or Container implementations when it needs to. RESOLVED
tjquinn-005 20-Oct-2008 p. 88, getDeploymentConfigurations discussion (In case it helps...) An application of a given type might contain zero or more sets of configuration information. For example, a web application can contain two web-related deployment descriptors: web.xml (the standard web deployment descriptor) and sun-web.xml (the so-called runtime descriptor which is specific to GlassFish) but not all web apps will contain both. The getDeploymentConfigurations method lets GlassFish ask the container for all the different sets of configuration information in a given application - the one accessible by the ReadableArchive argument. The return value is a Map from a name the container chooses to the actual configuration information information associated with that name. Continuing the web example, the possible names are WEB-INF/web.xml and WEB-INF/sun-web.xml. GlassFish uses this method primarily to find out this configuration information so it can be made available to an administrator for customizing the application's configuration after he or she has deployed the app. This customization feature is only partially implemented in prelude but container developers should implement this method as the contract in the JavaDoc explains if they want to take advantage of the customization features when GlassFish supports them fully. RESOLVED
-- -- -- --  
anissa-001 22-Oct-2008 pg32, Remark3-3 I think it is ok to use add-on instead of plugin. I don't see any problem in that following paragraph RESOLVED
anissa-002 22-Oct-2008 pg 32 @Service The console provider allows the Enterprise Server runtime to efficiently locate all add-on components. This is not just for efficiency, it is required. Maybe we should remove this word. RESOLVED
anissa-003 22-Oct-2008 Remark3-4 If the user wants to rename the file from console-config.xml to something else, or they want to place this file in another location instead of under META-INF/admingui, they can generate the URL representation of that file and return it, instead of returning null, which means takes the default. RESOLVED
anissa-004 22-Oct-2008 pg 33 I found the paragraph 'About Administration Console Templates' very odd here. It doesn't give any more info about the template, and we are in the middle of discussing Integration point, how to specify it etc. Should we move this paragraph to some other place? We'd like to introduce these major concepts at the beginning. I don't think there's another logical place to put the section where it can easily be found.
anissa-005 22-Oct-2008 pg 35 Priority priority is compared among all the add-on module that targets the same parentId. They will be placed 'after' those that is in the original/core gui. eg. the added tree node. It will always be placed after all the other top level tree node, but it will be compared to the 'updateTool' tree node since the updateTool node is also from a add-on. RESOLVED
anissa-006 22-Oct-2008 pg 40, about tabs Maybe want to mention something about the session attribute "serverInstTabs". You need to set that to the jsf page name that correspond to that tab. Under the line where it says sampleSubTab1.jsf and sampleSubTab2.jsf are almost identical, tell the user to take a look at the setting of this session attribute. RESOLVED
anissa-007 22-Oct-2008 pg 41 Remark3-7 true for v3 prelude. monitoring and deployment is the only 'group' that you can add on. Or you can create your own group. RESOLVED
anissa-008 22-Oct-2008 pg42 Remark3-8 parent.location is NOT for the woodstock commonTask component. It is part of the javascript for onClick and onKeyPress. This is used to specify which page you want to go to when user click on it. RESOLVED
anissa-009 22-Oct-2008 pg 43, Remark3-9 the extra line got there by mistake. Also notice an error regarding the selectTreeNodeById. I have fixed and checked in another copy. Please update your workspace. RESOLVED
anissa-010 22-Oct-2008 pg 44, Remark3-10 Usually a type is specific to a page. There are other 'type' you have seen before, eg org.glassfish.admingui:commonTask. It is just that for the resources page, the type is 'org.glassfish.admingui:configuration RESOLVED assuming you mean org.glassfish.admingui:resources
anissa-011 22-Oct-2008 pg 92, Remark A-2 There isn't any limit for the priority. They are used to decide the location of the add on component IF there are more than 1 integration point in the page with the same type and same parent ID. They are just used for comparison, relative to each other. RESOLVED
anissa-012 22-Oct-2008 pg 93 list of parentId for tree node Note that webContainer and httpService comes from the GUI for web container management, this means that if console-web-gui package is not installed, and you use this as parentID to add sub-node to it,you won't see this. RESOLVED
anissa-013 22-Oct-2008 pg 94 Remark A-3 Answer is NO. They are unrelated. However, you want to point out that the sun:tab id must be the value for setting the session attribute. The id for the Integration Point only comes into the picture if you want to add anything under it, so that you can specify that as the parent Id. RESOLVED
anissa-014 22-Oct-2008 pg 94 RemarkA-4 There are no id value specified for your list here. We can easily add that, but we have passed timeline for v3 Prelude. You can mention that after v3 prelude, we will enhance the page so that all common task group in that page can be extended. RESOLVED
-- -- -- --  
ana-001 22-Oct-2008 Remark 3-11 It does not have to be at the top level. The user can put it in a directory and specify the location of the file. RESOLVED
ana-002 22-Oct-2008 p.49 I think you need to point out that if they require changes to the "theme" of the Administration Console they will need to create their own theme jar file with all necessary CSS properties and images required by the woodstock component. In order to accomplish this it is recommended that they use a script provided by woodstock to clone an existing theme and then modify files and properties as necessary(See http://webdev2.sun.com/woodstock-theme-doc/creating-themes.html

). Once the theme jar file is created it will need to be placed in the Administration Console's "WEB-INF\lib" directory in order for the woodstock theme component to load the theme. It is also necessary to modify your "myOwnBrand.properties" file with the name and version of your theme.

ana-003 22-Oct-2008 Branding Section I don't see any mention of how the "priority" property is used when the integration points are read. Since multiple branding plugins can be placed in the modules directory and only one branding and theme can be applied to the Administration Console, a priority feature was established to determine which branding images and theme will be used. Priority values are supported from 1 to 100 and the lower the number the higher the priority. RESOLVED
ana-A 23-Oct-2008 Remarks A-5 p.96 The key name should be "com.sun.webui.theme.DEFAULT_THEME". You can learn more about how this paramter is used on the following page: http://webdev2.sun.com/woodstock-theme-doc/creating-themes.html

RESOLVED
-- -- -- --  
sreeni-001 22-Oct-2008 pg. 19, The component must provide configuration data, management data, and monitoring data ? to other Enterprise Server components in the same way as other Enterprise Server components. I think this should be optional since some add-ons may not have the need for monitoring or management, based on our v3 architecture, even configuration is optional. Same applies to the next item. RESOLVED
sreeni-002 22-Oct-2008 Remark 4-2 Extending the asadmin utility does not provide access to server configuration. But it is automatically available thru dotted name infrastructure, for ex. asadmin list, get and set. We'll talk about configuration pluggability post prelude. RESOLVED
sreeni-003 22-Oct-2008 Remark 4-3 Could you pl. elaborate on what is missing ? RESOLVED
sreeni-004 22-Oct-2008 pg. 51, Changing the Brand of the of the asadmin CLI? It is not changing the Brand of the of the asadmin CLI but the product itself and the way it gets exposed thru admin cli. Pl.let me know if you need more clarification. RESOLVED
sreeni-005 22-Oct-2008 Remark 4-5 It is a good idea to talk about best practices/conventions for naming. RESOLVED
sreeni-006 22-Oct-2008 Remark 4-6 We could mention about annotations @Singleton @Perlookup to indicate whether the command needs to be created for each lookup or for the entire session. RESOLVED
sreeni-007 22-Oct-2008 Remark 4-7 Pl. see response to 4-6 RESOLVED
sreeni-008 22-Oct-2008 Remark 4-8 Thru @Service annotation and by virtue of implementing AdminCommand. Pl. let me know if you are looking for more. RESOLVED
sreeni-009 22-Oct-2008 Remark 4-9 Perhaps Jerome can clarify. RESOLVED
sreeni-010 22-Oct-2008 Remark 4-12 I think it should be obvious from simple description. RESOLVED
sreeni-012 22-Oct-2008 Remark 4-18 Can you elaborate pl. DECLINE See comment janey-19
sreeni-013 22-Oct-2008 pg. 60, Changing the Brand of the of the asadmin CLI Pl. refer my comment for pg. 51 RESOLVED
sreeni-014 22-Oct-2008 pg. 60 Pages 60 & 61 need to be changed and I'll send the details in a separate email RESOLVED
kenpaulsen-001 22-Oct-2008 p32 Remark 3-3 I think it is OK to rename it provided that when you mention the bundle or tell them where to find it or to use it that you make the filename clear.  
kenpaulsen-002 22-Oct-2008 p32 paragraph 4 You mention the "Hundred Kilobytes Kernel (HK2)". I am not certain, but I think should have the word "project" after it. Not sure if this name requires that or not... Have inquired, but leaving it out for the time being.
kenpaulsen-003 22-Oct-2008 p32 paragraph 5 Change this paragraph (which starts "To create a console provider...") to: Each Add-On Component contains a "console provider" implementation. This is a Java class that implements the org.glassfish.api.admingui.ConsoleProvider interface and uses the HK2 @Service annotation. The console provider allows your Add-On Component to specify where your integration point configuration file is located. This is how your Add-On Component communicates to the Console Add-On Component Service what customizations you will be making to the Administration Console. RESOLVED
kenpaulsen-004 22-Oct-2008 p33 Remark 3-4 If the user chooses for some reason to store the console-config.xml file in an different location, he would have to return a URL that points to that different location. Although we have not run into this situation, it may be possible for 2 plugins to exist in the same jar file... that would require 2 console-config.xml files which, obviously, can't have the same name. It would also be possible for the developer to return a URL which is resolved outside the jar file (i.e. a web service) which calculates the integration points based on the users credentials or day of the week, etc. I'm not sure if you want to put this information in this document, though... 99% of the time it should simply use the default and return null. Anyone advanced enough to want to do something else should already know that they can do it (it's a URL). RESOLVED
kenpaulsen-005 22-Oct-2008 p49 Remark 3-12 If your Add-On Component provides new content which you would like other people to extend, you may define your own Integration Point Types. For example, if you add a new page which provides tabs of monitoring information, you may want to allow others to add their own tabs to compliment your default tabs. This enables your page to behave like many of the existing Administration Console pages which may be extended by you or others. To do this, you simply need to decide on a Integration Point Type, and include a couple handlers in your JSF page. The Integration Point Type must be a unique identifier, a good choice might be the package name of your IntegrationPoint with a meaningful name appended to the end. Perhaps something like this: org.company.project:myMonitoringTabs If you would like others to be able to take advantage of this Integration Point, you should then document it at the GlassFish Integration Point Wiki (only do this if your content is publicly available). Once you have an Integration Point ID, your next step is to include the following code below the place in your JSF file where you would like to enable others to add their Integration Point implementations: ~UWC_TOKEN_START~1278938933053~UWC_TOKEN_END Change "clientId:of:root" to match the clientId of the outer-most component in which you want others to be able to add their content (in this example, the tabset is the most likely choice). Also include your Integration Point ID in place of "org.company.project:myMonitoringTabs". (Note: If you omit the "root" argument to includeIntegrations, all components on the entire page may be used for the "parentId" of the Integration Points.) That's it! You or others may not provide an Integration Point which will be integrated into this page. For more information about the "includeIntegrations" or "getUIComponent" handlers, see the JavaDoc. RESOLVED
kenpaulsen-006 22-Oct-2008 misc I updated the directives / events information on the JSFTemplating web site. You can find the latest documentation at: https://jsftemplating.java.net/doc

RESOLVED
kenpaulsen-007 22-Oct-2008 Many I uploaded an attachment to this wiki page called chap3.pdf. This PDF contains many notes and corrections to chapter 3. Please see the .pdf file for details. RESOLVED
jdlee-001 23-Oct-2008 B-2 I think that would be correct. RESOLVED
jdlee-002 23-Oct-2008 B-3 propSheetPropTableTemplate.tpl is the correct name, but I don't see it in the other wiki page. Perhaps it was fixed after you read it. RESOLVED
jdlee-003 23-Oct-2008 B-4 The phrase "is automatic" is probably a better choice. It's at least a little more professional. RESOLVED
jdlee-004 23-Oct-2008 B-5 propertySheetTemplate.tpl is the correct name. I will correct that table. RESOLVED
jdlee-005 23-Oct-2008 B-6 Fixed: "The id of the glassfish server configuration." RESOLVED
ana-A 23-Oct-2008 Remarks A-5 p.96 The key name should be "com.sun.webui.theme.DEFAULT_THEME". You can learn more about how this paramter is used on the following page: http://webdev2.sun.com/woodstock-theme-doc/creating-themes.html

RESOLVED
sreeni-015 24-Oct-2008 Remark 5-2 Events are used to compute the monitoring statistics. @Param is used to compute the statistic and @Param itsel is not a statistic. RESOLVED
sreeni-016 24-Oct-2008 Remark 5-3 One pager seems to be corrected. Pl. use the example as reference for this purpose. RESOLVED
sreeni-017 24-Oct-2008 Remark 5-4 If one wants to pass params as part of event then it needs to be declared as @ProbeParam annotation. For other requirements, I request Mahesh/Prashant to comment. RESOLVED
sreeni-018 24-Oct-2008 Remark 5-5 They do not have correspondence to dotted names. I think it is best not to provide complete description as this may change. Request Mahesh/Prashnt to comment. RESOLVED
sreeni-019 24-Oct-2008 pg. 69, Getting parent object MonitoringRuntimeDataRegistry holds references to top level server nodes and it is not used to return any node. One uses server node to start with and add the cild node at an appropriate place. RESOLVED
sreeni-020 24-Oct-2008 pg 70 I don't think we need a separate section on 'Creating Event Listeners' as the implementation of listener thru annotations is covered under 'Subscribing to Events From Event Provider Classes'. DECLINE after discussion with sreeni.
sreeni-021 24-Oct-2008 Remark 5-10 The returned handles could be used to enable/disable monitoring, for ex. the implementation for provider interface will now generate actual calls insted of no-ops RESOLVED
sreeni-022 24-Oct-2008 pg. 74, The example shows the definition of the ModuleProbeProvider interface. The event provider sends events when a request starts and stops. It is not request but whenever the count increments and decrements RESOLVED
sreeni-023 24-Oct-2008 chapter 5 I don't see writeup on asadmin monitor, did we decide not to have it for prelude ? RESOLVED I was told that this interface is not exposed at Prelude.
janey-01 24-Oct-2008 pg 51, Remark 4-2 No, extending the asadmin utility does not provide an easy access to config data. RESOLVEDRESOLVED
janey-02 24-Oct-2008 pg 51 Remark 4-3 I don't understand what is the import clauses.  
janey-03 24-Oct-2008 pg 52 Remark 4-5 That's a good idea. We should add a guideline and also make sure that commands are not duplicated. RESOLVED
janey-04 24-Oct-2008 pg 52 Remark 4-6 You want the command class to be stateless so that multiple clients can execute the command at the same time. RESOLVED
janey-05 24-Oct-2008 pg 52 Remark 4-7 use @Scoped(PerLookup.class) to instantiate a new instances of the command class.RESOLVED
janey-06 24-Oct-2008 pg 52 Remark 4-8 by using @Service RESOLVED
janey-07 24-Oct-2008 pg 53 Remark 4-9 There are two reasons I can think of why a setter method is useful. (1) data (field) encapsulation. (2) add code to validate the parameter before setting the field. RESOLVED
janey-08 24-Oct-2008 pg 55 Short form and Long form The example you have use -t and --terse. This option is used in local command. You may want to use -m and --monitor instead. RESOLVED
janey-09 24-Oct-2008 pg 55 Specifying te shortFomr of an Option Name Since password option is not used, please use a different example than -p and --password. Use -m and --monitor instead. RESOLVED
janey-10 24-Oct-2008 pg 55 Remark 4-10 Good idea. An example should be added. Example: @Param(acceptableValues="http-listener, iiop-listener"). The acceptable values are delimited by ",". RESOLVED
janey-11 24-Oct-2008 pg 55 Remark 4-11 Yes, and defaultValue example should also be added. Example: @Param(defaultValue="false") RESOLVED
janey-12 24-Oct-2008 pg 56 Remark 4-12 Not sure if there should be a guideline. The command developers determines if the parameter is required or optional. RESOLVED
janey-13 24-Oct-2008 pg 56 Examples Remove ... between @Param(name="bar", optional="true") and String renamedTooManyTimes. DECLINE The ... denotes the missing line of code that contains @Param in a later example.
janey-15 24-Oct-2008 pg 57-58 Remark 4-14 Agree with the remark that this section is incomplete especially the Example. The Example code should demonstrate how localized message is used. Let me know if you need help with this. DEFER
janey-16 24-Oct-2008 pg 59 Remark 4-15 Yes, the parameters are passed through AdminCommandContext RESOLVED
janey-19 24-Oct-2008 pg 59 Remark 4-18 Parameter is not removed. RESOLVED
janey-20 24-Oct-2008 pg 59 Remark 4-19 Yes, that is correct. public void execute(AdminCommandContext context). Command developer needs to implement the execute(AdminCommandContext context) method. RESOLVED