2004-11-18 08:34  minam

	* NEWS, lib/needle/service-point.rb,
	  lib/needle/lifecycle/multiton.rb,
	  lib/needle/lifecycle/threaded.rb,
	  lib/needle/pipeline/collection.rb,
	  lib/needle/pipeline/element.rb, test/tc_service_point.rb,
	  test/lifecycle/tc_multiton.rb, test/lifecycle/tc_singleton.rb,
	  test/pipeline/tc_collection.rb: Fixed bugs #1070 ("Caches should
	  be released when adding an interceptor), #1071 ("Mutex in
	  ServicePoint"), and #1072 ("Typos"). Added test cases to ensure
	  the correctness of the new code. Updated NEWS file.

2004-11-17 20:54  minam

	* NEWS, lib/needle/definition-context.rb,
	  test/tc_definition_context.rb: DefinitionContext now passes all
	  unknown messages through to the container.

2004-11-17 20:40  minam

	* NEWS: Added release date of 1.2 to NEWS file.

2004-11-16 21:31  minam

	* NEWS, benchmarks/instantiation.rb, doc/faq/faq.yml,
	  doc/manual/manual.yml, doc/manual/parts/02_services.txt,
	  lib/needle/container.rb, lib/needle/definition-context.rb,
	  lib/needle/service-point.rb, lib/needle/pipeline/collection.rb,
	  test/tc_container.rb, test/tc_definition_context.rb,
	  test/tc_service_point.rb: Removed the public/private/protected
	  support. The feature would be rarely used, and it added (at a
	  minimum) some 30% overhead to every service request.	If a more
	  efficient implementation can be discovered I will consider it.

2004-11-16 21:17  minam

	* NEWS, lib/needle/definition-context.rb: Added #has_key? and
	  #knows_key? to DefinitionContext.

2004-11-15 16:40  minam

	* TODO, lib/needle/service-point.rb: Specify additional pipeline
	  elements to append to the selected model by giving the :include
	  option when registering a service.

2004-11-15 16:29  minam

	* TODO, lib/needle/container.rb, test/tc_container.rb: Added
	  example of private services.

2004-11-15 15:55  minam

	* TODO: Updated TODO's.

2004-11-15 15:54  minam

	* doc/: faq/faq.yml, manual/manual.yml,
	  manual/parts/01_alternatives.txt, manual/parts/02_services.txt,
	  manual/parts/logging_logfactory.txt,
	  manual/parts/models_models.txt,
	  manual/parts/models_pipelines.txt: Updated documentation to
	  include parameterized services, multitons, and
	  public/protected/private services.

2004-11-15 15:54  minam

	* lib/needle/registry.rb: Added :log_for parameterized service as a
	  convenience for obtaining logger instances from the log factory.

2004-11-15 13:16  minam

	* TODO, benchmarks/instantiation.rb, lib/needle/container.rb,
	  lib/needle/definition-context.rb, lib/needle/service-point.rb,
	  lib/needle/pipeline/collection.rb, test/tc_container.rb,
	  test/tc_definition_context.rb, test/tc_service_point.rb,
	  test/pipeline/tc_collection.rb: Added some more benchmarks. Added
	  means of specifying default registration options. Added a more
	  convenient way to specify private/protected/public visibility for
	  services (DefinitionContext#private, etc.).

2004-11-14 23:16  minam

	* TODO, benchmarks/instantiation.rb, lib/needle/container.rb,
	  lib/needle/registry.rb, lib/needle/service-point.rb,
	  lib/needle/pipeline/collection.rb, test/tc_container.rb,
	  test/tc_service_point.rb, test/pipeline/tc_collection.rb: Service
	  visibility. Services may be specified to have public, private, or
	  protected visibility.

2004-11-14 18:46  minam

	* lib/needle/version.rb: Version bump for backwards-compatible API
	  changes/additions.

2004-11-14 18:46  minam

	* TODO, lib/needle/container.rb, lib/needle/registry.rb,
	  lib/needle/service-point.rb, lib/needle/lifecycle/multiton.rb,
	  lib/needle/lifecycle/singleton.rb,
	  lib/needle/lifecycle/threaded.rb, test/services.rb,
	  test/tc_registry.rb, test/lifecycle/tc_multiton.rb,
	  test/lifecycle/tc_singleton.rb, test/lifecycle/tc_threaded.rb:
	  Services may be parameterized. Added multiton pipeline element
	  and related service models.

2004-11-11 10:30  minam

	* NEWS: Added the new manual chapter.

2004-11-11 10:28  minam

	* doc/manual/: manual.yml, parts/customizing_contexts.txt,
	  parts/customizing_interceptors.txt,
	  parts/customizing_namespaces.txt: Added chapter on customizing
	  Needle.

2004-11-11 10:00  minam

	* NEWS: Described changes in 1.1.

2004-11-06 21:39  minam

	* lib/needle/version.rb: Version bump appropriate for
	  backwards-compatible API additions/changes.

2004-11-06 21:12  minam

	* lib/needle/container.rb, lib/needle/definition-context.rb,
	  lib/needle/registry.rb, test/tc_container.rb,
	  test/tc_definition_context.rb, test/tc_registry.rb: Registries
	  may now have both a parent and a name. The classes used to
	  implement the namespaces, interceptors, and definition contexts
	  are specified as services now, so that clients may substitute
	  their own implementations if needed.

2004-11-04 07:23  minam

	* lib/needle/container.rb: Worked around an rdoc bug that appeared
	  when doc'ing DefinitionContext#require.  (rdoc does not like
	  documenting #require calls with variable argument lists).

2004-11-03 22:31  minam

	* NEWS, doc/manual/manual.yml, lib/needle/version.rb: Updated NEWS
	  and version in preparation for 1.0 release.

2004-11-03 15:49  minam

	* lib/needle/container.rb: Added namespace_define! to the
	  DefinitionContext and aliased namespace! to it.

2004-11-03 15:49  minam

	* doc/faq/faq.yml: Added FAQ about service libraries.

2004-11-03 15:48  minam

	* doc/manual/: manual.yml, parts/02_namespaces.txt,
	  parts/libraries_creating.txt, parts/libraries_overview.txt,
	  parts/libraries_using.txt: Added chapter on service libraries.

2004-11-03 12:16  minam

	* TODO, lib/needle/container.rb, test/services.rb,
	  test/tc_container.rb: Zeroed the TODO list. Added #require as a
	  method of Container for more easily decentralizing service
	  configuration.

2004-11-02 18:57  minam

	* lib/needle/log-factory.rb, test/tc_logger.rb: LogFactory now
	  validates option keys and level keys. Symbols and strings are
	  accepted interchangably.

2004-11-02 18:56  minam

	* doc/manual/: manual.yml, parts/logging_configuration.txt,
	  parts/logging_logfactory.txt, parts/logging_overview.txt: Added
	  chapter on logging.

2004-11-02 11:23  minam

	* doc/manual/: manual.yml, parts/models_models.txt,
	  parts/models_overview.txt, parts/models_pipelines.txt: Added
	  chapter on service models and pipelines.

2004-11-02 09:31  minam

	* doc/manual/: manual.rb, manual.yml,
	  parts/interceptors_architecture.txt,
	  parts/interceptors_attaching.txt, parts/interceptors_custom.txt,
	  parts/interceptors_ordering.txt, parts/interceptors_overview.txt:
	  Added interceptors chapter and skeletons of remaining chapters.

2004-11-01 15:39  minam

	* test/: tc_logger.rb, pipeline/tc_collection.rb,
	  pipeline/tc_element.rb: Fixed warnings from ambiguities due to
	  missing parens.

2004-11-01 15:38  minam

	* lib/needle/lifecycle/initialize.rb: Removed warning from
	  ambiguity due to missing parens.

2004-11-01 15:34  minam

	* lib/needle/thread.rb: Fixed warning due to @locking_thread being
	  uninitialized.

2004-11-01 15:30  minam

	* lib/needle/log-factory.rb: Logging levels are now interpreted
	  more flexibly, with unrecognized levels raising sane errors.

2004-11-01 15:28  minam

	* lib/needle/container.rb: Fixed some warnings and a documentation
	  typo.

2004-10-29 15:09  minam

	* doc/faq/faq.yml: Finished the FAQ (rough draft)

2004-10-28 10:43  minam

	* NEWS, Rakefile, doc/manual/manual.yml, doc/manual/page.erb,
	  doc/manual/parts/03_overview.txt: Added :faq and :pubfaq to
	  Rakefile. Added FAQ link to manual. Fixed some minor typos in the
	  manual.

2004-10-27 16:44  minam

	* doc/faq/: faq.rb, faq.yml: Added first pass at a FAQ document.

2004-10-27 15:49  minam

	* doc/manual/: manual.rb, manual.yml, parts/03_conventional.txt,
	  parts/03_locator.txt, parts/03_overview.txt,
	  parts/04_overview.txt, parts/04_setup.txt: Added two more
	  chapters to the manual.

2004-10-27 13:08  minam

	* lib/needle/version.rb: Tentative version bump to 0.9, in
	  anticipation of release of 1.0.

2004-10-27 13:02  minam

	* lib/needle/container.rb, lib/needle/registry.rb,
	  lib/needle/service-point.rb, test/tc_registry.rb,
	  test/tc_service_point.rb, test/models/model_test.rb: Registries
	  are now unnamed (and unnamable, in the sense that Containers can
	  be named). This makes the result of Container#fullname and
	  ServicePoint#fullname a bit more pleasant to look at, and
	  understand.

2004-10-24 07:28  minam

	* doc/manual/parts/02_creating.txt, lib/needle/container.rb,
	  lib/needle/version.rb, test/tc_container.rb: Tentative version
	  bump. Updated manual. DefinitionContext now places nicely with
	  pp. Added unit tests for namespace_define and friends.

2004-10-24 06:23  minam

	* example/: prototype-namespaces/driver.rb, simple/driver.rb:
	  Changed calls to Registry.new! to Registry.define!.

2004-10-24 06:21  minam

	* lib/needle/registry.rb, test/tc_registry.rb,
	  test/models/model_test.rb: Added test case for custom init
	  option. Changed Registry.new! to Registry.define! and added
	  Registry.define.

2004-10-21 10:13  minam

	* Rakefile: Removed some cruft.

2004-10-21 10:11  minam

	* NEWS: Updated NEWS file.

2004-10-21 10:01  minam

	* lib/needle/version.rb: Version bump.

2004-10-21 10:00  minam

	* example/custom-model/refreshable.rb, lib/needle/service-point.rb:
	  The "refreshable" example wasn't working correctly due to a bug
	  in the service point implementation (the options for the service
	  point were not being passed to the pipeline elements when they
	  were created).

2004-10-21 09:48  minam

	* TODO, lib/needle/container.rb, lib/needle/registry.rb,
	  lib/needle/service-point.rb, lib/needle/lifecycle/threaded.rb,
	  lib/needle/pipeline/collection.rb,
	  lib/needle/pipeline/element.rb, test/tc_container.rb,
	  test/tc_logger.rb, test/tc_registry.rb, test/tc_service_point.rb,
	  test/lifecycle/tc_deferred.rb, test/lifecycle/tc_initialize.rb,
	  test/lifecycle/tc_singleton.rb, test/lifecycle/tc_threaded.rb,
	  test/models/model_test.rb, test/models/tc_prototype.rb,
	  test/models/tc_prototype_deferred.rb,
	  test/models/tc_prototype_deferred_initialize.rb,
	  test/models/tc_prototype_initialize.rb,
	  test/models/tc_singleton.rb,
	  test/models/tc_singleton_deferred.rb,
	  test/models/tc_singleton_deferred_initialize.rb,
	  test/models/tc_singleton_initialize.rb,
	  test/models/tc_threaded.rb, test/models/tc_threaded_deferred.rb,
	  test/models/tc_threaded_deferred_initialize.rb,
	  test/models/tc_threaded_initialize.rb,
	  test/pipeline/tc_collection.rb, test/pipeline/tc_element.rb:
	  Added "threaded" pipeline element. Made service models for all
	  combinations of [threaded,singleton,prototype] x
	  [immediate,deferred] x [no-initialize, initialize]. Made
	  Pipeline::Element accept the service point as a parameter instead
	  of the container.

2004-10-18 09:27  minam

	* Rakefile, TODO, doc/README, doc/di-in-ruby.rdoc,
	  doc/images/di_classdiagram.jpg: Added Jim Weirich's "DI in Ruby"
	  article to documentation.

2004-10-17 23:58  minam

	* example/custom-model/refreshable.rb: Updated example to use new
	  instantiation pipeline approach to service models.

2004-10-17 23:54  minam

	* TODO: Instantiation pipelines were implemented.

2004-10-17 23:53  minam

	* TODO, lib/needle/container.rb, lib/needle/models.rb,
	  lib/needle/registry.rb, lib/needle/service-point.rb,
	  lib/needle/lifecycle/deferred.rb,
	  lib/needle/lifecycle/initialize.rb,
	  lib/needle/lifecycle/proxy.rb, lib/needle/lifecycle/singleton.rb,
	  lib/needle/pipeline/collection.rb,
	  lib/needle/pipeline/element.rb,
	  lib/needle/pipeline/interceptor.rb, test/tc_container.rb,
	  test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb,
	  test/lifecycle/tc_deferred.rb, test/lifecycle/tc_initialize.rb,
	  test/lifecycle/tc_proxy.rb, test/lifecycle/tc_singleton.rb,
	  test/models/tc_prototype.rb,
	  test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb,
	  test/models/tc_singleton.rb,
	  test/models/tc_singleton_deferred.rb,
	  test/pipeline/tc_collection.rb, test/pipeline/tc_element.rb: HUGE
	  CHANGE. The entire service model concept has been radically
	  altered. Instead, the concept of "instantiation pipelines" has
	  been implemented. This gives a LOT more flexibility, and even a
	  small performance boost (in some areas).

2004-10-16 23:26  minam

	* doc/: README, manual/manual.yml,
	  manual/parts/01_alternatives.txt: Changed the term "free
	  software" to "open source software", to prevent confusion over
	  FSF terminology. Added a section in the manual describing
	  alternatives to Needle.

2004-10-16 23:15  minam

	* benchmarks/instantiation.rb: Added new benchmark for timing the
	  various ways to instantiate services.

2004-10-16 07:51  minam

	* lib/needle/thread.rb: Copied 'thread.rb' from Copland so we have
	  a version of mutex that can detect a thread trying to reacquire
	  an existing lock. Changed the models and the proxy to use
	  QueryableMutex, so that cycles in the dependency graph are
	  reported more legibly.

2004-10-15 23:01  minam

	* TODO, example/prototype-namespaces/driver.rb,
	  lib/needle/service-point.rb, test/tc_service_point.rb:
	  Instantiating a service point now sends an optional second
	  parameter to the constructor block. The second parameter is the
	  service point definition itself, allowing the constructor block
	  to reference (for example) the service point's fullname.

	  Also, added an implementation of the "prototype namespaces" that
	  I discussed with Christian Neukirchen (chris2) on #ruby-talk.

2004-10-15 16:17  minam

	* Rakefile, doc/manual/parts/02_creating.txt,
	  doc/manual/parts/02_namespaces.txt,
	  doc/manual/parts/02_services.txt, example/test.rb,
	  example/calc/calc.rb, example/calc/driver.rb,
	  example/custom-model/driver.rb, example/simple/driver.rb,
	  lib/needle/container.rb, lib/needle/registry.rb,
	  lib/needle/service-point.rb, test/tc_container.rb,
	  test/tc_registry.rb: World-shattering, API-breaking changes.
	  Specifically: Container#register! went away, and is now called
	  Container#define!. Added Container#define. Renamed
	  Container::RegistrationContext to be
	  Container::DefinitionContext. Added
	  Container::DefinitionContext#this_container. Fixed/removed/added
	  unit tests.  Fixed documentation to conform with new changes.
	  Fixed examples to conform with new changes. Moved
	  "example/test.rb" to "example/simple/driver.rb". Made Rakefile
	  automatically run examples and benchmarks before packaging to
	  ensure that they work.

2004-10-15 11:10  minam

	* Rakefile, needle.gemspec, benchmarks/instantiability.rb,
	  benchmarks/interceptors.rb, benchmarks/interceptors2.rb: Added
	  benchmarks. "rake benchmark" now runs the benchmarks.

2004-10-14 21:40  minam

	* Rakefile, needle.gemspec: Rakefile now checks for success of test
	  cases before packaging. Also, NEWS gets packaged instead of
	  ReleaseNotes.

2004-10-14 21:33  minam

	* example/custom-model/refreshable.rb: Made warnings (ruby -w) go
	  away.

2004-10-14 21:32  minam

	* NEWS: Updated NEWS file.

2004-10-14 21:30  minam

	* doc/: README, manual/index.erb, manual/manual.rb,
	  manual/manual.yml: Changed index page of manual so that all
	  relevant web sites relating to Needle can be displayed. Added
	  sites to the README as well.

2004-10-14 16:27  minam

	* doc/manual/manual.css, doc/manual/manual.yml,
	  doc/manual/parts/02_namespaces.txt,
	  doc/manual/parts/02_services.txt, lib/needle/version.rb: Minor
	  tweakage.

2004-10-14 16:16  minam

	* doc/manual/: manual.yml, parts/02_creating.txt,
	  parts/02_namespaces.txt, parts/02_overview.txt,
	  parts/02_services.txt: Rough draft of the "Registry" chapter, and
	  combined a few prospective chapters into the Registry chapter.

2004-10-14 15:00  minam

	* TODO, lib/needle/log-factory.rb: Pared down the TODO list, and
	  made log-factory not close device if it is stdout or stderr.

2004-10-14 14:20  minam

	* Rakefile: Added :prepackage task for helping maintainer remember
	  to update versions, NEWS, and so forth before releasing.

2004-10-14 14:06  minam

	* example/calc/calc.rb, example/calc/driver.rb,
	  example/custom-model/driver.rb,
	  example/custom-model/refreshable.rb, lib/needle/container.rb,
	  lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb,
	  lib/needle/log-factory.rb, lib/needle/service-point.rb,
	  test/tc_container.rb, test/tc_logger.rb: Updated code to remove
	  warnings when run with "ruby -w". Also, fixed examples so that
	  they no longer use the "register_library" interfaces.  Extended
	  the custom-model example with code from Leon Breedt.

2004-10-13 20:25  minam

	* doc/manual/: manual.rb, manual.yml, parts/01_use_cases.txt: Added
	  use cases to introduction of manual.

2004-10-13 20:11  minam

	* lib/needle.rb, lib/needle/container.rb, lib/needle/registry.rb,
	  test/tc_container.rb: Removed the "register_library" and
	  "require" stuff. That more properly belongs (if it belongs at
	  all) in a layer on top of Needle. I'll try to keep Needle "lean
	  and mean".

2004-10-13 14:23  minam

	* lib/: needle.rb, needle/container.rb: Tweaked documentation
	  according to recommendations from Eivind Eklund.

2004-10-13 09:22  minam

	* NEWS, Rakefile, TODO, lib/needle/log-factory.rb,
	  lib/needle/logger.rb, test/tc_logger.rb: Added a #write_to method
	  to both Logger and LogFactory, allowing the device being written
	  to, to be changed on the fly. Made the Rakefile clean up the
	  generated log files after running the tests. Added a NEWS file.

2004-10-12 16:39  minam

	* TODO: Need better name for Container#register!

2004-10-12 16:33  minam

	* needle.gemspec: Added gemspec file.

2004-10-12 16:30  minam

	* lib/needle.rb: Error in documentation.

2004-10-12 16:25  minam

	* setup.rb: Added setup.rb for manual installation.

2004-10-12 16:24  minam

	* doc/README: Added a README.

2004-10-12 16:19  minam

	* Rakefile, TODO, lib/needle.rb, lib/needle/container.rb,
	  lib/needle/errors.rb, lib/needle/include-exclude.rb,
	  lib/needle/interceptor.rb, lib/needle/models.rb,
	  lib/needle/registry.rb, lib/needle/service-point.rb,
	  lib/needle/version.rb: Added RDoc documentation. Added Rakefile
	  and TODO.

2004-10-12 13:29  minam

	* doc/manual/chapter.erb, doc/manual/index.erb,
	  doc/manual/manual.css, doc/manual/manual.rb, doc/manual/page.erb,
	  doc/manual/tutorial.erb, lib/needle/version.rb: Manual now
	  compiles. Added version information to Needle.

2004-10-12 12:49  minam

	* LICENSE, doc/LICENSE-BSD, doc/LICENSE-GPL, doc/LICENSE-RUBY,
	  doc/manual/manual.rb, doc/manual/manual.yml,
	  doc/manual/parts/01_license.txt, doc/manual/parts/01_support.txt,
	  doc/manual/parts/01_what_is_needle.txt, lib/needle.rb,
	  lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb,
	  lib/needle/logger.rb, lib/needle/models.rb,
	  lib/needle/registry.rb, lib/needle/service-point.rb,
	  example/test.rb, example/calc/calc.rb, example/calc/driver.rb,
	  example/custom-model/driver.rb,
	  example/custom-model/refreshable.rb, lib/needle/container.rb,
	  lib/needle/errors.rb, lib/needle/include-exclude.rb,
	  lib/needle/log-factory.rb, lib/needle/logging-interceptor.rb,
	  test/ALL-TESTS.rb, test/tc_container.rb, test/tc_interceptor.rb,
	  test/tc_interceptor_chain.rb, test/tc_logger.rb,
	  test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb,
	  test/models/tc_prototype.rb,
	  test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb,
	  test/models/tc_singleton.rb,
	  test/models/tc_singleton_deferred.rb: Initial import

2004-10-12 12:49  minam

	* LICENSE, doc/LICENSE-BSD, doc/LICENSE-GPL, doc/LICENSE-RUBY,
	  doc/manual/manual.rb, doc/manual/manual.yml,
	  doc/manual/parts/01_license.txt, doc/manual/parts/01_support.txt,
	  doc/manual/parts/01_what_is_needle.txt, lib/needle.rb,
	  lib/needle/interceptor-chain.rb, lib/needle/interceptor.rb,
	  lib/needle/logger.rb, lib/needle/models.rb,
	  lib/needle/registry.rb, lib/needle/service-point.rb,
	  example/test.rb, example/calc/calc.rb, example/calc/driver.rb,
	  example/custom-model/driver.rb,
	  example/custom-model/refreshable.rb, lib/needle/container.rb,
	  lib/needle/errors.rb, lib/needle/include-exclude.rb,
	  lib/needle/log-factory.rb, lib/needle/logging-interceptor.rb,
	  test/ALL-TESTS.rb, test/tc_container.rb, test/tc_interceptor.rb,
	  test/tc_interceptor_chain.rb, test/tc_logger.rb,
	  test/tc_models.rb, test/tc_registry.rb, test/tc_service_point.rb,
	  test/models/tc_prototype.rb,
	  test/models/tc_prototype_deferred.rb, test/models/tc_proxy.rb,
	  test/models/tc_singleton.rb,
	  test/models/tc_singleton_deferred.rb: Initial revision

