001 // SECTION-START[License Header]
002 // <editor-fold defaultstate="collapsed" desc=" Generated License ">
003 /*
004 * Copyright (c) 2009 The JOMC Project
005 * Copyright (c) 2005 Christian Schulte <cs@jomc.org>
006 * All rights reserved.
007 *
008 * Redistribution and use in source and binary forms, with or without
009 * modification, are permitted provided that the following conditions
010 * are met:
011 *
012 * o Redistributions of source code must retain the above copyright
013 * notice, this list of conditions and the following disclaimer.
014 *
015 * o Redistributions in binary form must reproduce the above copyright
016 * notice, this list of conditions and the following disclaimer in
017 * the documentation and/or other materials provided with the
018 * distribution.
019 *
020 * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS"
021 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
022 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
023 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR
024 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
026 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
027 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
028 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
029 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
030 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
031 *
032 * $Id: DefaultInvocation.java 1102 2009-12-07 03:01:58Z schulte2005 $
033 *
034 */
035 // </editor-fold>
036 // SECTION-END
037 package org.jomc.ri;
038
039 import java.lang.reflect.Method;
040 import java.util.HashMap;
041 import java.util.Map;
042 import org.jomc.model.Instance;
043 import org.jomc.model.Modules;
044 import org.jomc.spi.Invocation;
045
046 // SECTION-START[Documentation]
047 // <editor-fold defaultstate="collapsed" desc=" Generated Documentation ">
048 /**
049 * Default invocation.
050 * @see DefaultInvoker
051 *
052 * @author <a href="mailto:cs@jomc.org">Christian Schulte</a> 1.0
053 * @version $Id: DefaultInvocation.java 1102 2009-12-07 03:01:58Z schulte2005 $
054 */
055 // </editor-fold>
056 // SECTION-END
057 // SECTION-START[Annotations]
058 // <editor-fold defaultstate="collapsed" desc=" Generated Annotations ">
059 @javax.annotation.Generated( value = "org.jomc.tools.JavaSources",
060 comments = "See http://jomc.sourceforge.net/jomc/1.0-alpha-11/jomc-tools" )
061 // </editor-fold>
062 // SECTION-END
063 public class DefaultInvocation implements Invocation
064 {
065 // SECTION-START[DefaultInvocation]
066
067 /** Constant for the context key of the {@code Object} of this invocation. */
068 public static final String OBJECT_KEY = Invocation.class.getName() + ".object";
069
070 /** Constant for the context key of the {@code Method} of this invocation. */
071 public static final String METHOD_KEY = Invocation.class.getName() + ".method";
072
073 /** Constant for the context key of the {@code Object[]} arguments of this invocation. */
074 public static final String ARGUMENTS_KEY = Invocation.class.getName() + ".arguments";
075
076 /** Constant for the context key of the result {@code Object} of this invocation. */
077 public static final String RESULT_KEY = Invocation.class.getName() + ".result";
078
079 /** Constant for the context key of the {@code Instance} corresponding to the object of this invocation. */
080 public static final String INSTANCE_KEY = Invocation.class.getName() + ".instance";
081
082 /** Constant for the context key of the {@code Modules} corresponding to the object of this invocation. */
083 public static final String MODULES_KEY = Invocation.class.getName() + ".modules";
084
085 /** Constant for the context key of the {@code ClassLoader} corresponding to the modules of this invocation. */
086 public static final String CLASSLOADER_KEY = Invocation.class.getName() + ".classLoader";
087
088 /** The context of this invocation. */
089 private Map context;
090
091 /**
092 * Creates a new {@code DefaultInvocation} instance taking an invocation to initialize the instance with.
093 *
094 * @param invocation The invocation to initialize the instance with.
095 */
096 public DefaultInvocation( final Invocation invocation )
097 {
098 this.context = new HashMap( invocation.getContext() );
099 }
100
101 public Map getContext()
102 {
103 if ( this.context == null )
104 {
105 this.context = new HashMap();
106 }
107
108 return this.context;
109 }
110
111 public Object getObject()
112 {
113 return this.getContext().get( OBJECT_KEY );
114 }
115
116 public Method getMethod()
117 {
118 return (Method) this.getContext().get( METHOD_KEY );
119 }
120
121 public Object[] getArguments()
122 {
123 return (Object[]) this.getContext().get( ARGUMENTS_KEY );
124 }
125
126 public Object getResult()
127 {
128 return this.getContext().get( RESULT_KEY );
129 }
130
131 public void setResult( final Object value )
132 {
133 if ( value == null )
134 {
135 this.getContext().remove( RESULT_KEY );
136 }
137 else
138 {
139 this.getContext().put( RESULT_KEY, value );
140 }
141 }
142
143 /**
144 * Gets the instance of the object of this invocation from the context of this invocation.
145 *
146 * @return The instance of the object of this invocation from the context of this invocation or {@code null}.
147 *
148 * @see #INSTANCE_KEY
149 */
150 public Instance getInstance()
151 {
152 return (Instance) this.getContext().get( INSTANCE_KEY );
153 }
154
155 /**
156 * Gets the modules corresponding to the object of this invocation from the context of this invocation.
157 *
158 * @return The modules corresponding to the object of this invocation from the context of this invocation or
159 * {@code null}.
160 *
161 * @see #MODULES_KEY
162 */
163 public Modules getModules()
164 {
165 return (Modules) this.getContext().get( MODULES_KEY );
166 }
167
168 /**
169 * Gets the class loader corresponding to the modules of this invocation from the context of this invocation.
170 *
171 * @return The class loader corresponding to the modules of this invocation from the context of this invocation or
172 * {@code null}.
173 *
174 * @see #CLASSLOADER_KEY
175 */
176 public ClassLoader getClassLoader()
177 {
178 return (ClassLoader) this.getContext().get( CLASSLOADER_KEY );
179 }
180
181 // SECTION-END
182 // SECTION-START[Constructors]
183 // <editor-fold defaultstate="collapsed" desc=" Generated Constructors ">
184
185 /** Creates a new {@code DefaultInvocation} instance. */
186 @javax.annotation.Generated( value = "org.jomc.tools.JavaSources",
187 comments = "See http://jomc.sourceforge.net/jomc/1.0-alpha-11/jomc-tools" )
188 public DefaultInvocation()
189 {
190 // SECTION-START[Default Constructor]
191 super();
192 // SECTION-END
193 }
194 // </editor-fold>
195 // SECTION-END
196 // SECTION-START[Dependencies]
197 // SECTION-END
198 // SECTION-START[Properties]
199 // SECTION-END
200 // SECTION-START[Messages]
201 // SECTION-END
202 }