Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java')
-rw-r--r--bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java587
1 files changed, 0 insertions, 587 deletions
diff --git a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
deleted file mode 100644
index b0c7666e2..000000000
--- a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
+++ /dev/null
@@ -1,587 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * yyyymmdd bug Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060523 133714 joan@ca.ibm.com - Joan Haggarty
- * 20060726 151614 pmoogk@ca.ibm.com - Peter Moogk
- *******************************************************************************/
-package org.eclipse.wst.command.internal.env.ant;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.wst.command.internal.env.EnvironmentMessages;
-import org.eclipse.wst.command.internal.env.core.CommandManager;
-import org.eclipse.wst.command.internal.env.core.context.TransientResourceContext;
-import org.eclipse.wst.command.internal.env.core.data.BeanModifier;
-import org.eclipse.wst.command.internal.env.core.data.ClassEntry;
-import org.eclipse.wst.command.internal.env.core.data.Transformer;
-import org.eclipse.wst.command.internal.env.core.fragment.CommandFragment;
-import org.eclipse.wst.command.internal.env.eclipse.EclipseEnvironment;
-import org.eclipse.wst.command.internal.env.plugin.EnvPlugin;
-import org.eclipse.wst.common.environment.ILog;
-import org.eclipse.wst.common.environment.IStatusHandler;
-import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
-
-/**
- *
- * Access to status handler, log, resource context and command manager.
- * Initializes data for commands from Ant property files based on antDataMapping extensions.
- *
- * @author joan
- *
- */
-
-public class AntEnvironment extends EclipseEnvironment{
-
- private Hashtable antProperties_;
- private Hashtable operationDataRecord_ = new Hashtable();
- private boolean mappingComplete_;
- private ClassEntry classEntry;
-
- // extensionPoint names and namespace
- private static String MAPPER_EXT_PT = "antDataMapping"; //$NON-NLS-1$
- private static String SCENARIO_EXT_PT = "antScenario"; //$NON-NLS-1$
- private static String EXT_PT_NAMESPACE = "org.eclipse.wst.command.env"; ////$NON-NLS-1$
-
- // antDataMapping extension point attributes
- private static final String MAPPER_OPERATION_ATTRIBUTE= "operation"; //$NON-NLS-1$
- private static final String MAPPER_KEY_ATTRIBUTE= "key"; //$NON-NLS-1$
- private static final String MAPPER_PROPERTY_ATTRIBUTE= "property"; //$NON-NLS-1$
- private static final String MAPPER_TRANSFORM_ATTRIBUTE= "transform"; //$NON-NLS-1$
- private static final String MAPPER_REQUIRED_ATTRIBUTE= "required"; //$NON-NLS-1$
-
- // antScenario extension point attributes
- private static final String SCENARIO_TYPE_ATTRIBUTE = "scenarioType"; //$NON-NLS-1$
- private static final String SCENARIO_CLASS_ATTRIBUTE = "class"; //$NON-NLS-1$
-
- // Ant property IDs
- private static final String VERBOSE_PROPERTY = "Verbose"; //$NON-NLS-1$
- private static final String OVERWRITE_PROPERTY = "OverwriteFilesEnabled"; //$NON-NLS-1$
- private static final String CREATEFOLDER_PROPERTY = "CreateFoldersEnabled"; //$NON-NLS-1$
- private static final String CHECKOUT_PROPERTY = "CheckoutFilesEnabled"; //$NON-NLS-1$
- private static final String SCENARIO_TYPE_PROPERTY = "ScenarioType"; //$NON-NLS-1$
-
- private AntController controller_;
-
- public AntEnvironment(AntController controller, TransientResourceContext context, IStatusHandler handler, Hashtable properties)
- {
- super(controller.getOperationManager(), context, handler);
- antProperties_ = properties;
- controller_ = controller;
- setContext( context );
- }
-
- private void setContext(TransientResourceContext context)
- {
- Boolean overwriteSet = getBooleanProperty( OVERWRITE_PROPERTY );
- Boolean createfolderSet = getBooleanProperty( CREATEFOLDER_PROPERTY );
- Boolean checkoutSet = getBooleanProperty( CHECKOUT_PROPERTY );
-
- if( overwriteSet != null ) context.setOverwriteFilesEnabled( overwriteSet.booleanValue() );
- if( createfolderSet != null ) context.setCreateFoldersEnabled( createfolderSet.booleanValue() );
- if( checkoutSet != null ) context.setCheckoutFilesEnabled( checkoutSet.booleanValue() );
- }
-
- public boolean verbose()
- {
- Boolean result = getBooleanProperty( VERBOSE_PROPERTY );
-
- return result == null ? false : result.booleanValue();
- }
-
- public Boolean getBooleanProperty( String property )
- {
- String value = getProperty( property );
- Boolean result = null;
-
- if( value != null )
- {
- value = value.toLowerCase();
- result = new Boolean( value.equals( "true") );
- }
-
- return result;
- }
-
- // returns String since the property table built by Ant is property value pairs where the value is a String
- private String getProperty(String key)
- {
- Object property = antProperties_.get(key);
- if (property != null && (!property.toString().equals("")))
- return property.toString().trim();
- return null;
- }
-
- // call from engine prior to executing the operation
- public IStatus initOperationData(AbstractDataModelOperation op)
- {
- //check to see if data has already been primed for this operation
- String qualifiedClassName = op.getClass().getName();
- if (operationDataRecord_.get(qualifiedClassName) == null)
- {
- classEntry = new ClassEntry();
-
- try {
- //extension lookup for the bean - may be more than one property for it
- Enumeration operationData = getMappingExtensions(op);
- classEntry.setterList_= getSetterList(op);
- while (operationData.hasMoreElements())
- {
- PropertyDataHolder mapping = (PropertyDataHolder)operationData.nextElement();
-
- mappingComplete_ = false;
- String property = mapping.property_;
- String setterMethodName = createSetterName(property);
-
- int step = 1;
- while (!mappingComplete_)
- {
- switch (step) {
- case 1:
- mappingComplete_ = transformAndSet(mapping, setterMethodName);
- break;
- case 2:
- mappingComplete_ = callSetter(mapping.operation_, mapping.value_, setterMethodName);
- break;
-
- case 3:
- mappingComplete_ = callPrimitiveSetter(mapping);
- break;
-
- case 4:
- mappingComplete_ = callSetterConstructor(mapping);
- break;
-
- default:
- mappingComplete_ = true;
- break;
- }
- step++;
- }
- }
- //add operation to the record - no need to initialize again...
- operationDataRecord_.put(qualifiedClassName, "");
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException(e.getMessage());
- }
-
- }
- return Status.OK_STATUS;
- }
-
- /**
- * Creates setter name based on the property passed in. If the
- * property has any leading qualifiers they are stripped off.
- * The property is capitalized and set is prepended.
- * @param property The name of the property that requires a setter.
- * @return
- */
- private String createSetterName(String property)
- {
- while (property.indexOf(".")>=0)
- {
- property=property.substring(property.indexOf(".")+1);
- }
- String firstChar = property.substring(0,1);
- firstChar = firstChar.toUpperCase();
- property = firstChar + property.substring(1);
- String setterName = "set" + property;
- return setterName;
- }
-
- /**
- * Retrieves extensions for the org.eclipse.wst.command.env antDataMapping
- * extension point. Extracts those that with class attribute values that match operationName.
- * All mappings are converted to PropertyDataHolder objects.
- * Any m:1 Ant key to property mappings are collected into a key-value map within
- * a single PropertyDataHolder.
- * @param operationName The name of the operation that is being initialized.
- * @return A collection of PropertyDataHolder objects. Returns null if there are no extensions matching the operationName.
- */
- private Enumeration getMappingExtensions(AbstractDataModelOperation operation) throws CoreException
- {
- String operationName = operation.getClass().getName();
- //go to ext registry and get all antMapping extensions
- IExtensionRegistry reg = Platform.getExtensionRegistry();
- IExtensionPoint extPt = reg.getExtensionPoint(EXT_PT_NAMESPACE, MAPPER_EXT_PT);
- Hashtable dataTable = new Hashtable(25);
-
- IConfigurationElement[] elements = extPt.getConfigurationElements();
-
- for (int i = 0; i < elements.length; i++) {
-
- IConfigurationElement ce = elements[i];
- Object obj = ce.getAttribute(MAPPER_OPERATION_ATTRIBUTE);
- // look for mappings for this operation
- if (obj.equals(operationName))
- {
- String key = ce.getAttribute(MAPPER_KEY_ATTRIBUTE);
- String value = getProperty(key);
-
- //check to see if the property for this extension is already in the data table
- // if so, there is a m:1 mapping
- if (value != null) //only do a mapping if there is an Ant property value passed in...
- {
-
- String property = ce.getAttribute(MAPPER_PROPERTY_ATTRIBUTE);
- Object transform = null;
- try
- {
- //check to make sure there is an transform attribute provided
- // if so, get the class to do the transformation
- if (ce.getAttribute(MAPPER_TRANSFORM_ATTRIBUTE)!= null)
- transform = ce.createExecutableExtension(MAPPER_TRANSFORM_ATTRIBUTE);
- }
- catch (CoreException cex) {
- Status errorStatus = new Status(Status.ERROR, "ws_ant", 5092, cex.getMessage(), cex);
- getStatusHandler().reportError(errorStatus);
- getLog().log(ILog.ERROR, "ws_ant", 5092, this, "getMappingExtensions", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERROR_ANT_DATA_TRANSFORM, key, transform));
- throw new CoreException(errorStatus);
- }
-
- if (transform != null && transform instanceof BeanModifier/*dataTable.containsKey(property)*/)
- {
- //get the PropertyDataHolder from the table
- PropertyDataHolder holder = (PropertyDataHolder)dataTable.get(property);
- if (holder == null)
- {
- holder = new PropertyDataHolder();
- holder.key_ = "";
- holder.value_ = "";
- holder.transform_ = transform;
- holder.operation_ = operation;
- holder.property_ = property;
- holder.map_ = new HashMap();
- holder.map_.put(key, value);
- dataTable.put(property, holder);
- }
- else
- {
- holder.map_.put(key, value);
- }
- }
- else //plain property mapping not a bean
- {
- PropertyDataHolder holder = new PropertyDataHolder();
- holder.operation_ = operation;
- holder.key_ = key;
- holder.property_ = property;
- holder.transform_ = transform;
- holder.value_ = value;
- dataTable.put(property, holder);
- }
- }
- else if(ce.getAttribute(MAPPER_REQUIRED_ATTRIBUTE)!=null && ce.getAttribute(MAPPER_REQUIRED_ATTRIBUTE).equals("true"))
- {
- String msg = EnvironmentMessages.bind(EnvironmentMessages.MSG_ERROR_ANT_REQUIRED_PROPERTY, key.toString());
- Status statusObj = new Status(IStatus.ERROR,
- EnvPlugin.ID,
- IStatus.ERROR,
- msg,
- null);
- getStatusHandler().reportError(statusObj);
- getLog().log(ILog.ERROR, "ws_ant", 9999, this, "getMappingExtensions", msg);
- }
- else if (verbose())
- {
- String msg = EnvironmentMessages.bind(EnvironmentMessages.MSG_INFO_ANT__PROPERTY_DEFAULT, key.toString());
- Status statusObj = new Status(IStatus.INFO,
- EnvPlugin.ID,
- IStatus.INFO,
- msg,
- null);
- getStatusHandler().reportInfo(statusObj);
- getLog().log(ILog.INFO, "ws_ant", 9999, this, "getMappingExtensions", msg);
- }
- }
- }
- return dataTable.elements();
- }
-
- private boolean transformAndSet(PropertyDataHolder mapping, String setterMethodName)
- {
- Object transform = mapping.transform_;
- if (transform != null)
- {
- // get transform class & create setter parameters
- try
- {
- //Object classObject = Class.forName(transform).newInstance();
- Object param = new Object();
- if (transform instanceof Transformer)
- {
- Transformer transformer = (Transformer)transform;
- // transform the property value
- param = transformer.transform(mapping.value_);
- }
- else if (mapping.map_ != null && transform instanceof BeanModifier)
- {
- BeanModifier modifier = (BeanModifier)transform;
- Method getter = getGetterMethod(mapping);
- param = getter.invoke(mapping.operation_, new Object[]{});
- modifier.modify(param, mapping.map_);
- }
- return callSetter(mapping.operation_, param, setterMethodName);
-
- }
- catch (Exception exc)
- {
- getStatusHandler().reportError(new Status(Status.ERROR, "ws_ant", 5093, exc.getMessage(), exc));
- getLog().log(ILog.ERROR, "ws_ant", 5093, this, "transformAndSet", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERROR_ANT_DATA_TRANSFORM, mapping.key_, mapping.transform_));
- throw new IllegalArgumentException(exc.getMessage());
- }
- }
- return false;
- }
-
- private Vector getSetterList(Object op)
- {
- Vector result = new Vector();
- Method[] methods = op.getClass().getMethods();
- for( int index = 0; index < methods.length; index++ )
- {
- Method method = methods[index];
- boolean isPublic = Modifier.isPublic( method.getModifiers() );
- Class returnType = method.getReturnType();
-
- if( isPublic &&
- returnType == Void.TYPE &&
- method.getParameterTypes().length == 1 &&
- method.getName().startsWith( "set" ))
- {
- method.setAccessible( true );
- result.add( method );
- }
- }
-
- return result;
- }
-
- private Method getGetterMethod(PropertyDataHolder mapping)
- {
- Method getterFound = null;
-
- if (classEntry.getterList_ == null)
- {
- classEntry.getterList_ = getGetterList(mapping.operation_);
- }
-
- for( int index = 0; index < classEntry.getterList_.size(); index++ )
- {
- Method getter = (Method)classEntry.getterList_.elementAt( index );
-
- if( getter.getName().equals( "get" + mapping.property_ ))
- {
- getterFound = getter;
- break;
- }
- }
- return getterFound;
- }
-
- private Vector getGetterList( Object object )
- {
- Vector result = new Vector();
- Method[] methods = object.getClass().getMethods();
-
- for( int index = 0; index < methods.length; index++ )
- {
- Method method = methods[index];
- boolean isPublic = Modifier.isPublic( method.getModifiers() );
- Class returnType = method.getReturnType();
-
- if( isPublic &&
- returnType != Void.TYPE &&
- method.getParameterTypes().length == 0 &&
- method.getName().startsWith( "get" ))
- {
- method.setAccessible( true );
- result.add( method );
- }
- }
-
- return result;
- }
-
- private boolean callSetter(AbstractDataModelOperation op, Object param, String setterMethodName) throws CoreException
- {
- for (Iterator iterator = classEntry.setterList_.iterator(); iterator.hasNext();)
- {
- Method method = (Method) iterator.next();
- if (method.getName().equals(setterMethodName))
- {
- Class[] paramTypes = method.getParameterTypes();
- if (paramTypes.length == 1 && param != null)
- {
- try{
- method.invoke(op, new Object[]{param});
- return true;
- }
- catch(Exception cex){
- Status errorStatus = new Status(Status.ERROR, "ws_ant", 5094, cex.getMessage(), cex);
- getStatusHandler().reportError(errorStatus);
- getLog().log(ILog.ERROR, "ws_ant", 5094, this, "callSetter", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERROR_ANT_CALL_SETTER, setterMethodName));
- throw new CoreException(errorStatus);
- }
- }
- }
- }
- return false;
- }
-
-
- // look for setter with primitive type parameter - if find one, convert String propertyValue and call it
- private boolean callPrimitiveSetter(PropertyDataHolder mapping) throws CoreException
- {
- for (Iterator iterator = classEntry.setterList_.iterator(); iterator.hasNext();) {
- Method element = (Method) iterator.next();
- Class[] parmTypes = element.getParameterTypes();
- if (parmTypes.length==1 && parmTypes[0].isPrimitive())
- {
- Class parmType = parmTypes[0].getClass();
- Object setterParm = null;
- if (parmType.equals(Integer.class))
- {
- setterParm = Integer.valueOf(mapping.value_);
- }
- else if (parmType.equals(Boolean.class))
- {
- setterParm = Boolean.valueOf(mapping.value_);
- }
- else if (parmType.equals(Character.class) && mapping.value_.length() == 1)
- {
- setterParm = new Character(mapping.value_.charAt(0));
- }
- else if (parmType.equals(Byte.class))
- {
- setterParm = Byte.valueOf(mapping.value_);
- }
- else if (parmType.equals(Short.class))
- {
- setterParm = Short.valueOf(mapping.value_);
- }
- else if (parmType.equals(Long.class))
- {
- setterParm = Long.valueOf(mapping.value_);
- }
- else if (parmType.equals(Float.class))
- {
- setterParm = Float.valueOf(mapping.value_);
- }
- else if (parmType.equals(Double.class))
- {
- setterParm = Double.valueOf(mapping.value_);
- }
-
- if (setterParm != null)
- {
- try
- {
- element.invoke(mapping.operation_, new Object[]{setterParm});
- return true;
- }
- catch(Exception e){
- Status errorStatus = new Status(Status.ERROR, "ws_ant", 5095, e.getMessage(), e);
- getStatusHandler().reportError(errorStatus);
- getLog().log(ILog.ERROR, "ws_ant", 5095, this, "callPrimitiveSetter", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERROR_ANT_CALL_SETTER, element.getName()));
- throw new CoreException(errorStatus);
- }
- }
- }
- }
- return false;
- }
-
- //check for setter with parameter type that takes a String to construct
- // construct the parameter using String & call the setter
- private boolean callSetterConstructor(PropertyDataHolder mapping) throws CoreException
- {
- for (Iterator iterator = classEntry.setterList_.iterator(); iterator.hasNext();) {
- Method element = (Method) iterator.next();
- Class[] parmTypes = element.getParameterTypes();
- Class[] stringParm = new Class[]{String.class};
- if (parmTypes.length==1)
- {
- try
- {
- Constructor ctor = parmTypes.getClass().getConstructor(stringParm);
- Object parameter = ctor.newInstance(new Object[]{mapping.value_});
- element.invoke(mapping.operation_, new Object[]{parameter});
- }
- catch (Exception exc)
- {
- Status errorStatus = new Status(Status.ERROR, "ws_ant", 5096, exc.getMessage(), exc);
- getStatusHandler().reportError(errorStatus);
- getLog().log(ILog.ERROR, "ws_ant", 5096, this, "callSetterConstructor", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERROR_ANT_CALL_SETTER, element.getName()));
- throw new CoreException(errorStatus);
- }
- }
- }
- return false;
- }
-
- /**
- * Returns an object that helps manage execution/undoing of Commands.
- */
- public CommandManager getCommandManager (){
- return controller_.getOperationManager();
- }
-
- public CommandFragment getRootCommandFragment()
- {
-
- //look up the commandFragment in the scenarioRegistry extension point with an ID corresponding to the scenario property in the propertytable
- String scenarioProperty = (String)getProperty(SCENARIO_TYPE_PROPERTY);
- IExtensionRegistry reg = Platform.getExtensionRegistry();
- IExtensionPoint extPt = reg.getExtensionPoint(EXT_PT_NAMESPACE, SCENARIO_EXT_PT);
-
- IConfigurationElement[] elements = extPt.getConfigurationElements();
-
- for (int i = 0; i < elements.length; i++) {
-
- IConfigurationElement configElement = elements[i];
- if (configElement.getAttribute(SCENARIO_TYPE_ATTRIBUTE).equals(scenarioProperty))
- {
- try
- {
- Object obj = configElement.createExecutableExtension(SCENARIO_CLASS_ATTRIBUTE);
-
- if (obj instanceof org.eclipse.wst.command.internal.env.core.fragment.CommandFragment)
- {
- return (org.eclipse.wst.command.internal.env.core.fragment.CommandFragment)obj;
- }
- }
- catch (Exception exception)
- {
- Status errorStatus = new Status(Status.ERROR, "ws_ant", 5097, exception.getMessage(), exception);
- getStatusHandler().reportError(errorStatus);
- getLog().log(ILog.ERROR, "ws_ant", 5097, this, "getRootCommandFragment", EnvironmentMessages.MSG_ERROR_ANT_CMD_FRAGMENT);
- }
- }
- }
- return null;
- }
- }

Back to the top