001    /*
002      GRANITE DATA SERVICES
003      Copyright (C) 2011 GRANITE DATA SERVICES S.A.S.
004    
005      This file is part of Granite Data Services.
006    
007      Granite Data Services is free software; you can redistribute it and/or modify
008      it under the terms of the GNU Library General Public License as published by
009      the Free Software Foundation; either version 2 of the License, or (at your
010      option) any later version.
011    
012      Granite Data Services is distributed in the hope that it will be useful, but
013      WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014      FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015      for more details.
016    
017      You should have received a copy of the GNU Library General Public License
018      along with this library; if not, see <http://www.gnu.org/licenses/>.
019    */
020    
021    package org.granite.tide.invocation;
022    
023    import java.io.Serializable;
024    
025    
026    /**
027     * @author William DRAI
028     */
029    public class ContextUpdate implements Serializable {
030    
031        private static final long serialVersionUID = 1L;
032        
033        
034        private String componentName;
035        private String componentClassName;
036        private String expression;
037        private Object value;
038        private int scope;
039        private boolean restrict;
040        
041        
042        public ContextUpdate() {
043        }
044        
045        public ContextUpdate(String componentName, String expression, Object value, int scope, boolean restrict) {
046            this.componentName = componentName;
047            this.expression = expression;
048            this.value = value;
049            this.scope = scope;
050            this.restrict = restrict;
051        }
052    
053        public String getComponentName() {
054            return componentName;
055        }
056        public void setComponentName(String componentName) {
057            this.componentName = componentName;
058        }
059        
060        public String getComponentClassName() {
061            return componentClassName;
062        }
063        public void setComponentClassName(String componentClassName) {
064            this.componentClassName = componentClassName;
065        }
066        
067        private Class<?> componentClass;
068        
069        public Class<?> getComponentClass() {
070            if (componentClassName == null)
071                    return null;
072            
073            if (componentClass == null) {
074                    try {
075                            componentClass = Thread.currentThread().getContextClassLoader().loadClass(componentClassName);
076                    }
077                    catch (Exception e) {
078                            throw new RuntimeException("Component class not found", e);
079                    }
080            }
081            return componentClass;      
082        }
083        
084        public String getExpression() {
085            return expression;
086        }
087        public void setExpression(String expression) {
088            this.expression = expression;
089        }
090    
091        public Object getValue() {
092            return value;
093        }
094        public void setValue(Object value) {
095            this.value = value;
096        }
097        
098        public int getScope() {
099            return scope;
100        }
101        public void setScope(int scope) {
102            this.scope = scope;
103        }
104        
105        public boolean getRestrict() {
106            return restrict;
107        }
108        public void setRestrict(boolean restrict) {
109            this.restrict = restrict;
110        }
111    
112        
113        @Override
114        public String toString() {
115            return componentName 
116                    + (componentClassName != null ? "(" + componentClassName + ")" : "") 
117                    + (expression != null ? "." + expression : "")
118                    + (scope == 1 ? " (SESSION)" : (scope == 2 ? " (CONVERSATION)" : "")) 
119                    + (restrict ? " (restricted)" :"");
120        }
121    }