<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in WorkQueue.java</title>
    <link>http://src.iws.cs.ovgu.de/source/rss/osnet-11/usr/src/lib/libsctp/i386/Makefile</link>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2005</copyright>
    <generator>Java</generator>
    <item>
        <title>OPENDJ-832 Leverage the work queue for processing requests received on the HTTP connection handler
    
    
    
    Limited the number of concurrent operations per client connection.
    
    
    
    SdkConnectionAdapter.java:
    Changed the queueing strategy to BoundedWorkQueueStrategy.
    
    BoundedWorkQueueStrategy.java: ADDED
    
    AbandonOperationWrapper.java, xtendedOperationWrapper.java, UnbindOperationWrapper.java: ADDED
    
    DirectoryServer.java:
    Extracted checkCanEnqueueRequest() from enqueueRequest().
    Added tryEnqueueRequest().
    
    WorkQueue.java:
    Pulled computeNumWorkerThreads() here from sub classes.
    Added abstract method trySubmitOperation().
    Added abstract getter getNumWorkerThreads().
    
    ParallelWorkQueue.java:
    Implemented trySubmitOperation() and getter getNumWorkerThreads().
    Renamed getNumWorkerThreads() to computeNumWorkerThreads() + moved it to WorkQueue.
    
    TraditionalWorkQueue.java:
    Implemented trySubmitOperation() and getter getNumWorkerThreads().
    Renamed getNumWorkerThreads() to computeNumWorkerThreads() + moved it to WorkQueue.
    Extacted overloaded method submitOperation(Operation, boolean) from submitOperation(Operation).
    
    
    
    ClientConnection.java, JmxClientConnection.java, HTTPClientConnection.java, InternalClientConnection.java, MockClientConnection.java, LDAPClientConnection.java:
    Added abstract method isConnectionValid() + implemented it in subclasses.
    
    
    
    02-config.ldif, HTTPConnectionHandlerConfiguration.xml:
    Added property max-concurrent-ops-per-connection</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - a22f5cddd6e1d582bf04028aeb6907cfdb571b11</description>
        <pubDate></pubDate>
        <dc:creator>JnRouvignac</dc:creator>
    </item>

    <item>
        <title>OPENDJ-832 Leverage the work queue for processing requests received on the HTTP connection handler
    
    Code cleanup: Changed code from using AbstractOperation abstract class to using Operation interface instead.
    
    
    
    Operation.java
    Now extends Runnable.
    
    OperationWrapper.java
    Consequence of the change to Operation.java.
    
    
    WorkQueue.java:
    In submitOperation(), used Operation interface instead of AbstractOperation abstract class.
    
    DirectoryServer.java:
    In enqueueRequest() used Operation interface instead of AbstractOperation abstract class.
    Removed CLASS_NAME constant, used this class's name in getClassName().
    
    ParallelWorkerThread.java:
    Changed instance member operation from AbstractOperation abstract class to Operation interface.
    
    ParallelWorkQueue.java:
    Changed instance member opQueue from ConcurrentLinkedQueue&lt;AbstractOperation&gt; to ConcurrentLinkedQueue&lt;Operation&gt;.
    In submitOperation(), nextOperation() and retryNextOperation(), used Operation interface instead of AbstractOperation abstract class.
    
    TraditionalWorkerThread.java
    Changed instance member operation from AbstractOperation abstract class to Operation interface.
    In shutDown() used Operation interface instead of AbstractOperation abstract class.
    
    TraditionalWorkQueue.java
    Changed instance member opQueue from LinkedBlockingQueue&lt;AbstractOperation&gt; to LinkedBlockingQueue&lt;Operation&gt;.
    In initializeWorkQueue(), submitOperation(), nextOperation(), retryNextOperation() and applyConfigurationChange(), used Operation interface instead of AbstractOperation abstract class.
    In applyConfigurationChange(), remove a duplicate condition check.
    
    
    
    All files:
    Converted java comments to javadocs.
    Added @Override annotations.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 748b8e6dae732515ff8e5af17323cdd6b18d6ad8</description>
        <pubDate></pubDate>
        <dc:creator>JnRouvignac</dc:creator>
    </item>

    <item>
        <title>Refactor configuration of maximum persistent search resource limits</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - b15d540be773e373395e1850f9110a04e201abe5</description>
        <pubDate></pubDate>
        <dc:creator>matthew_swift</dc:creator>
    </item>

    <item>
        <title>Implements a configurable limit in the number of persistent searches a server can handle.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - cf0351f3466da3bb32d25fa5b39a8ac76891ae93</description>
        <pubDate></pubDate>
        <dc:creator>ludovicp</dc:creator>
    </item>

    <item>
        <title>Updated the copyright statement to reflect that Sun owns the full copyright on the project files.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 65e99be301d5a19db33f25841f671756e8dbb9b5</description>
        <pubDate></pubDate>
        <dc:creator>ludovicp</dc:creator>
    </item>

    <item>
        <title>Update package-info.java files to include the @PublicAPI annotation to indicate
    whether any or all of the classes in that package are intended to be part of
    the public API.  Further, mark all classes that we intend to be part of the
    public API with the @PublicAPI annotation to indicate the ways in which they
    may be used.  Note that the use of these annotations and the ultimate
    determination as to what is in our public API and the ways in which those
    elements may be used still needs to be carefully reviewed before the 1.0
    release.
    
    Also, perform minor cleanup in various places througout the code.  This
    includes:
    
    - Eliminate the use of protected fields in classes that are in the
    org.opends.server.api package (and the classes that extend them).  The use of
    protected fields can be troublesome, and there are generally better ways to
    accomplish the same thing.
    
    - Eliminate the use of the {@inheritDoc} Javadoc tag in classes that are
    intended to be part of the public API.  Some IDEs don't resolve {@inheritDoc}
    to show the actual documentation.  Further, there were problems in the way
    that some instances of {@inheritDoc} were used, namely having a method sourced
    from multiple parents, and in some cases {@inheritDoc} was used to refer to
    code defined outside of the OpenDS codebase, which will not be properly handled
    by the javadoc utility.
    
    - Update a number of public API classes to mark them as final if we do not
    intend for them to be overridden.  Further, for some classes that cannot be
    marked final, mark some methods final if we do not intend for those methods to
    be overridden.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 8d7126a8f999e88851c7dd851a17c27cb6d2ec3f</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>This commit is a step toward getting OpenDS internationalized. There are still issues to be resolved before we can declare that we are internationalized but this commit covers the bulk of changes needed at this time.
    
    In general this commit converts any string values that might potentially be shown to an end user (client or administrator) to a new class called Message.  This includes exception messages, error log messages, alert and email text, labels, and CLI output.  Message's main interface includes methods for rendering itself as a string in the default locale using toString() or a specified locale toString(Locale).  In addition to addressing localization, this would allow us to potentially support controls allowing clients to set a preferred locale for server communication or output log messages in different languages.  Message extends CharSequence so it can be used in some places where strings are currently used with not code change (e.g. writing to a buffer) as well as allowing messages to be composed of one another.
    
    In order to create localized messages, instead of adding them to the *Messages.java class, you define them in the corresponding properties files.  In general the property file keys are used to derive the new messages severity, category, and ordinal.  There are directives that can be used in the properties file in order to avoid doing this however.  For instance all the properties files used internally include the 'global.category' directive at the top of the file that instructs the generator to make all the following message belong to a single category.  So for internal messages the property value key will be as follows:
    
       [SEVERITY]_[DESCRIPTION]_[ORDINAL]
    
    See the properties files themselves for more information.
    
    Once your messages are in the properties file you can use the ant target 'generatemessages' to create create MessageDescriptor objects that are referred to in the Java code.  In the code you might think of these objects as replacing the int-valued message IDs.  To create messages you call MessageDescriptor.get() which replaces MessageHandler.getMessage().  It might be helpful then to try to define your messages before referring to them in your code since until you run 'generatemessages' you won't have any Java-code with with to create your message objects.
    
    In order to support non-localizable text in messages (host names, DN's, etc.) Message's can be created from String values by calling Message.raw(String).  In this way it is also possible to circumvent the intention of changing the APIs to use Message objects instead of Strings which is to support writing of localizable messages.  This method is currently used in the code as a crutch for areas of the code that need internationalization (tagged with a 'TODO: i18n' comment).  It might also be used by 3rd party developers that don't intend to localize their products.  However for internal use we should not be using this method to create Messages for text that is locale sensitive.
    
    Additionally this code includes a MessageBuilder that can be used in much the same way that a StringBuilder can be used.  It has a method toMessage() that can be used to generate a message object when needed.  At this time this method just converts the buffer contents to a raw, unlocalizable message so this will need to addressed in the future.
    
    Some other issues:
    
    - While all of the unit tests pass after this commit, there may be issues in the code where we have no or minimal test coverage.  This includes much of the setup and GUI tools packages for which I have not done any testing but will begin after this commit.
    
    - The new message related Java sources are contained in package org.opends.messages and organized in a new module src/module modeled somewhat after the admin module:
    
        src/messages/src (non-generated Java source files)
        src/messages/generated (generated source files)
        src/messages/messages (properties files for messages)
    
    If you run the code from within your IDE you will have to mark all messages/src, messages/generated and messages as source directories.
    
    - To generated the MessageDescriptor files you invoke the 'generatemessages' target.
    
    - If you run the code from within your IDE you will probably ne
    
    - This commit would change the plugin API.  Here are the changes caught by DirectoryServerPluginTestCase:
    
        doShutdown(String)-&gt;doShutdown(Message)
    
        doPostDisconnect(PostDisconnectPluginResult,ClientConnection,DisconnectReason,int,String) -&gt;         doPostDisconnect(PostDisconnectPluginResult,ClientConnection,DisconnectReason,Message);
    
    - This commit aligns the entire code-base behind the new Formatter class (printf style formattings like %s) as opposed to the older MessageFormat style (using curly braces for message arguments).  This allows us to provide more type safety for message arguments.  So for instance you can include a %c argument specifier in your format string and the MessageDescriptor will enforce specification of a Character as message creation time.
    
    - Not all of the config framework has not been converted to use Messages.  Perhaps as some point we might have a 'message' syntax for locale-sensitive textural data.  I'm sure Matt will have ideas about this.
    
    - In addition to Message, MessageDescriptor and MessageBuilder, the org.opends.server.message package includes enums for Category and Severity that replace the definitions formerly found in MessageHandler.
    
    - The interface for the ErrorLogger has been simplified to allow logging of messages using a single Message parameter.  The severity and category of the message will be derived from the Message itself instead of specified as arguments when a message is logged.
    
    - I will provide more documentation about this plumbing on the Wiki shortly.
    
    - I will expand on the included tests soon.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 53247d28ba99538f841a13ea2cde01c3faa3ef36</description>
        <pubDate></pubDate>
        <dc:creator>kenneth_suter</dc:creator>
    </item>

    <item>
        <title>Commits the refactoring of the core server to provide support for proxy/distribution/virtual functionnalities.
    This includes the new set of local operations, as well as the workflow and networkgroup support.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 02dfa37c68e25bff17fa958b0773b88262bb1380</description>
        <pubDate></pubDate>
        <dc:creator>jarnou</dc:creator>
    </item>

    <item>
        <title>Migrate the work queue configuration to the admin framework.
    
    OpenDS Issue Number:  1838</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - a883820d466d0ef5d6ce4d894cf0e1e7f362b344</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>Make several significant changes to the OpenDS code base, including:
    
    - Narrow down the set of packages that external developers will need to access
      in order to write a plugin or other type of extension.  Hopefully, for most
      things developers will only need to interact with the following packages (and
      their sub-packages):
      * org.opends.server.admin
      * org.opends.server.api
      * org.opends.server.config
      * org.opends.server.protocols.internal
      * org.opends.server.types
      * org.opends.server.util
    
    - As part of the attempted narrowing of packages that external developers need
      to access, I have moved the org.opends.server.core.Operation and
      org.opends.server.protocols.ldap.LDAPException classes to the
      org.opends.server.types package.  I have also created
      org.opends.server.types.RawAttribute to wrap the
      org.opends.server.protocols.ldap.LDAPAttribute class, and
      org.opends.server.types.RawModification to wrap the
      org.opends.server.protocols.ldap.LDAPModification class.
    
    - I have updated the internal operations API to add a few new convenience
      methods when performing internal operations.
    
    - I have updated all of our message strings so that none of them end in periods
      (except those that end with an ellipsis).  This will help us avoid the
      problem in which we see multiple periods due to embedding one message in
      another.
    
    - I have moved a message file from a synchronizaiton package to the messages
      package and resolved conflicts with existing message IDs.
    
    - I have updated a number of cases in which
      StaticUtils.stackTraceToSingleLineString() was used in client-facing code to
      replace those calls with StaticUtils.getExceptionMessage() instead.  This
      should provide a more user-friendly message that will hopefully not reduce
      our ability to debug problems that may arise.
    
    - I have cleaned up some of the code in the org.opends.server.api package so
      that all of the classes use consistent formatting, and to fix a couple of
      potential Javadoc problems.
    
    - I have moved the build-tools/src directory to src/build-tools to be more
      consistent with other components of the server.
    
    - I have updated the build script so that the xslt task will no longer dump
      lots of output to the terminal when generating code.  I have also gotten rid
      of warnings about run.classpath not being set properly.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 99faa045b6241c1d2843cce1b7a9d9c97055beae</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>Remove blank lines at the beginning of methods left after eliminating the
    debugEnter and debugConstructor calls.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - f4d85fde4c95d5f49f683641815e0463d6166720</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>Update all CDDL headers in source files to remove a typo.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - f71f7a61dec7c9089378d14493ad564a1dedf0b5</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>This removes old debug logging framework method calls that are going to be automatically instrumented by AspectJ. Non instrumented debug method calls are updated to use the new debug framework methods. However, the new debug logging framework is not yet active as the Aspects are not weaved in. After this revision, debug logging will be disabled in the server until the new AOP framework is complete.
    
    - Removed debugEnter and debugConstructor from all source files.
    - Removed CLASS_NAME static string for debug purposes.
    - Removed old debug logging framework.
    - Added new debug logging frameworking using AOP.
    - Added AspectJ binary and libraries.
    - Change all modified files copyrights to include 2007.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 4684954889d65b731ed6e0ee807bf199273fd665</description>
        <pubDate></pubDate>
        <dc:creator>boli</dc:creator>
    </item>

    <item>
        <title>Update the work queue API to provide new isIdle and waitUntilIdle methods that
    may be used to determine whether the queue is currently idle (i.e., that it is
    not being used to process any operations).
    
    OpenDS Issue Number:  952</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - 2729071ad5ffceebca0d3c36d32e7d601d3df5ef</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>Perform significant refactoring in the core and plugin code in order to help
    make it easier for external developers to extend OpenDS.  In particular, this
    is a big step towards eliminating the need for developers to reference anything
    in the core package, and it's also a signficant simplification to the plugin
    API because it helps expose which operation methods are safe to call at various
    points in the plugin processing.
    
    The most significant changes in this commit include:
    
    - I've created a new org.opends.server.types.operation package and added
    a lot of interfaces into it.  These interfaces define the set of methods
    that may be called on operations at various points in plugin processing
    (e.g., there's a PreParseAddOperation interface that exposes the methods
    of the AddOperation class that are safe to call from a pre-parse
    plugin).  All of the core operation types now implement the appropriate
    set of interfaces, and the plugin API methods now take these interfaces
    as arguments rather than the Operation subclass itself.
    
    - I've moved a number of classes from the core package to the types
    package.  All references to these classes anywhere in the code were
    updated to reflect the change.  The classes that were moved include:
       * CancelledOperationException
       * CancelRequest
       * CancelResult
       * CryptoManager
       * DirectoryException
       * InitializationException
       * LockManager
       * OperationType
       * Schema
    
    - I've also moved the test cases for the DirectoryException and
    InitializationException classes from the core to the types package.
    
    - Some general cleanup in the core operation classes.  Virtually all
    methods should now be marked final.  All methods inherited from the
    abstract Operation class now use "{@inheritDoc}" for the javadoc
    documentation and have the "@override" annotation.
    
    - The DirectoryServerPlugin class has been updated so that the default
    implementations for all plugin methods now throw a runtime exception to
    indicate that the requested functionality has not been implemented.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - b4851fc75ef4634840dcbadec085d586d36b434d</description>
        <pubDate></pubDate>
        <dc:creator>neil_a_wilson</dc:creator>
    </item>

    <item>
        <title>Initial public commit of OpenDS Directory Server source code.</title>
        <description>/forgerock/opendj2/src/server/org/opends/server/api/WorkQueue.java - b5a02d06a79b80a1f26a998673a3b7aae35b31da</description>
        <pubDate></pubDate>
        <dc:creator>opends</dc:creator>
    </item>

</channel>
</rss>

