001: /*
002: * Copyright (C) The DNA Group. All rights reserved.
003: *
004: * This software is published under the terms of the DNA
005: * Software License version 1.1, a copy of which has been included
006: * with this distribution in the LICENSE.txt file.
007: */
008: package org.codehaus.dna.impl;
009:
010: import org.codehaus.dna.Active;
011: import org.codehaus.dna.Composable;
012: import org.codehaus.dna.Configurable;
013: import org.codehaus.dna.Configuration;
014: import org.codehaus.dna.ConfigurationException;
015: import org.codehaus.dna.LogEnabled;
016: import org.codehaus.dna.Logger;
017: import org.codehaus.dna.MissingResourceException;
018: import org.codehaus.dna.ResourceLocator;
019:
020: /**
021: * Utility class to make it easier to process a object
022: * through its lifecycle stages.
023: *
024: * @version $Revision: 1.2 $ $Date: 2004/05/01 09:51:48 $
025: */
026: public class ContainerUtil {
027: /**
028: * Supply specified object with Logger if it implements the
029: * LogEnabled interface.
030: *
031: * @param object the object to process
032: * @param logger the logger. If null then the specified object must
033: * not implement LogEnabled.
034: * @throws IllegalArgumentException if the object is LogEnabled and
035: * Logger is null
036: */
037: public static void enableLogging(final Object object,
038: final Logger logger) {
039: if (object instanceof LogEnabled) {
040: if (null == logger) {
041: final String message = "Null logger.";
042: throw new IllegalArgumentException(message);
043: }
044: ((LogEnabled) object).enableLogging(logger);
045: }
046: }
047:
048: /**
049: * Supply specified object with ResourceLocator if it implements the
050: * Composable interface.
051: *
052: * @param object the object to process
053: * @param locator the ResourceLocator. If null then the specified
054: * object must not implement Composable.
055: * @throws IllegalArgumentException if the object is Composable
056: * and locator is null
057: * @throws MissingResourceException if processing lifecycle stage on
058: * object throws exception
059: */
060: public static void compose(final Object object,
061: final ResourceLocator locator)
062: throws MissingResourceException {
063: if (object instanceof Composable) {
064: if (null == locator) {
065: final String message = "Null locator.";
066: throw new IllegalArgumentException(message);
067: }
068: ((Composable) object).compose(locator);
069: }
070: }
071:
072: /**
073: * Supply specified object with Configuration if it implements the
074: * Configurable interface.
075: *
076: * @param object the object to process
077: * @param configuration the Configuration. If null then the specified
078: * object must not implement Configurable.
079: * @throws IllegalArgumentException if the object is Configurable
080: * and configuration is null
081: * @throws ConfigurationException if processing lifecycle stage on
082: * object throws exception
083: */
084: public static void configure(final Object object,
085: final Configuration configuration)
086: throws ConfigurationException {
087: if (object instanceof Configurable) {
088: if (null == configuration) {
089: final String message = "Null configuration.";
090: throw new IllegalArgumentException(message);
091: }
092: ((Configurable) object).configure(configuration);
093: }
094: }
095:
096: /**
097: * Initialize specified object if it implements the
098: * Active interface.
099: *
100: * @param object the object to process
101: * @throws Exception if processing lifecycle stage on
102: * object throws exception
103: */
104: public static void initialize(final Object object) throws Exception {
105: if (object instanceof Active) {
106: ((Active) object).initialize();
107: }
108: }
109:
110: /**
111: * Dispose specified object if it implements the
112: * Active interface.
113: *
114: * @param object the object to process
115: * @throws Exception if processing lifecycle stage on
116: * object throws exception
117: */
118: public static void dispose(final Object object) throws Exception {
119: if (object instanceof Active) {
120: ((Active) object).dispose();
121: }
122: }
123: }
|