I'm currently working on a requirement to add a link to the top-half of the Lotus Connections 2.5 Business Card, linking off to a separate application. Part of the requirement is to open this separate application in a new window, rather than over-writing the window in which the user is currently accessing Connections or, at least, the Business Card.
Following the Information Centre here: -
Adding third-party links via the XML configuration file
I'm directed to modify LotusConnections-config.xml *AND* service-location.xsd
Now I'm quite happy to check out the configuration files: -
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython
execfile("/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/bin_lc_admin/connectionsConfig.py")
LCConfigService.checkOutConfig("/root","lc25Cell01")
and then hand edit LotusConnections-config.xml and service-location.xsd before checking them back in again: -
LCConfigService.checkInConfig()
and synchronise the nodes: -
synchAllNodes()
*BUT* I didn't expect the check in process to (a) not update the copy of service-location.xsd held within the cell configuration and (b) even worse, revert it back to it's pre-exported state.
The symptoms that I saw, when starting Profiles, were: -
9/6/10 15:04:11:420 BST] 0000002e VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigFileValidator$DefaultContentHandler error CLFRO2024I: Error Line 142: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
org.xml.sax.SAXParseException: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
...
[9/6/10 15:04:11:432 BST] 0000002e VenturaConfig E com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl getConfiguration CLFRO2001E: com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl Error processing config file: path /opt/IBM/WebSphere/AppServer/profiles/AppSrv01//config//cells//lc25Cell01//LotusConnections-config, filename LotusConnections-config.xml
com.ibm.ventura.internal.config.exception.ValidationException: cvc-enumeration-valid: Value 'googleService' is not facet-valid with respect to enumeration '[activities, blogs, communities, directory, dogear, personTag, presenceAwareness, profiles, sametimeLinks, homepage, quickr, search, wikis, files, global, news, mobile]'. It must be a value from the enumeration.
at com.ibm.ventura.internal.config.VenturaConfigFileValidator.validateDoc(VenturaConfigFileValidator.java:118)
at com.ibm.ventura.internal.config.VenturaConfigFileValidator.validateConfigurationFile(VenturaConfigFileValidator.java:79)
at com.ibm.ventura.internal.config.VenturaConfigurationProviderImpl.getConfiguration(VenturaConfigurationProviderImpl.java:370)
...
Now the exception makes it quite clear - I've referenced a service called googleService which doesn't exist in service-location.xsd *because* the check-in process didn't upload the changes.
This is the "vanilla" copy of the file: -
<xsd:simpleType name="serviceNames">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="activities" />
<xsd:enumeration value="blogs" />
<xsd:enumeration value="communities" />
<xsd:enumeration value="directory" />
<xsd:enumeration value="dogear" />
<xsd:enumeration value="personTag" />
<xsd:enumeration value="presenceAwareness" />
<xsd:enumeration value="profiles" />
<xsd:enumeration value="sametimeLinks" />
<xsd:enumeration value="homepage" />
<xsd:enumeration value="quickr" />
<xsd:enumeration value="search" />
<xsd:enumeration value="wikis" />
<xsd:enumeration value="files" />
<xsd:enumeration value="global" />
<xsd:enumeration value="news" />
<xsd:enumeration value="mobile" />
</xsd:restriction>
</xsd:simpleType>
and this is my edited version: -
<xsd:simpleType name="serviceNames">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="activities" />
<xsd:enumeration value="blogs" />
<xsd:enumeration value="communities" />
<xsd:enumeration value="directory" />
<xsd:enumeration value="dogear" />
<xsd:enumeration value="personTag" />
<xsd:enumeration value="presenceAwareness" />
<xsd:enumeration value="profiles" />
<xsd:enumeration value="sametimeLinks" />
<xsd:enumeration value="homepage" />
<xsd:enumeration value="quickr" />
<xsd:enumeration value="search" />
<xsd:enumeration value="wikis" />
<xsd:enumeration value="files" />
<xsd:enumeration value="global" />
<xsd:enumeration value="news" />
<xsd:enumeration value="mobile" />
<xsd:enumeration value="googleService" />
</xsd:restriction>
</xsd:simpleType>
Once I realised, all was well.
For the record, here's the entry that I added into LotusConnections-config.xml as per the Information Centre: -
<sloc:serviceReference serviceName="googleService"
href="http://www.google.com" enabled="true"
ssl_href="http://www.google.com" ssl_enabled="false"
person_card_service_url_pattern="/search?hl=en&q={email}&btnG=Google+Search"
person_card_service_name_js_eval="'Google Me'"/>
I'll keep hacking away to achieve my objective of opening the Google service in a new window, and report back.
Geeking in technology since 1985, with IBM Development, focused upon Docker and Kubernetes on the IBM Z LinuxONE platform In the words of Dr Cathy Ryan, "If you don't write it down, it never happened". To paraphrase one of my clients, "Every day is a school day". I do, I learn, I share. The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions. Remember, YMMV https://infosec.exchange/@davehay
Subscribe to:
Post Comments (Atom)
Note to self - use kubectl to query images in a pod or deployment
In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...
-
Why oh why do I forget this ? Running this command : - ldapsearch -h ad2012.uk.ibm.com -p 389 -D CN=bpmbind,CN=Users,DC=uk,DC=ibm,DC=com -w...
-
Error "ldap_sasl_interactive_bind_s: Unknown authentication method (-6)" on a LDAPSearch command ...Whilst building my mega Connections / Domino / Portal / Quickr / Sametime / WCM environment recently, I was using the LDAPSearch command tha...
-
Whilst building a new "vanilla" Kubernetes 1.25.4 cluster, I'd started the kubelet service via: - systemctl start kubelet.se...
8 comments:
hey David - is there a way to define another serviceReference, but to restrict access to it somehow? (e.g. an iNotes service only accessible to people with mail setup)
@Erik - I've not seen that particular requirement before; on my current project, we're looking at mapping JEE roles to certain user groups ( in Active Directory ) and/or using servlet filters. Can you expand upon the requirement further ? If needed, please email me to david_hay@uk.ibm.com, or ping me on Skype - david_hay
I was just customizing the navigation... adding links to some internal applications. In the same way LC shows or hides links based on whether a feature is installed and enabled or not (i.e. via ... in apps.jsp), I was wondering if I could do something similar for internal apps. For example, only HR folks would see the HR app link.
We do this today with a custom landing page app, but rolling out Connections - so trying to include same thing if possible.
gah - it stripped out: c:if test="${services.wikis}"
@Erik - thanks for the clarification; will have a chat with some smarter ( than me ) people, and see what we can do here.
Hi I dunno if you find your answer about why your .xml is breaking and also if it has already been fix on the cumulative fixes, but the problem reside on the special characters on the url of the service reference, you need to escape them such as & to "&" .. without the quotes.
Hope this helps :)
Ohh well the browser escaped the special character .. "&" + "#38;"
without quotemarks ..
@Jorge - thanks for this, I'll bear your kind advice in mind. Regards, Dave
Post a Comment