001// SECTION-START[License Header] 002// <editor-fold defaultstate="collapsed" desc=" Generated License "> 003/* 004 * Java Object Management and Configuration 005 * Copyright (C) Christian Schulte, 2005-206 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 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 021 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 022 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 023 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, 024 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 025 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 026 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 027 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 028 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 029 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 030 * 031 * $JOMC: DefaultInvocation.java 4588 2012-06-03 06:01:30Z schulte2005 $ 032 * 033 */ 034// </editor-fold> 035// SECTION-END 036package org.jomc.ri; 037 038import java.lang.reflect.Method; 039import java.util.HashMap; 040import java.util.Map; 041import org.jomc.model.Instance; 042import org.jomc.model.Modules; 043import org.jomc.spi.Invocation; 044 045// SECTION-START[Documentation] 046// <editor-fold defaultstate="collapsed" desc=" Generated Documentation "> 047/** 048 * Default {@code Invocation} implementation. 049 * 050 * <dl> 051 * <dt><b>Identifier:</b></dt><dd>org.jomc.ri.DefaultInvocation</dd> 052 * <dt><b>Name:</b></dt><dd>JOMC RI</dd> 053 * <dt><b>Abstract:</b></dt><dd>No</dd> 054 * <dt><b>Final:</b></dt><dd>No</dd> 055 * <dt><b>Stateless:</b></dt><dd>No</dd> 056 * </dl> 057 * 058 * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 1.0 059 * @version 1.0 060 */ 061// </editor-fold> 062// SECTION-END 063// SECTION-START[Annotations] 064// <editor-fold defaultstate="collapsed" desc=" Generated Annotations "> 065@javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.3", comments = "See http://jomc.sourceforge.net/jomc/1.3/jomc-tools-1.3" ) 066// </editor-fold> 067// SECTION-END 068public class DefaultInvocation implements Invocation 069{ 070 // SECTION-START[DefaultInvocation] 071 072 /** Constant for the context key of the {@code Object} of this invocation. */ 073 public static final String OBJECT_KEY = "org.jomc.spi.Invocation.object"; 074 075 /** Constant for the context key of the {@code Method} of this invocation. */ 076 public static final String METHOD_KEY = "org.jomc.spi.Invocation.method"; 077 078 /** Constant for the context key of the {@code Object[]} arguments of this invocation. */ 079 public static final String ARGUMENTS_KEY = "org.jomc.spi.Invocation.arguments"; 080 081 /** Constant for the context key of the result {@code Object} of this invocation. */ 082 public static final String RESULT_KEY = "org.jomc.spi.Invocation.result"; 083 084 /** Constant for the context key of the {@code Instance} corresponding to the object of this invocation. */ 085 public static final String INSTANCE_KEY = "org.jomc.spi.Invocation.instance"; 086 087 /** Constant for the context key of the {@code Modules} corresponding to the object of this invocation. */ 088 public static final String MODULES_KEY = "org.jomc.spi.Invocation.modules"; 089 090 /** Constant for the context key of the {@code ClassLoader} corresponding to the modules of this invocation. */ 091 public static final String CLASSLOADER_KEY = "org.jomc.spi.Invocation.classLoader"; 092 093 /** The context of this invocation. */ 094 private Map context; 095 096 /** 097 * Creates a new {@code DefaultInvocation} instance taking an invocation to initialize the instance with. 098 * 099 * @param invocation The invocation to initialize the instance with. 100 */ 101 public DefaultInvocation( final Invocation invocation ) 102 { 103 this.context = new HashMap( invocation.getContext() ); 104 } 105 106 public Map getContext() 107 { 108 if ( this.context == null ) 109 { 110 this.context = new HashMap(); 111 } 112 113 return this.context; 114 } 115 116 public Object getObject() 117 { 118 return this.getContext().get( OBJECT_KEY ); 119 } 120 121 public Method getMethod() 122 { 123 return (Method) this.getContext().get( METHOD_KEY ); 124 } 125 126 public Object[] getArguments() 127 { 128 return (Object[]) this.getContext().get( ARGUMENTS_KEY ); 129 } 130 131 public Object getResult() 132 { 133 return this.getContext().get( RESULT_KEY ); 134 } 135 136 public void setResult( final Object value ) 137 { 138 if ( value == null ) 139 { 140 this.getContext().remove( RESULT_KEY ); 141 } 142 else 143 { 144 this.getContext().put( RESULT_KEY, value ); 145 } 146 } 147 148 /** 149 * Gets the instance of the object of this invocation from the context of this invocation. 150 * 151 * @return The instance of the object of this invocation from the context of this invocation or {@code null}. 152 * 153 * @see #INSTANCE_KEY 154 */ 155 public Instance getInstance() 156 { 157 return (Instance) this.getContext().get( INSTANCE_KEY ); 158 } 159 160 /** 161 * Gets the modules corresponding to the object of this invocation from the context of this invocation. 162 * 163 * @return The modules corresponding to the object of this invocation from the context of this invocation or 164 * {@code null}. 165 * 166 * @see #MODULES_KEY 167 */ 168 public Modules getModules() 169 { 170 return (Modules) this.getContext().get( MODULES_KEY ); 171 } 172 173 /** 174 * Gets the class loader corresponding to the modules of this invocation from the context of this invocation. 175 * 176 * @return The class loader corresponding to the modules of this invocation from the context of this invocation or 177 * {@code null}. 178 * 179 * @see #CLASSLOADER_KEY 180 */ 181 public ClassLoader getClassLoader() 182 { 183 return (ClassLoader) this.getContext().get( CLASSLOADER_KEY ); 184 } 185 186 // SECTION-END 187 // SECTION-START[Constructors] 188 // <editor-fold defaultstate="collapsed" desc=" Generated Constructors "> 189 /** Creates a new {@code DefaultInvocation} instance. */ 190 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.3", comments = "See http://jomc.sourceforge.net/jomc/1.3/jomc-tools-1.3" ) 191 public DefaultInvocation() 192 { 193 // SECTION-START[Default Constructor] 194 super(); 195 // SECTION-END 196 } 197 // </editor-fold> 198 // SECTION-END 199 // SECTION-START[Dependencies] 200 // SECTION-END 201 // SECTION-START[Properties] 202 // SECTION-END 203 // SECTION-START[Messages] 204 // SECTION-END 205}