001: /*
002: * The contents of this file are subject to the Sapient Public License
003: * Version 1.0 (the "License"); you may not use this file except in compliance
004: * with the License. You may obtain a copy of the License at
005: * http://carbon.sf.net/License.html.
006: *
007: * Software distributed under the License is distributed on an "AS IS" basis,
008: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
009: * the specific language governing rights and limitations under the License.
010: *
011: * The Original Code is The Carbon Component Framework.
012: *
013: * The Initial Developer of the Original Code is Sapient Corporation
014: *
015: * Copyright (C) 2003 Sapient Corporation. All Rights Reserved.
016: */
017:
018: package org.sape.carbon.core.component.proxy;
019:
020: import java.io.Serializable;
021: import java.lang.reflect.Method;
022:
023: /**
024: * <p>This object is built to contain a call to a component within the
025: * component's facade. It is then passed through the interceptor chain
026: * to allow interceptors to handle the call appropriately.</p>
027: *
028: * Copyright 2003 Sapient
029: * @since carbon 2.0
030: * @author Greg Hinkle, March 2003
031: * @version $Revision: 1.4 $($Author: dvoet $ / $Date: 2003/05/05 21:21:14 $)
032: */
033: public class Invocation implements Serializable {
034: /** Holds the target object. */
035: protected Object target;
036:
037: /** Holds the target method. */
038: protected Method method;
039:
040: /** Holds the objects to be passed to the target method. */
041: protected Object[] methodArguments;
042:
043: /** Holds the classes needed in the target method signature. */
044: protected Class[] methodSignature;
045:
046: /** Indicates if this method is in the functional implementation. */
047: protected boolean isTargetFunctionalImplementation;
048:
049: /**
050: * Constructs an invocation object
051: *
052: * @param target the Target object on which this method was intended to
053: * be called. Must be either the component's implementation or one of its
054: * configured decorators.
055: * @param method the method that intended
056: * @param methodArguments the arguments to the method
057: * @param methodSignature the signature of the method
058: * @param isTargetFunctionalImplementation true if this invocation's
059: * target is the component's functional implementation, false if it is
060: * one of the decorators.
061: */
062: public Invocation(Object target, Method method,
063: Object[] methodArguments, Class[] methodSignature,
064: boolean isTargetFunctionalImplementation) {
065:
066: this .target = target;
067: this .method = method;
068: this .methodArguments = methodArguments;
069: this .methodSignature = methodSignature;
070: this .isTargetFunctionalImplementation = isTargetFunctionalImplementation;
071: }
072:
073: /**
074: * Retrieves the target object.
075: *
076: * @return the target object
077: */
078: public Object getTarget() {
079: return target;
080: }
081:
082: /**
083: * Gets the method being invoked.
084: *
085: * @return method being invoked
086: */
087: public Method getMethod() {
088: return method;
089: }
090:
091: /**
092: * Returns the array of object parameters for the target method.
093: *
094: * @return array of object parameters for the target method
095: */
096: public Object[] getMethodArguments() {
097: return methodArguments;
098: }
099:
100: /**
101: * Returns the array of classes for the target method.
102: *
103: * @return array of classes for the target method
104: */
105: public Class[] getMethodSignature() {
106: return methodSignature;
107: }
108:
109: /**
110: * Is the intended target the component's functional implementation. This
111: * is typically used by interceptors who provide special functionality for
112: * calls to the functional impelementation.
113: *
114: * @return true if the target is the functional impelementation
115: */
116: public boolean isTargetFunctionalImplementation() {
117: return isTargetFunctionalImplementation;
118: }
119: }
|