001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.chain.impl;
018
019
020 import org.apache.commons.chain.Command;
021 import org.apache.commons.chain.Context;
022
023
024 /**
025 * <p>Implementation of {@link Command} that simply logs its identifier
026 * and returns.</p>
027 *
028 * @author Craig R. McClanahan
029 * @version $Revision: 480477 $ $Date: 2006-11-29 08:34:52 +0000 (Wed, 29 Nov 2006) $
030 */
031
032 public class NonDelegatingCommand implements Command {
033
034
035 // ------------------------------------------------------------ Constructor
036
037
038 public NonDelegatingCommand() {
039 this("");
040 }
041
042
043 // Construct an instance that will log the specified identifier
044 public NonDelegatingCommand(String id) {
045 this.id = id;
046 }
047
048
049 // ----------------------------------------------------- Instance Variables
050
051
052 // The identifier to log for this Command instance
053 protected String id = null;
054
055 String getId() {
056 return (this.id);
057 }
058
059 public void setId(String id) {
060 this.id = id;
061 }
062
063
064 // -------------------------------------------------------- Command Methods
065
066
067 // Execution method for this Command
068 public boolean execute(Context context) throws Exception {
069
070 if (context == null) {
071 throw new IllegalArgumentException();
072 }
073 log(context, id);
074 return (true);
075
076 }
077
078
079
080 // ------------------------------------------------------ Protected Methods
081
082
083 /**
084 * <p>Log the specified <code>id</code> into a StringBuffer attribute
085 * named "log" in the specified <code>context</code>, creating it if
086 * necessary.</p>
087 *
088 * @param context The {@link Context} into which we log the identifiers
089 * @param id The identifier to be logged
090 */
091 protected void log(Context context, String id) {
092 StringBuffer sb = (StringBuffer) context.get("log");
093 if (sb == null) {
094 sb = new StringBuffer();
095 context.put("log", sb);
096 }
097 if (sb.length() > 0) {
098 sb.append('/');
099 }
100 sb.append(id);
101 }
102
103
104 }