[
https://issues.apache.org/jira/browse/JS2-727?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ate Douma resolved JS2-727.
---------------------------
Resolution: Fixed
Most of the reported issues were genuine issues or bugs and I've reviewed and
applied almost all of the patches provided by Dennis.
A few exceptions though:
- Long.valueOf(long) is Java 5 API, so I couldn't apply that (yet).
- I didn't made PrefsPreferenceSetImpl Serializable as it also contains
Preferences instances which aren't serializable themselves.
Note: with the next major version 2.2 for jetspeed we're likely going to
provide a different back end for the preferences which will no longer be based
on Java Preferences
- For a few patches I've chosen a (slightly) different solution
- From the 5 remaining dubious issues as reported by Dennis, only the dead code
in PickANumberPortlet was worth or needed to be fixed, the others are ok
Thanks again Dennis for running the Jetspeed code base through FindBugs and
providing all the info and patches for the issues you found.
> Appy Findbugs patches
> ---------------------
>
> Key: JS2-727
> URL: https://issues.apache.org/jira/browse/JS2-727
> Project: Jetspeed 2
> Issue Type: Bug
> Affects Versions: 2.1.1
> Reporter: David Sean Taylor
> Assignee: Ate Douma
> Fix For: 2.1.1
>
> Attachments: findbugPatch-comments.txt, findBugs.patch
>
>
> As reported by Dennis Dam on the mailing list, fix the "Findbugs" errors. I
> don't think we need a new issue for each bug, so Im listing all here:
> The other day I found a case in a particular class where an argument for a
> constructor was actually not used. I found that was really confusing. So I
> thought: is there not a way to find these kinds of "bugs" automatically?
> That's how I stumbled upon an open source (LGPL, I think) eclipse plugin
> which .. finds bugs for you! It's called 'findbugs'
> (http://findbugs.sourceforge.net/). Installation instructions are at
> http://findbugs.sourceforge.net/manual/eclipse.html.
> It works like this:
> - select project
> - select "find bugs"
> .. and off you go, it finds bugs. In the case of jetspeed it found 566 bugs
> to be exact, which it categorizes in degrees of seriousness. 73 are flagged
> as "high prio ". I attached these problems in a logfile attached to this
> mail. I would highly recommend installing that plugin from what I've seen so
> far.
> The nastiest bugs I found:
> - nullpointer dereference
> - possible infinite loop
> - comparing strings with the == operator
> These three are in the logfile.
> If anyone knows better plugins, or has suggestions I'm glad to hear about it.
> regards,
> Dennis Dam
> Severity and Description Path Resource Location
> Creation Time Id
> H B ES: Comparison of String parameter using == or != in
> org.apache.jetspeed.capabilities.impl.CapabilityMapImpl.hasCapability(String)
>
> jetspeed-2/components/capability/src/java/org/apache/jetspeed/capabilities/impl
> CapabilityMapImpl.java line 185 1180475631635 7871
> H B ES: Comparison of String parameter using == or != in
> org.apache.jetspeed.capabilities.impl.CapabilityMapImpl.supportsMediaType(String)
>
> jetspeed-2/components/capability/src/java/org/apache/jetspeed/capabilities/impl
> CapabilityMapImpl.java line 231 1180475631635 7872
> H B ES: Comparison of String parameter using == or != in
> org.apache.jetspeed.serializer.objects.JSPermission.getClassForType(String)
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 80 1180475633214 8301
> H B HE: org.apache.jetspeed.capabilities.impl.ClientImpl defines equals and
> uses Object.hashCode()
> jetspeed-2/components/capability/src/java/org/apache/jetspeed/capabilities/impl
> ClientImpl.java line 58 1180475631635 7876
> H B HE: org.apache.jetspeed.capabilities.impl.MediaTypeImpl defines equals
> and uses Object.hashCode()
> jetspeed-2/components/capability/src/java/org/apache/jetspeed/capabilities/impl
> MediaTypeImpl.java line 67 1180475631635 7879
> H B HE: org.apache.jetspeed.cluster.NodeInformationImpl defines equals and
> uses Object.hashCode()
> jetspeed-2/components/portal/src/java/org/apache/jetspeed/cluster
> NodeInformationImpl.java line 90 1180475631651 7886
> H B HE:
> org.apache.jetspeed.components.portletregistry.MutablePortletApplicationProxy
> defines equals and uses Object.hashCode()
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletregistry
> MutablePortletApplicationProxy.java line 30 1180475631823 7912
> H B HE: org.apache.jetspeed.i18n.KeyedMessage defines equals and uses
> Object.hashCode()
> jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/i18n
> KeyedMessage.java line 549 1180475632792 7994
> H B HE: org.apache.jetspeed.portlet.webcontent.WebContentHistoryPage defines
> equals and uses Object.hashCode()
> jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/webcontent
> WebContentHistoryPage.java line 65 1180475632948 8109
> H B HE: org.apache.jetspeed.portlets.layout.LayoutEvent defines equals and
> uses Object.hashCode()
> jetspeed-2/layout-portlets/src/java/org/apache/jetspeed/portlets/layout
> LayoutEvent.java line 119 1180475632964 8120
> H B HE: org.apache.jetspeed.prefs.om.impl.NodeImpl defines equals and uses
> Object.hashCode()
> jetspeed-2/components/prefs/src/java/org/apache/jetspeed/prefs/om/impl
> NodeImpl.java line 243 1180475633073 8211
> H B HE: org.apache.jetspeed.profiler.rules.impl.RuleCriterionImpl defines
> equals and uses Object.hashCode()
> jetspeed-2/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl
> RuleCriterionImpl.java line 56 1180475633104 8216
> H B HE: org.apache.jetspeed.security.om.impl.InternalCredentialImpl defines
> equals and uses Object.hashCode()
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/om/impl
> InternalCredentialImpl.java line 359 1180475633136 8243
> H B HE: org.apache.jetspeed.security.om.impl.InternalGroupPrincipalImpl
> defines equals and uses Object.hashCode()
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/om/impl
> InternalGroupPrincipalImpl.java line 96 1180475633136 8244
> H B HE: org.apache.jetspeed.security.om.impl.InternalPermissionImpl defines
> equals and uses Object.hashCode()
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/om/impl
> InternalPermissionImpl.java line 188 1180475633136 8245
> H B HE: org.apache.jetspeed.security.om.impl.InternalRolePrincipalImpl
> defines equals and uses Object.hashCode()
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/om/impl
> InternalRolePrincipalImpl.java line 96 1180475633136 8246
> H B HE: org.apache.jetspeed.security.om.impl.InternalUserPrincipalImpl
> defines equals and uses Object.hashCode()
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/om/impl
> InternalUserPrincipalImpl.java line 121 1180475633136 8247
> H B HE: org.apache.jetspeed.statistics.impl.UserStatsImpl defines equals and
> uses Object.hashCode()
> jetspeed-2/components/statistics/src/java/org/apache/jetspeed/statistics/impl
> UserStatsImpl.java line 112 1180475633261 8343
> H B HE: org.apache.jetspeed.util.MimeType defines equals and uses
> Object.hashCode()
> jetspeed-2/components/portal/src/java/org/apache/jetspeed/util MimeType.java
> line 131 1180475633276 8353
> H B HE: org.apache.jetspeed.webapp.logging.IsolatedLog4JLogger defines equals
> and uses Object.hashCode()
> jetspeed-2/components/webapp-logging/src/java/org/apache/jetspeed/webapp/logging
> IsolatedLog4JLogger.java line 180 1180475633292 8370
> H B Se: Class org.apache.jetspeed.om.impl.LanguageSetImpl defines
> non-transient non-serializable instance field classLoader
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/impl
> LanguageSetImpl.java line 46 1180475632886 8040
> H B Se: Class
> org.apache.jetspeed.om.portlet.impl.PortletApplicationDefinitionImpl defines
> non-transient non-serializable instance field oid
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/portlet/impl
> PortletApplicationDefinitionImpl.java line 64 1180475632901 8059
> H B Se: Class org.apache.jetspeed.om.portlet.impl.PortletDefinitionImpl
> defines non-transient non-serializable instance field oid
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/portlet/impl
> PortletDefinitionImpl.java line 99 1180475632901 8064
> H B Se: Class org.apache.jetspeed.om.portlet.impl.PortletDefinitionImpl
> defines non-transient non-serializable instance field preferenceSet
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/portlet/impl
> PortletDefinitionImpl.java line 133 1180475632901 8065
> H B Se: Class
> org.apache.jetspeed.om.servlet.impl.WebApplicationDefinitionImpl defines
> non-transient non-serializable instance field oid
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/servlet/impl
> WebApplicationDefinitionImpl.java line 59 1180475632917 8072
> H B Se: Class org.apache.jetspeed.om.window.impl.PortletWindowImpl defines
> non-transient non-serializable instance field portletEntity
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/window/impl
> PortletWindowImpl.java line 41 1180475632917 8075
> H B Se: Class org.apache.jetspeed.security.PolicyWrapper defines
> non-transient non-serializable instance field policy
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security
> PolicyWrapper.java line 35 1180475633136 8238
> H B Se: The field
> org.apache.jetspeed.portalsite.impl.PortalSiteSessionContextImpl.folderPageHistory
> is transient but isn't set by deserialization
> jetspeed-2/components/portal-site/src/java/org/apache/jetspeed/portalsite/impl
> PortalSiteSessionContextImpl.java line 102 1180475632948 8101
> H B Se: The field
> org.apache.jetspeed.portlet.webcontent.WebContentResource.content is
> transient but isn't set by deserialization
> jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/webcontent
> WebContentResource.java line 32 1180475632964 8112
> H B Se: The field
> org.apache.jetspeed.portlets.profiler.ProfileCriterionForm.fallbackTypes is
> transient but isn't set by deserialization
> jetspeed-2/applications/j2-admin/src/java/org/apache/jetspeed/portlets/profiler
> ProfileCriterionForm.java line 73 1180475632979 8132
> H B Se: The field
> org.apache.jetspeed.portlets.profiler.ProfileCriterionForm.resolvers is
> transient but isn't set by deserialization
> jetspeed-2/applications/j2-admin/src/java/org/apache/jetspeed/portlets/profiler
> ProfileCriterionForm.java line 50 1180475632979 8133
> H B Se: The field
> org.apache.jetspeed.portlets.profiler.ProfileRuleForm.classnames is transient
> but isn't set by deserialization
> jetspeed-2/applications/j2-admin/src/java/org/apache/jetspeed/portlets/profiler
> ProfileRuleForm.java line 44 1180475632995 8136
> H B Se: The field org.apache.portals.gems.browser.DatabaseBrowserIterator.log
> is transient but isn't set by deserialization
> jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser
> DatabaseBrowserIterator.java line 37 1180475633308 8394
> H C EC: Call to equals() comparing unrelated class and interface in
> org.apache.jetspeed.decoration.DecorationFactoryImpl.getDecoration(Page,
> Fragment, RequestContext)
> jetspeed-2/components/portal/src/java/org/apache/jetspeed/decoration
> DecorationFactoryImpl.java line 142 1180475632120 7944
> H C EC: Call to equals() comparing unrelated class and interface in
> org.apache.jetspeed.portlets.rpad.RepositoryConfigHandler.endElement(String,
> String, String)
> jetspeed-2/applications/j2-admin/src/java/org/apache/jetspeed/portlets/rpad
> RepositoryConfigHandler.java line 129 1180475633011 8158
> H C HE: org.apache.jetspeed.webapp.logging.IsolatedLog4JLogger doesn't define
> a hashCode() method but is used in a hashed data structure
> jetspeed-2/components/webapp-logging/src/java/org/apache/jetspeed/webapp/logging
> IsolatedLog4JLogger.java line 143 1180475633292 8371
> H C IL: There is an apparent infinite recursive loop in
> org.apache.jetspeed.om.preference.impl.PrefsPreference.cloneValues()
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/om/preference/impl
> PrefsPreference.java line 464 1180475632901 8068
> H C MF: Field GetPortletsAction.log masks field in superclass
> org.apache.jetspeed.layout.impl.BasePortletAction
> jetspeed-2/components/portal/src/java/org/apache/jetspeed/layout/impl
> GetPortletsAction.java line 58 1180475632792 7998
> H C MF: Field TestSSOComponent.gms masks field in superclass
> org.apache.jetspeed.security.util.test.AbstractSecurityTestcase
> jetspeed-2/components/sso/src/test/org/apache/jetspeed/sso
> TestSSOComponent.java line 76 1180475633245 8321
> H C MF: Field TestSSOComponent.ums masks field in superclass
> org.apache.jetspeed.security.util.test.AbstractSecurityTestcase
> jetspeed-2/components/sso/src/test/org/apache/jetspeed/sso
> TestSSOComponent.java line 73 1180475633245 8322
> H C Nm: VERY confusing to have methods
> org.apache.jetspeed.om.page.TestPageObjectModel.setup() and
> junit.framework.TestCase.setUp()
> jetspeed-2/components/page-manager/src/test/org/apache/jetspeed/om/page
> TestPageObjectModel.java line 60 1180475632886 8045
> H C NP: ? could be null and is guaranteed to be dereferenced in
> org.apache.jetspeed.locator.JetspeedTemplateLocator.locateTemplate(LocatorDescriptor,
> String) jetspeed-2/components/locator/src/java/org/apache/jetspeed/locator
> JetspeedTemplateLocator.java line 212 1180475632854 8010
> H C NP: Null pointer dereference of pa in
> org.apache.jetspeed.portlets.palm.PortletApplicationLifecycleManager.processAction(ActionRequest,
> ActionResponse)
> jetspeed-2/applications/j2-admin/src/java/org/apache/jetspeed/portlets/palm
> PortletApplicationLifecycleManager.java line 121 1180475632964 8125
> H C RCN: Nullcheck of document at line 505 of value previously dereferenced
> in
> org.apache.jetspeed.page.document.psml.CastorFileSystemDocumentHandler.unmarshallDocument(Class,
> String, String)
> jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/document/psml
> CastorFileSystemDocumentHandler.java line 466 1180475632932
> 8088
> H C UMAC: Uncallable method
> org.apache.jetspeed.serializer.objects.JSNVPElement$1.isReferencable()
> defined in anonymous class
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSNVPElement.java line 1 1180475633214 8300
> H D DLS: Dead store to applicationScopeAttribute in
> org.apache.jetspeed.demo.simple.AttributeScopeServlet.processAction(ActionRequest,
> ActionResponse)
> jetspeed-2/applications/demo/src/java/org/apache/jetspeed/demo/simple
> AttributeScopeServlet.java line 120 1180475632464 7950
> H D DLS: Dead store to lastGuess in
> org.apache.jetspeed.demo.simple.PickANumberPortlet.doView(RenderRequest,
> RenderResponse)
> jetspeed-2/applications/demo/src/java/org/apache/jetspeed/demo/simple
> PickANumberPortlet.java line 151 1180475632526 7958
> H D ST: Write to static field
> org.apache.jetspeed.components.portletentity.PortletEntityImpl.pac from
> instance method
> org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess.setEntityAccessProxy(PortletEntityAccessComponent)
>
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity
> PersistenceBrokerPortletEntityAccess.java line 102
> 1180475631651 7900
> H D ST: Write to static field
> org.apache.jetspeed.components.portletentity.PortletEntityImpl.rcc from
> instance method
> org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess.PersistenceBrokerPortletEntityAccess(PortletRegistry,
> RequestContextComponent, boolean)
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity
> PersistenceBrokerPortletEntityAccess.java line 96 1180475631651
> 7898
> H D ST: Write to static field
> org.apache.jetspeed.components.portletentity.PortletEntityImpl.rcc from
> instance method
> org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess.PersistenceBrokerPortletEntityAccess(PortletRegistry,
> RequestContextComponent)
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity
> PersistenceBrokerPortletEntityAccess.java line 88 1180475631651
> 7896
> H D ST: Write to static field
> org.apache.jetspeed.components.portletentity.PortletEntityImpl.registry from
> instance method
> org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess.PersistenceBrokerPortletEntityAccess(PortletRegistry,
> RequestContextComponent, boolean)
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity
> PersistenceBrokerPortletEntityAccess.java line 95 1180475631651
> 7899
> H D ST: Write to static field
> org.apache.jetspeed.components.portletentity.PortletEntityImpl.registry from
> instance method
> org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess.PersistenceBrokerPortletEntityAccess(PortletRegistry,
> RequestContextComponent)
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity
> PersistenceBrokerPortletEntityAccess.java line 87 1180475631651
> 7897
> H D ST: Write to static field
> org.apache.jetspeed.components.portletentity.PortletEntityImpl.registry from
> instance method
> org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess.PersistenceBrokerPortletEntityAccess(PortletRegistry)
>
> jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity
> PersistenceBrokerPortletEntityAccess.java line 80 1180475631651
> 7895
> H D ST: Write to static field
> org.apache.jetspeed.prefs.impl.PreferencesFactoryImpl.prefsProvider from
> instance method
> org.apache.jetspeed.prefs.impl.PreferencesFactoryImpl.setPrefsProvider(PreferencesProvider)
> jetspeed-2/components/prefs/src/java/org/apache/jetspeed/prefs/impl
> PreferencesFactoryImpl.java line 97 1180475633073 8207
> H D ST: Write to static field
> org.apache.jetspeed.security.impl.LoginModuleProxyImpl.loginModuleProxy from
> instance method
> org.apache.jetspeed.security.impl.LoginModuleProxyImpl.LoginModuleProxyImpl(UserManager,
> String)
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/impl
> LoginModuleProxyImpl.java line 59 1180475633136 8239
> H D ST: Write to static field
> org.apache.jetspeed.services.JetspeedPortletServices.singleton from instance
> method
> org.apache.jetspeed.services.JetspeedPortletServices.JetspeedPortletServices(Map)
> jetspeed-2/commons/src/java/org/apache/jetspeed/services
> JetspeedPortletServices.java line 50 1180475633229 8314
> H D ST: Write to static field
> org.apache.jetspeed.sso.TestSSOComponent.ssoBroker from instance method
> org.apache.jetspeed.sso.TestSSOComponent.setUp()
> jetspeed-2/components/sso/src/test/org/apache/jetspeed/sso
> TestSSOComponent.java line 87 1180475633245 8323
> H P Dm: org.apache.jetspeed.engine.JetspeedEngine.shutdown() forces garbage
> collection; extremely dubious except in benchmarking code
> jetspeed-2/components/portal/src/java/org/apache/jetspeed/engine
> JetspeedEngine.java line 174 1180475632667 7975
> H V MS: org.apache.jetspeed.om.folder.psml.FolderMetaDataImpl.DOCUMENT_TYPE
> isn't final but should be
> jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml
> FolderMetaDataImpl.java line 41 1180475632886 8036
> H V MS:
> org.apache.jetspeed.page.impl.DatabasePageManagerCache.transactionedOperations
> isn't final but should be
> jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/impl
> DatabasePageManagerCache.java line 428 1180475632932 8093
> H V MS: org.apache.jetspeed.page.PageManagerUtils.log isn't final but should
> be jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page
> PageManagerUtils.java line 46 1180475632932 8083
> H V MS:
> org.apache.jetspeed.security.spi.impl.PasswordHistoryInterceptor.HISTORICAL_PASSWORD_CREDENTIAL
> isn't final but should be
> jetspeed-2/components/security/src/java/org/apache/jetspeed/security/spi/impl
> PasswordHistoryInterceptor.java line 58 1180475633136 8249
> H V MS: org.apache.jetspeed.serializer.objects.JSPermission.TYPE_FOLDER isn't
> final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 63 1180475633214 8302
> H V MS: org.apache.jetspeed.serializer.objects.JSPermission.TYPE_FRAGMENT
> isn't final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 65 1180475633214 8303
> H V MS: org.apache.jetspeed.serializer.objects.JSPermission.TYPE_PAGE isn't
> final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 67 1180475633214 8304
> H V MS: org.apache.jetspeed.serializer.objects.JSPermission.TYPE_PORTAL isn't
> final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 74 1180475633214 8305
> H V MS:
> org.apache.jetspeed.serializer.objects.JSPermission.TYPE_PORTALRESOURCE isn't
> final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 69 1180475633214 8306
> H V MS:
> org.apache.jetspeed.serializer.objects.JSPermission.TYPE_PORTALRESOURCECOLLECTION
> isn't final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 71 1180475633214 8307
> H V MS: org.apache.jetspeed.serializer.objects.JSPermission.TYPE_UNKNOWN
> isn't final but should be
> jetspeed-2/components/serializer/src/java/org/apache/jetspeed/serializer/objects
> JSPermission.java line 76 1180475633214 8308
> H V MS: org.apache.portals.gems.util.ValidationHelper.AMERICAN_DATE_FORMAT
> isn't final but should be
> jetspeed-2/applications/gems/src/java/org/apache/portals/gems/util
> ValidationHelper.java line 35 1180475633308 8399
> H V MS:
> org.apache.portals.gems.util.ValidationHelper.AMERICAN_DATETIME_FORMAT isn't
> final but should be
> jetspeed-2/applications/gems/src/java/org/apache/portals/gems/util
> ValidationHelper.java line 36 1180475633308 8398
> H V MS: org.apache.portals.gems.util.ValidationHelper.EUROPEAN_DATE_FORMAT
> isn't final but should be
> jetspeed-2/applications/gems/src/java/org/apache/portals/gems/util
> ValidationHelper.java line 33 1180475633308 8401
> H V MS:
> org.apache.portals.gems.util.ValidationHelper.EUROPEAN_DATETIME_FORMAT isn't
> final but should be
> jetspeed-2/applications/gems/src/java/org/apache/portals/gems/util
> ValidationHelper.java line 34 1180475633308 8400
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]