I invested some effort the make mmbase-rmmci.jar include all classes
which are needed to run mmbase 'remotely'.
If you have mmbase-rmmi.jar in your class-path, you don't need
mmbase.jar to make at least the junit bridge tests succeed.
'An sich' this is not very important, because it is no big disaster to
simply put mmbase.jar client side too.
But I think we feel that the need for that indicates that something is
badly designed. The classes needed by a 'remote' bridge user somehow
define what the bridge actually is, what the interface to MMBase is, and
we would like that to be clean, lean and neat.
So, based on the testcases defined in tests/bridge and runned by 'ant
run.bridge.rmmci' in tests, I say the bridge is (copied from
applications/rmmci/build.xml) approximately this:
<include name="org/mmbase/bridge/*"/> <!-- of
course -->
<include name="org/mmbase/bridge/util/**" /> <!--
not essential, but the idea is that you could use those with any bridge, so you
should want them -->
<include name="org/mmbase/storage/search/*"/> <!--
those interfaces are part of bridge -->
<include name="org/mmbase/datatypes/*" /> <!--
datatype classes are bridge -->
<include name="org/mmbase/security/UserContext.class"/> <!--
security classes are bridge -->
<include name="org/mmbase/security/AuthenticationData*.class"/> <!--
security classes are bridge -->
<include name="org/mmbase/security/Rank.class"/> <!--
security classes are bridge -->
<include name="org/mmbase/security/SecurityException.class"/> <!--
security classes are bridge -->
<include name="org/mmbase/util/functions/**" /> <!--
functions are bridge -->
<!-- perhaps we need _all_ of util ? -->
<include name="org/mmbase/util/logging/**"/> <!--
every class use, and it's no real burden to have it -->
<include name="org/mmbase/util/ResourceLoader*.class"/> <!--
well... -->
<include name="org/mmbase/util/ResourceWatcher*.class"/> <!--
-->
<include name="org/mmbase/util/LocalizedString.class"/> <!--
returned by bridge -->
<include name="org/mmbase/util/ReplacingLocalizedString*.class"/> <!--
returned by bridge -->
<include
name="org/mmbase/util/EncodingDetectingOutputStreamWriter.class"/> <!-- used by
resourceloader -->
<include name="org/mmbase/util/FileWatcher*.class"/> <!--
used by resourceloader -->
<include name="org/mmbase/util/Entry.class"/> <!--
used by LocalizedString -->
<include name="org/mmbase/util/LocalizedEntryListFactory.class"/> <!--
returned by DataType -->
<include name="org/mmbase/util/SizeMeasurable.class"/> <!--
implemented by several class -->
<include name="org/mmbase/util/Casting*.class"/> <!--
widely used -->
<include name="org/mmbase/util/StringBufferWriter.class"/> <!--
used by Casting -->
<include name="org/mmbase/util/Encode.class"/> <!--
general utility -->
<include name="org/mmbase/util/transformers/**.class"/> <!--
used by Encode -->
<include name="org/mmbase/util/xml/**"/>
<include name="org/mmbase/util/XMLEntityResolver*.class"/>
<!-- -->
<include name="org/mmbase/util/DynamicDate.class"/> <!--
used by Casting -->
<include name="org/mmbase/util/dateparser/**"/> <!--
used by Casting -->
<include name="org/mmbase/storage/Storable.class"/> <!--
DataTypes uses .. -->
<include name="org/mmbase/storage/StorageException.class"/> <!--
-->
<include name="org/mmbase/core/util/Fields.class"/> <!--
DataTypes uses .. -->
<include name="org/mmbase/core/*.class"/> <!--
DataTypes uses .. -->
<include name="org/mmbase/module/core/MMBaseObserver.class"/> <!--
resourcewatcher extends -->
<include name="org/mmbase/module/corebuilders/FieldDefs.class"/> <!--
DataTypes uses .. -->
<!-- external interfaces used by bridge, but not always present client
side, so provide them. -->
<include name="org/w3c/dom/Document.class"/>
<include name="org/w3c/dom/Node.class"/>
<include name="org/w3c/dom/Element.class"/>
<include name="javax/servlet/ServletRequest.class"/>
<include name="javax/servlet/ServletResponse.class"/>
<include name="javax/servlet/http/HttpServletRequest.class"/>
<include name="javax/servlet/http/HttpServletResponse.class"/>
I have changed ResourceLoader to load resources using bridge rather then
core, just from an idea that util and bridge may use each other (because
util seems to be 'part' of bridge any way), but that util may not use
core. Perhaps some other classes in util are included unnecessary, but I
think the general idea here is that utils can of course be used by the
entire world; they are mere utils...
Furthermore I'd say it would be nice if we could somehow drop org.mmbase.core*
and
org.mmbase.storage.* from this list, because they seem misplaced in 'bridge'.
But, please feel free to ventilate your thoughts about this.
Michiel
--
Michiel Meeuwissen mihxil'
Peperbus 111 MediaPark H'sum [] ()
+31 (0)35 6772979 nl_NL eo_XX en_US
_______________________________________________
Developers mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/developers