Details

    • Type: Task Task
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.2-EE-Beta
    • Fix Version/s: 2.0-Beta2, 2.0.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces

      Description


      It's important to have clear distinction between classes that are intended for application developers to use and those that are not. ICEfaces 2.0 packaging should be reviewed with this (and other technical considerations) in mind.

        Issue Links

          Activity

          Hide
          Ted Goddard added a comment -

          Packaging review can be discussed within this JIRA. For instance org/icefaces/push/Configuration.java is not specific to push and is not an application-developer class. Since we do not have the java.lang.* and com.sun.* separation common to Java (all classes for ICEfaces 2.0 belong to org.icefaces) we may wish to create org.icefaces.impl.* to indicate classes that are not of interest to application developers. Other strategies from existing open source projects should be included here.

          Show
          Ted Goddard added a comment - Packaging review can be discussed within this JIRA. For instance org/icefaces/push/Configuration.java is not specific to push and is not an application-developer class. Since we do not have the java.lang.* and com.sun.* separation common to Java (all classes for ICEfaces 2.0 belong to org.icefaces) we may wish to create org.icefaces.impl.* to indicate classes that are not of interest to application developers. Other strategies from existing open source projects should be included here.
          Hide
          Ken Fyten added a comment -

          Suggestion to isolate non-public classes/APIs under a single package.

          org.icefaces.impl
          org.icefaces.[public API classes go here in some reasonable tree]

          Show
          Ken Fyten added a comment - Suggestion to isolate non-public classes/APIs under a single package. org.icefaces.impl org.icefaces. [public API classes go here in some reasonable tree]
          Hide
          Deryk Sinotte added a comment - - edited

          From the core team status meeting and email threads on this topic, we've agreed to the following steps and changes:

          1) prune unnecessary/unused classes from the framework (see work related to ICE-5787)
          2) re-organize classes so that

          • public APIs are under org.icefaces.application which matches how JSF does it
          • non-public APIS are under org.icefaces.impl

          Initial re-packaging analysis:

          Good package, looking at renaming to ResourceRegistry. We have multiple paths of resource handling so we should rationalize this to a single path if possible.
          org/icefaces/application/DynamicResourceRegistry$Locator.class
          org/icefaces/application/DynamicResourceRegistry.class

          Move to org.icefaces.impl.* as an initial step. Replaced by the EnvUtils/EnvConfig classes and removed eventually
          org/icefaces/application/ExternalContextConfiguration.class

          Move to org.icefaces.impl.*
          org/icefaces/application/LazyPushManager$1.class
          org/icefaces/application/LazyPushManager$State.class
          org/icefaces/application/LazyPushManager.class

          Good package:
          org/icefaces/application/PortableRenderer.class
          org/icefaces/application/ProductInfo.class
          org/icefaces/application/PushRenderer$1.class
          org/icefaces/application/PushRenderer$2.class
          org/icefaces/application/PushRenderer.class

          Good package. We have multiple paths of resource handling so we should rationalize this to a single path if possible.
          org/icefaces/application/ResourceRegistry.class
          org/icefaces/application/ResourceRegistryHolder.class

          Move to impl (application use of WindowScopeManager?):
          org/icefaces/application/WindowELResolver.class
          org/icefaces/application/WindowScopeManager$1.class
          org/icefaces/application/WindowScopeManager$ReadyObservable.class
          org/icefaces/application/WindowScopeManager$ScopeMap.class
          org/icefaces/application/WindowScopeManager$State.class
          org/icefaces/application/WindowScopeManager.class

          Move to impl.
          org/icefaces/context/BasicResponseWriter.class
          org/icefaces/context/DOMPartialRenderCallback.class
          org/icefaces/context/DOMPartialViewContext$1.class
          org/icefaces/context/DOMPartialViewContext$2.class
          org/icefaces/context/DOMPartialViewContext$3.class
          org/icefaces/context/DOMPartialViewContext.class
          org/icefaces/context/DOMPartialViewContextFactory.class
          org/icefaces/context/DOMResponseWriter.class

          Move to impl. The event package is not my favourite name here as most of these are listeners and we're not really emitting any events but that's just minor semantics. We do need to go through and rationalize/factor/measure/optimize this list at some point as there's likely some common things being done. This is covered in ICE-5737.
          org/icefaces/event/AjaxDisabledList.class
          org/icefaces/event/AjaxDisabledWriter.class
          org/icefaces/event/BridgeSetup$1.class
          org/icefaces/event/BridgeSetup$2.class
          org/icefaces/event/BridgeSetup$3.class
          org/icefaces/event/BridgeSetup$4.class
          org/icefaces/event/BridgeSetup$JavascriptResourceOutput.class
          org/icefaces/event/BridgeSetup.class
          org/icefaces/event/DebugTagListener.class
          org/icefaces/event/DeltaSubmitPhaseListener$DeltaActionPortletRequest.class
          org/icefaces/event/DeltaSubmitPhaseListener$DeltaHttpServletRequest.class
          org/icefaces/event/DeltaSubmitPhaseListener.class
          org/icefaces/event/FormSubmit$1.class
          org/icefaces/event/FormSubmit.class
          org/icefaces/event/HeadBodyListener.class
          org/icefaces/event/JSFViewStateNavigationFix$1.class
          org/icefaces/event/JSFViewStateNavigationFix.class
          org/icefaces/event/MainEventListener.class
          org/icefaces/event/ScriptWriter.class
          org/icefaces/event/UIOutputWriter.class
          org/icefaces/event/WindowAndViewIDSetup$1.class
          org/icefaces/event/WindowAndViewIDSetup.class
          org/icefaces/event/WindowScopeSetup.class

          Move to impl for now. This class is a workaround for a problem with JSF standard messages renderer and should be removed when a fix is available.
          org/icefaces/faces/renderkit/html_basic/MessagesRenderer.class

          Move to impl for now. All configuration related changes should be ported to use EnvUtils where appropriate.
          org/icefaces/push/Configuration.class
          org/icefaces/push/ConfigurationException.class

          Move to impl for now. Many of these classes likely not necessary as they were used in ICEfaces 1.8 to virtualize Request/Response artifacts when doing Ajax Push. Now that Push has been re-designed, the virtualization is no longer necessary (see ICE-5787).
          org/icefaces/push/CurrentContext.class
          org/icefaces/push/DisposeWindowScope.class
          org/icefaces/push/DynamicResourceDispatcher$1.class
          org/icefaces/push/DynamicResourceDispatcher$ExtendedResourceOptions.class
          org/icefaces/push/DynamicResourceDispatcher$FileNameOption.class
          org/icefaces/push/DynamicResourceDispatcher$Mapping.class
          org/icefaces/push/DynamicResourceDispatcher$RelativeResourceLinker.class
          org/icefaces/push/DynamicResourceDispatcher$ResourceServer$1.class
          org/icefaces/push/DynamicResourceDispatcher$ResourceServer$ResourceOptions.class
          org/icefaces/push/DynamicResourceDispatcher$ResourceServer.class
          org/icefaces/push/DynamicResourceDispatcher.class
          org/icefaces/push/SessionBoundServer$1.class
          org/icefaces/push/SessionBoundServer$2.class
          org/icefaces/push/SessionBoundServer.class
          org/icefaces/push/SessionViewManager$1.class
          org/icefaces/push/SessionViewManager$State.class
          org/icefaces/push/SessionViewManager.class
          org/icefaces/push/http/AbstractServer.class
          org/icefaces/push/http/DynamicResource$Options.class
          org/icefaces/push/http/DynamicResource.class
          org/icefaces/push/http/DynamicResourceLinker$Handler.class
          org/icefaces/push/http/DynamicResourceLinker.class
          org/icefaces/push/http/MimeTypeMatcher.class
          org/icefaces/push/http/Request$Environment.class
          org/icefaces/push/http/Request.class
          org/icefaces/push/http/RequestProxy.class
          org/icefaces/push/http/Response.class
          org/icefaces/push/http/ResponseHandler.class
          org/icefaces/push/http/ResponseProxy.class
          org/icefaces/push/http/Server.class
          org/icefaces/push/http/ServerProxy.class
          org/icefaces/push/http/standard/CacheControlledServer$EnhancedRequest$1.class
          org/icefaces/push/http/standard/CacheControlledServer$EnhancedRequest.class
          org/icefaces/push/http/standard/CacheControlledServer.class
          org/icefaces/push/http/standard/CompressingServer$CompressingRequest$1.class
          org/icefaces/push/http/standard/CompressingServer$CompressingRequest.class
          org/icefaces/push/http/standard/CompressingServer$CompressingResponse.class
          org/icefaces/push/http/standard/CompressingServer.class
          org/icefaces/push/http/standard/EmptyResponse$1.class
          org/icefaces/push/http/standard/EmptyResponse.class
          org/icefaces/push/http/standard/FixedSizeContentHandler.class
          org/icefaces/push/http/standard/FixedXMLContentHandler.class
          org/icefaces/push/http/standard/NoCacheContentHandler.class
          org/icefaces/push/http/standard/NotFoundHandler.class
          org/icefaces/push/http/standard/NotModifiedHandler.class
          org/icefaces/push/http/standard/OKHandler.class
          org/icefaces/push/http/standard/OKResponse.class
          org/icefaces/push/http/standard/PathDispatcherServer.class
          org/icefaces/push/http/standard/ResponseHandlerServer.class
          org/icefaces/push/http/standard/StreamingContentHandler.class
          org/icefaces/push/http/standard/StringContentHandler.class
          org/icefaces/push/servlet/BasicAdaptingServlet.class
          org/icefaces/push/servlet/ICEfacesResourceHandler$1.class
          org/icefaces/push/servlet/ICEfacesResourceHandler$2.class
          org/icefaces/push/servlet/ICEfacesResourceHandler.class
          org/icefaces/push/servlet/ICEpushResourceHandler.class
          org/icefaces/push/servlet/PathDispatcher.class
          org/icefaces/push/servlet/ProxyHttpSession.class
          org/icefaces/push/servlet/PseudoServlet.class
          org/icefaces/push/servlet/ServletContextConfiguration.class
          org/icefaces/push/servlet/ServletEnvironmentListener.class
          org/icefaces/push/servlet/ServletRequestResponse.class
          org/icefaces/push/servlet/SessionDispatcher$1.class
          org/icefaces/push/servlet/SessionDispatcher$Monitor.class
          org/icefaces/push/servlet/SessionDispatcher.class
          org/icefaces/push/servlet/SessionExpiredException.class

          Move to impl. Consider mirroring Sun's package structure when we implement stuff like this (com.sun.faces.renderkit = org.icefaces.renderkit).
          org/icefaces/render/DOMRenderKit.class

          Move to impl.
          org/icefaces/util/Base64.class
          org/icefaces/util/CoreUtils.class
          org/icefaces/util/DOMUtils.class
          org/icefaces/util/EnvConfig.class

          Good package:
          org/icefaces/util/EnvUtils.class

          Show
          Deryk Sinotte added a comment - - edited From the core team status meeting and email threads on this topic, we've agreed to the following steps and changes: 1) prune unnecessary/unused classes from the framework (see work related to ICE-5787 ) 2) re-organize classes so that public APIs are under org.icefaces.application which matches how JSF does it non-public APIS are under org.icefaces.impl Initial re-packaging analysis: Good package, looking at renaming to ResourceRegistry. We have multiple paths of resource handling so we should rationalize this to a single path if possible. org/icefaces/application/DynamicResourceRegistry$Locator.class org/icefaces/application/DynamicResourceRegistry.class Move to org.icefaces.impl.* as an initial step. Replaced by the EnvUtils/EnvConfig classes and removed eventually org/icefaces/application/ExternalContextConfiguration.class Move to org.icefaces.impl.* org/icefaces/application/LazyPushManager$1.class org/icefaces/application/LazyPushManager$State.class org/icefaces/application/LazyPushManager.class Good package: org/icefaces/application/PortableRenderer.class org/icefaces/application/ProductInfo.class org/icefaces/application/PushRenderer$1.class org/icefaces/application/PushRenderer$2.class org/icefaces/application/PushRenderer.class Good package. We have multiple paths of resource handling so we should rationalize this to a single path if possible. org/icefaces/application/ResourceRegistry.class org/icefaces/application/ResourceRegistryHolder.class Move to impl (application use of WindowScopeManager?): org/icefaces/application/WindowELResolver.class org/icefaces/application/WindowScopeManager$1.class org/icefaces/application/WindowScopeManager$ReadyObservable.class org/icefaces/application/WindowScopeManager$ScopeMap.class org/icefaces/application/WindowScopeManager$State.class org/icefaces/application/WindowScopeManager.class Move to impl. org/icefaces/context/BasicResponseWriter.class org/icefaces/context/DOMPartialRenderCallback.class org/icefaces/context/DOMPartialViewContext$1.class org/icefaces/context/DOMPartialViewContext$2.class org/icefaces/context/DOMPartialViewContext$3.class org/icefaces/context/DOMPartialViewContext.class org/icefaces/context/DOMPartialViewContextFactory.class org/icefaces/context/DOMResponseWriter.class Move to impl. The event package is not my favourite name here as most of these are listeners and we're not really emitting any events but that's just minor semantics. We do need to go through and rationalize/factor/measure/optimize this list at some point as there's likely some common things being done. This is covered in ICE-5737 . org/icefaces/event/AjaxDisabledList.class org/icefaces/event/AjaxDisabledWriter.class org/icefaces/event/BridgeSetup$1.class org/icefaces/event/BridgeSetup$2.class org/icefaces/event/BridgeSetup$3.class org/icefaces/event/BridgeSetup$4.class org/icefaces/event/BridgeSetup$JavascriptResourceOutput.class org/icefaces/event/BridgeSetup.class org/icefaces/event/DebugTagListener.class org/icefaces/event/DeltaSubmitPhaseListener$DeltaActionPortletRequest.class org/icefaces/event/DeltaSubmitPhaseListener$DeltaHttpServletRequest.class org/icefaces/event/DeltaSubmitPhaseListener.class org/icefaces/event/FormSubmit$1.class org/icefaces/event/FormSubmit.class org/icefaces/event/HeadBodyListener.class org/icefaces/event/JSFViewStateNavigationFix$1.class org/icefaces/event/JSFViewStateNavigationFix.class org/icefaces/event/MainEventListener.class org/icefaces/event/ScriptWriter.class org/icefaces/event/UIOutputWriter.class org/icefaces/event/WindowAndViewIDSetup$1.class org/icefaces/event/WindowAndViewIDSetup.class org/icefaces/event/WindowScopeSetup.class Move to impl for now. This class is a workaround for a problem with JSF standard messages renderer and should be removed when a fix is available. org/icefaces/faces/renderkit/html_basic/MessagesRenderer.class Move to impl for now. All configuration related changes should be ported to use EnvUtils where appropriate. org/icefaces/push/Configuration.class org/icefaces/push/ConfigurationException.class Move to impl for now. Many of these classes likely not necessary as they were used in ICEfaces 1.8 to virtualize Request/Response artifacts when doing Ajax Push. Now that Push has been re-designed, the virtualization is no longer necessary (see ICE-5787 ). org/icefaces/push/CurrentContext.class org/icefaces/push/DisposeWindowScope.class org/icefaces/push/DynamicResourceDispatcher$1.class org/icefaces/push/DynamicResourceDispatcher$ExtendedResourceOptions.class org/icefaces/push/DynamicResourceDispatcher$FileNameOption.class org/icefaces/push/DynamicResourceDispatcher$Mapping.class org/icefaces/push/DynamicResourceDispatcher$RelativeResourceLinker.class org/icefaces/push/DynamicResourceDispatcher$ResourceServer$1.class org/icefaces/push/DynamicResourceDispatcher$ResourceServer$ResourceOptions.class org/icefaces/push/DynamicResourceDispatcher$ResourceServer.class org/icefaces/push/DynamicResourceDispatcher.class org/icefaces/push/SessionBoundServer$1.class org/icefaces/push/SessionBoundServer$2.class org/icefaces/push/SessionBoundServer.class org/icefaces/push/SessionViewManager$1.class org/icefaces/push/SessionViewManager$State.class org/icefaces/push/SessionViewManager.class org/icefaces/push/http/AbstractServer.class org/icefaces/push/http/DynamicResource$Options.class org/icefaces/push/http/DynamicResource.class org/icefaces/push/http/DynamicResourceLinker$Handler.class org/icefaces/push/http/DynamicResourceLinker.class org/icefaces/push/http/MimeTypeMatcher.class org/icefaces/push/http/Request$Environment.class org/icefaces/push/http/Request.class org/icefaces/push/http/RequestProxy.class org/icefaces/push/http/Response.class org/icefaces/push/http/ResponseHandler.class org/icefaces/push/http/ResponseProxy.class org/icefaces/push/http/Server.class org/icefaces/push/http/ServerProxy.class org/icefaces/push/http/standard/CacheControlledServer$EnhancedRequest$1.class org/icefaces/push/http/standard/CacheControlledServer$EnhancedRequest.class org/icefaces/push/http/standard/CacheControlledServer.class org/icefaces/push/http/standard/CompressingServer$CompressingRequest$1.class org/icefaces/push/http/standard/CompressingServer$CompressingRequest.class org/icefaces/push/http/standard/CompressingServer$CompressingResponse.class org/icefaces/push/http/standard/CompressingServer.class org/icefaces/push/http/standard/EmptyResponse$1.class org/icefaces/push/http/standard/EmptyResponse.class org/icefaces/push/http/standard/FixedSizeContentHandler.class org/icefaces/push/http/standard/FixedXMLContentHandler.class org/icefaces/push/http/standard/NoCacheContentHandler.class org/icefaces/push/http/standard/NotFoundHandler.class org/icefaces/push/http/standard/NotModifiedHandler.class org/icefaces/push/http/standard/OKHandler.class org/icefaces/push/http/standard/OKResponse.class org/icefaces/push/http/standard/PathDispatcherServer.class org/icefaces/push/http/standard/ResponseHandlerServer.class org/icefaces/push/http/standard/StreamingContentHandler.class org/icefaces/push/http/standard/StringContentHandler.class org/icefaces/push/servlet/BasicAdaptingServlet.class org/icefaces/push/servlet/ICEfacesResourceHandler$1.class org/icefaces/push/servlet/ICEfacesResourceHandler$2.class org/icefaces/push/servlet/ICEfacesResourceHandler.class org/icefaces/push/servlet/ICEpushResourceHandler.class org/icefaces/push/servlet/PathDispatcher.class org/icefaces/push/servlet/ProxyHttpSession.class org/icefaces/push/servlet/PseudoServlet.class org/icefaces/push/servlet/ServletContextConfiguration.class org/icefaces/push/servlet/ServletEnvironmentListener.class org/icefaces/push/servlet/ServletRequestResponse.class org/icefaces/push/servlet/SessionDispatcher$1.class org/icefaces/push/servlet/SessionDispatcher$Monitor.class org/icefaces/push/servlet/SessionDispatcher.class org/icefaces/push/servlet/SessionExpiredException.class Move to impl. Consider mirroring Sun's package structure when we implement stuff like this (com.sun.faces.renderkit = org.icefaces.renderkit). org/icefaces/render/DOMRenderKit.class Move to impl. org/icefaces/util/Base64.class org/icefaces/util/CoreUtils.class org/icefaces/util/DOMUtils.class org/icefaces/util/EnvConfig.class Good package: org/icefaces/util/EnvUtils.class
          Hide
          Deryk Sinotte added a comment -

          Working on pruning unused classes and then testing should proceed before we do the repackaging.

          Show
          Deryk Sinotte added a comment - Working on pruning unused classes and then testing should proceed before we do the repackaging.
          Hide
          Deryk Sinotte added a comment -

          As outlined in the detailed analysis, the packaging adjustment has been completed.

          Show
          Deryk Sinotte added a comment - As outlined in the detailed analysis, the packaging adjustment has been completed.

            People

            • Assignee:
              Deryk Sinotte
              Reporter:
              Ted Goddard
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: