1 package org.starobjects.tested.fitnesse.internal.fixtures.perform; 2 3 import org.nakedobjects.metamodel.adapter.NakedObject; 4 import org.nakedobjects.metamodel.spec.feature.NakedObjectAction; 5 import org.nakedobjects.metamodel.spec.feature.NakedObjectMember; 6 import org.starobjects.tested.fitnesse.internal.fixtures.UsingNakedObjectsViewer.Mode; 7 8 import fit.Parse; 9 10 public class GetActionParameterDefault extends PerformAbstractTypeParams { 11 12 private NakedObject result; 13 14 public GetActionParameterDefault(final Mode mode) { 15 super("get action parameter default", Type.ACTION, NumParameters.ONE, 16 mode); 17 } 18 19 @Override 20 public void doHandle(final PerformContext performContext) { 21 22 final NakedObject onAdapter = performContext.getOnAdapter(); 23 final NakedObjectMember nakedObjectMember = performContext 24 .getNakedObjectMember(); 25 final Parse arg0Cell = performContext.getArg0Binding().getCurrentCell(); 26 int requestedParamNum = -1; 27 try { 28 requestedParamNum = Integer.valueOf(arg0Cell.text()); 29 } catch (final NumberFormatException ex) { 30 getOwner().throwException(arg0Cell, ex.getMessage()); 31 } 32 33 final NakedObjectAction noa = (NakedObjectAction) nakedObjectMember; 34 final int parameterCount = noa.getParameterCount(); 35 if (requestedParamNum < 0 || requestedParamNum > parameterCount - 1) { 36 getOwner().throwException(arg0Cell, 37 "(must be between 0 and " + (parameterCount - 1) + ")"); 38 } 39 40 final NakedObject[] defaults = noa.getDefaults(onAdapter); 41 result = defaults[requestedParamNum]; 42 } 43 44 public NakedObject getResult() { 45 return result; 46 } 47 48 }