001package com.hammurapi.common.concurrent;
002
003import java.util.Arrays;
004
005import com.hammurapi.common.Context;
006
007public class InvocationImpl<K> implements Invocation<K>, Cloneable {
008
009        private Object[] arguments;
010        private PropertySet<K> propertySet;
011        private Context context;
012        
013        public InvocationImpl() {
014                
015        }
016
017        public InvocationImpl(Invocation<K> source) {
018                arguments = source.getArguments()==null ? null : Arrays.copyOf(source.getArguments(), source.getArguments().length);
019                propertySet = source.getPropertySet();
020                context = source.getContext();
021        }
022        
023        public InvocationImpl(Object[] arguments, PropertySet<K> propertySet, Context context) {
024                super();
025                this.arguments = arguments;
026                this.propertySet = propertySet;
027                this.context = context;
028        }
029
030        @Override
031        public Object[] getArguments() {
032                return arguments;
033        }
034
035        @Override
036        public PropertySet<K> getPropertySet() {
037                return propertySet;
038        }
039
040        @Override
041        public Context getContext() {
042                return context;
043        }
044        
045        @Override
046        public Object clone() throws CloneNotSupportedException {
047                InvocationImpl<K> ret = (InvocationImpl<K>) super.clone();
048                if (arguments!=null) {
049                        ret.setArguments(Arrays.copyOf(arguments, arguments.length));
050                }
051                return ret;
052        }
053
054        public void setArguments(Object[] arguments) {
055                this.arguments = arguments;
056        }
057
058        public void setPropertySet(PropertySet<K> propertySet) {
059                this.propertySet = propertySet;
060        }
061
062        public void setContext(Context context) {
063                this.context = context;
064        }
065        
066        
067
068}