dflorey 2004/12/18 05:52:16 Modified: contract/src/examples/org/apache/commons/contract/example SpeedCalculator.java contract/src/config constraints.xml example.xml contract/src/java/org/apache/commons/contract/constraints BooleanConstraints.java Unconstrained.java MapConstraints.java DateConstraints.java ArrayConstraints.java ListConstraints.java LocaleConstraints.java contract/src/java/org/apache/commons/contract/util MainWrapper.java InteractiveMainWrapper.java Added: contract/src/examples/org/apache/commons/contract/example TestLogin.java LoginProcessor.java TestSpeedCalculator.java Removed: contract/src/examples/org/apache/commons/contract/example SimpleMain.java Log: Improved constraint classes Revision Changes Path 1.2 +21 -17 jakarta-commons-sandbox/contract/src/examples/org/apache/commons/contract/example/SpeedCalculator.java Index: SpeedCalculator.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/examples/org/apache/commons/contract/example/SpeedCalculator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SpeedCalculator.java 8 Oct 2004 10:44:57 -0000 1.1 +++ SpeedCalculator.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -43,35 +43,39 @@ private final static String MINUTES = "min"; private final static String HOURS = "h"; - ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[]{ - new ParameterDescriptor(DISTANCE, new ParameterMessage("computeSpeed/parameter/distance"), - new NumberConstraints( + private ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[]{ + new ParameterDescriptor(DISTANCE, new ParameterMessage( + "computeSpeed/parameter/distance"), new NumberConstraints( new Integer(0), null, true)), - new ParameterDescriptor(UNIT, new ParameterMessage("computeSpeed/parameter/unit"), - new StringConstraints( + new ParameterDescriptor(UNIT, new ParameterMessage( + "computeSpeed/parameter/unit"), new StringConstraints( new String[]{SECONDS, MINUTES, HOURS})), - new ParameterDescriptor(TIME, new ParameterMessage("computeSpeed/parameter/time"), - NumberConstraints.POSITIVE)}; - - ResultDescriptor[] resultDescriptors = new ResultDescriptor[]{new ResultDescriptor( + new ParameterDescriptor(TIME, new ParameterMessage( + "computeSpeed/parameter/time"), NumberConstraints.POSITIVE)}; + + private ResultDescriptor[] resultDescriptors = new ResultDescriptor[]{new ResultDescriptor( StateDescriptor.OK_DESCRIPTOR, new ResultEntryDescriptor[]{new ResultEntryDescriptor(SPEED, new LocalizedMessage("computeSpeed/result/speed"), - new NumberConstraints(new Float(0.1), new Integer(Integer.MAX_VALUE)))})}; - + new NumberConstraints(new Float(0.1), new Integer( + Integer.MAX_VALUE)))})}; + /** * Computes the speed in meter per second from the given distance and time. * The time can be given in seconds, minutes or hours, depending on the * content of timeUnit. */ public Result process(Map parameters, Context context) { - float distance = ((Number)parameters.get(DISTANCE)).floatValue(); - float time = ((Number)parameters.get(TIME)).floatValue(); - String timeUnit = (String)parameters.get(UNIT); + float distance = ((Number) parameters.get(DISTANCE)).floatValue(); + float time = ((Number) parameters.get(TIME)).floatValue(); + String timeUnit = (String) parameters.get(UNIT); float speed; - if (timeUnit.equals("s")) speed = distance / time; - else if (timeUnit.equals("min")) speed = distance*60 / time; - else speed = distance*3600 / time; + if (timeUnit.equals("s")) + speed = distance / time; + else if (timeUnit.equals("min")) + speed = distance * 60 / time; + else + speed = distance * 3600 / time; return new Result(StateDescriptor.OK, SPEED, new Float(speed)); } 1.1 jakarta-commons-sandbox/contract/src/examples/org/apache/commons/contract/example/TestLogin.java Index: TestLogin.java =================================================================== /* * * ==================================================================== * * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.commons.contract.example; import org.apache.commons.contract.Result; import org.apache.commons.contract.util.InteractiveMainWrapper; import org.apache.commons.i18n.MessageManager; public class TestLogin { public static void main(String[] args) { MessageManager.install("contract/example", Thread.currentThread().getContextClassLoader().getResourceAsStream("example.xml")); Result result = InteractiveMainWrapper.main(args, new LoginProcessor()); if ( result != Result.OK ) { System.out.println("Login ist fehlgeschlagen."); } else { System.out.println("Login erfolgreich"); } } } 1.1 jakarta-commons-sandbox/contract/src/examples/org/apache/commons/contract/example/LoginProcessor.java Index: LoginProcessor.java =================================================================== /* * * ==================================================================== * * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.commons.contract.example; import java.util.Map; import org.apache.commons.contract.Context; import org.apache.commons.contract.Information; import org.apache.commons.contract.Processor; import org.apache.commons.contract.Result; import org.apache.commons.contract.constraints.StringConstraints; import org.apache.commons.contract.descriptor.ParameterDescriptor; import org.apache.commons.contract.descriptor.ResultDescriptor; import org.apache.commons.contract.descriptor.StateDescriptor; import org.apache.commons.contract.i18n.ParameterMessage; import org.apache.commons.i18n.LocalizedError; import org.apache.commons.i18n.LocalizedMessage; /** * @author Daniel Florey * */ public class LoginProcessor implements Processor { public final static String LOGIN_FAILED = "loginFailed"; public final static StateDescriptor LOGIN_FAILED_DESCRIPTOR = new StateDescriptor( LOGIN_FAILED, new LocalizedMessage( "loginProcessor/state/loginFailed")); private final static String USERNAME = "login"; private final static String PASSWORD = "password"; private final int PWD_MIN_LENGTH = 4, PWD_MAX_LENGTH = 14; private ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[]{ new ParameterDescriptor(USERNAME, new ParameterMessage( "loginProcessor/parameter/username"), StringConstraints.NOT_EMPTY), new ParameterDescriptor(PASSWORD, new ParameterMessage( "loginProcessor/parameter/password"), new StringConstraints( PWD_MIN_LENGTH, PWD_MAX_LENGTH))}; private ResultDescriptor[] resultDescriptors = new ResultDescriptor[]{ new ResultDescriptor(StateDescriptor.OK_DESCRIPTOR), new ResultDescriptor(LOGIN_FAILED_DESCRIPTOR)}; public Result process(Map parameter, Context context) throws Exception { String username = (String) parameter.get(USERNAME); String password = (String) parameter.get(PASSWORD); if (username.equals("Daniel") && !password.equals("Florey")) { context.addInformation(new Information(Information.ERROR, new LocalizedError("loginProcessor/information/wrongPassword"), new String[]{ USERNAME, PASSWORD })); return new Result(LOGIN_FAILED); } return Result.OK; } public ParameterDescriptor[] getParameterDescriptors() { return parameterDescriptors; } public ResultDescriptor[] getResultDescriptors() { return resultDescriptors; } } 1.1 jakarta-commons-sandbox/contract/src/examples/org/apache/commons/contract/example/TestSpeedCalculator.java Index: TestSpeedCalculator.java =================================================================== /* * * ==================================================================== * * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.commons.contract.example; import org.apache.commons.contract.Result; import org.apache.commons.contract.util.InteractiveMainWrapper; import org.apache.commons.i18n.MessageManager; public class TestSpeedCalculator { public static void main(String[] args) { MessageManager.install("contract/example", Thread.currentThread().getContextClassLoader().getResourceAsStream("example.xml")); Result result = InteractiveMainWrapper.main(args, new SpeedCalculator()); if ( result != null ) { System.out.println("Speed: "+result.getResultEntries().get(SpeedCalculator.SPEED)); } } } 1.2 +82 -3 jakarta-commons-sandbox/contract/src/config/constraints.xml Index: constraints.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/config/constraints.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- constraints.xml 8 Oct 2004 09:36:20 -0000 1.1 +++ constraints.xml 18 Dec 2004 13:52:16 -0000 1.2 @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="UTF-8" ?> <messages> - <message id="booleanOnly"> + <!-- Verbosed constraints --> + <!-- Date constraints --> + <message id="unconstrainedBoolean"> <locale language="en"> <entry key="text">Boolean values ('true' or 'false') are valid.</entry> </locale> @@ -8,7 +10,8 @@ <entry key="text">Wahrheitswerte (Boolean), also 'true' oder 'false' sind erlaubt.</entry> </locale> </message> - <message id="datesOnly"> + <!-- Date constraints --> + <message id="unconstrainedDate"> <locale language="en"> <entry key="text">Date values are valid.</entry> </locale> @@ -16,7 +19,7 @@ <entry key="text">Datumswerte sind erlaubt.</entry> </locale> </message> - <message id="datesBetweenOnly"> + <message id="constrainedDateRange"> <locale language="en"> <entry key="text">Date values between {0} and {1} are valid.</entry> </locale> @@ -24,6 +27,74 @@ <entry key="text">Datumswerte zwischen {0} sind {1} erlaubt.</entry> </locale> </message> + <!-- Array constraints --> + <message id="unconstrainedArray"> + <locale language="en"> + <entry key="text">Array values are valid.</entry> + </locale> + <locale language="de"> + <entry key="text">Arraywerte sind erlaubt.</entry> + </locale> + </message> + <message id="constrainedArray"> + <locale language="en"> + <entry key="text">All array values must match the following constraints: {0}</entry> + </locale> + <locale language="de"> + <entry key="text">Alle Werte des Arrays müssen folgende Bedingung erfüllen: {0}</entry> + </locale> + </message> + <!-- List constraints --> + <message id="unconstrainedList"> + <locale language="en"> + <entry key="text">List values are valid.</entry> + </locale> + <locale language="de"> + <entry key="text">Listen sind erlaubt.</entry> + </locale> + </message> + <message id="constrainedList"> + <locale language="en"> + <entry key="text">All list values must match the following constraints: {0}</entry> + </locale> + <locale language="de"> + <entry key="text">Alle Einträge der Liste müssen folgende Bedingung erfüllen: {0}</entry> + </locale> + </message> + <!-- Locale constraints --> + <message id="unconstrainedLocale"> + <locale language="en"> + <entry key="text">Locale values are valid.</entry> + </locale> + <locale language="de"> + <entry key="text">Alle Objekte vom Typ Locale sind erlaubt.</entry> + </locale> + </message> + <!-- Unconstrained constraints, similar to a typed java method parameter --> + <message id="unconstrained"> + <locale language="en"> + <entry key="text">All values are valid.</entry> + </locale> + <locale language="de"> + <entry key="text">Alle Werte sind erlaubt.</entry> + </locale> + </message> + <message id="constrainedUnconstrained"> + <locale language="en"> + <entry key="text">All values of type {0} are valid.</entry> + </locale> + <locale language="de"> + <entry key="text">Alle Werte vom Typ {0} sind erlaubt.</entry> + </locale> + </message> + <message id="invalidObjectType"> + <locale language="en"> + <entry key="text">The given value {1} can not be casted to the requred type {0}.</entry> + </locale> + <locale language="de"> + <entry key="text">Der gegebene Wert {1} ist nicht vom geforderten Typ {0}.</entry> + </locale> + </message> <!-- Number constraints --> <message id="uncastableNumber"> <locale language="en"> @@ -118,6 +189,14 @@ </locale> <locale language="de"> <entry key="text">Die folgenden Zeichenketten sind erlaubt: {0}</entry> + </locale> + </message> + <message id="stringLengthGreater"> + <locale language="en"> + <entry key="text">The strings must contain at least {0} characters</entry> + </locale> + <locale language="de"> + <entry key="text">Die Zeichenkette muss mindestens {0} Buchstaben enthalten</entry> </locale> </message> </messages> 1.2 +39 -2 jakarta-commons-sandbox/contract/src/config/example.xml Index: example.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/config/example.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- example.xml 8 Oct 2004 09:36:20 -0000 1.1 +++ example.xml 18 Dec 2004 13:52:16 -0000 1.2 @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8" ?> <messages> + <!-- Messages for speed calculator example --> <message id="computeSpeed/parameter/distance"> <locale language="en"> <entry key="title">Distance</entry> @@ -12,7 +13,7 @@ <entry key="prompt">Bitte geben Sie die Entfernung an:</entry> </locale> </message> - <message id="computeSpeed/parameter/unit"> + <message id="computeSpeed/parameter/unit"> <locale language="en"> <entry key="title">Unit</entry> <entry key="text">The measuring unit for the time</entry> @@ -24,7 +25,7 @@ <entry key="prompt">Bitte geben Sie die Maßeinheit ein:</entry> </locale> </message> - <message id="computeSpeed/parameter/time"> + <message id="computeSpeed/parameter/time"> <locale language="en"> <entry key="title">Time</entry> <entry key="text">The time in the chosen unit</entry> @@ -34,6 +35,42 @@ <entry key="title">Zeit</entry> <entry key="text">Die Zeit in der festgelegten Maßeinheit</entry> <entry key="prompt">Bitte geben Sie die Zeit ein:</entry> + </locale> + </message> + + <!-- Messages for login processor example --> + <message id="loginProcessor/parameter/username"> + <locale language="en"> + <entry key="title">Username</entry> + <entry key="text">Name of the user to log in</entry> + <entry key="prompt">Enter the username:</entry> + </locale> + <locale language="de"> + <entry key="title">Benutzer</entry> + <entry key="text">Der Name des anzumeldenden Benutzers</entry> + <entry key="prompt">Bitte geben Sie den Benutzernamen an:</entry> + </locale> + </message> + <message id="loginProcessor/parameter/password"> + <locale language="en"> + <entry key="title">Password</entry> + <entry key="text">The password of the given user</entry> + <entry key="prompt">Enter the password:</entry> + </locale> + <locale language="de"> + <entry key="title">Passwort</entry> + <entry key="text">Das Passwort des gewählten Benutzers</entry> + <entry key="prompt">Bitte geben Sie das Password ein:</entry> + </locale> + </message> + <message id="loginProcessor/information/wrongPassword"> + <locale language="en"> + <entry key="title">Wrong password!</entry> + <entry key="text">The given password is wrong</entry> + </locale> + <locale language="de"> + <entry key="title">Passwort falsch!</entry> + <entry key="text">Das Passwort ist ungültig</entry> </locale> </message> </messages> 1.2 +1 -1 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/BooleanConstraints.java Index: BooleanConstraints.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/BooleanConstraints.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BooleanConstraints.java 8 Oct 2004 09:36:19 -0000 1.1 +++ BooleanConstraints.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -23,6 +23,6 @@ } public LocalizedText verboseConstraints() { - return new LocalizedText("booleansOnly"); + return new LocalizedText("unconstrainedBoolean"); } } 1.2 +19 -1 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/Unconstrained.java Index: Unconstrained.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/Unconstrained.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Unconstrained.java 8 Oct 2004 09:36:19 -0000 1.1 +++ Unconstrained.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -1,19 +1,37 @@ package org.apache.commons.contract.constraints; import org.apache.commons.contract.Context; +import org.apache.commons.i18n.LocalizedError; import org.apache.commons.i18n.LocalizedText; public class Unconstrained implements Constraints { public final static Unconstrained UNCONSTRAINED = new Unconstrained(); + private Class clazz; + + public Unconstrained() { + this.clazz = null; + } + + public Unconstrained(Class clazz) { + this.clazz = clazz; + } + public Object cast(Object value, Context context) throws CastException { return value; } public void validate(Object value, Context context) throws ValidationException { + if ( clazz != null && !clazz.isInstance(value) ) { + throw new ValidationException(new LocalizedError("invalidObjectType", new Object[] { clazz, value })); + } } public LocalizedText verboseConstraints() { - return new LocalizedText("booleansOnly"); + if ( clazz == null ) { + return new LocalizedText("unconstrained"); + } else { + return new LocalizedText("constrainedUnconstrained"); + } } } 1.2 +4 -1 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/MapConstraints.java Index: MapConstraints.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/MapConstraints.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MapConstraints.java 8 Oct 2004 09:36:19 -0000 1.1 +++ MapConstraints.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -115,7 +115,10 @@ } public LocalizedText verboseConstraints() { - return new LocalizedText("booleansOnly"); + if ( entryConstraints.isEmpty() ) { + return new LocalizedText("invalidMapConstraints"); + } + return new LocalizedText("unconstrainedMap"); } } 1.2 +2 -2 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/DateConstraints.java Index: DateConstraints.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/DateConstraints.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DateConstraints.java 8 Oct 2004 09:36:19 -0000 1.1 +++ DateConstraints.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -71,8 +71,8 @@ public LocalizedText verboseConstraints() { if ( constrained ) { - return new LocalizedText("datesBetweenOnly", new Object[] { earliest, latest }); + return new LocalizedText("constrainedDateRange", new Object[] { earliest, latest }); } - return new LocalizedText("datesOnly"); + return new LocalizedText("unconstrainedDate"); } } 1.2 +6 -2 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/ArrayConstraints.java Index: ArrayConstraints.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/ArrayConstraints.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ArrayConstraints.java 8 Oct 2004 09:36:19 -0000 1.1 +++ ArrayConstraints.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -69,7 +69,11 @@ } public LocalizedText verboseConstraints() { - return new LocalizedText("booleansOnly"); + if ( entryValueDescriptor == Unconstrained.UNCONSTRAINED ) { + return new LocalizedText("unconstrainedArray"); + } else { + LocalizedText verbosedEntryContrstaints = entryValueDescriptor.verboseConstraints(); + return new LocalizedText("constrainedArray", new String[] { verbosedEntryContrstaints.getText() }); + } } - } 1.2 +6 -1 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/ListConstraints.java Index: ListConstraints.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/ListConstraints.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ListConstraints.java 8 Oct 2004 09:36:19 -0000 1.1 +++ ListConstraints.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -64,6 +64,11 @@ } public LocalizedText verboseConstraints() { - return new LocalizedText("booleansOnly"); + if ( entryValueDescriptor == Unconstrained.UNCONSTRAINED ) { + return new LocalizedText("unconstrainedList"); + } else { + LocalizedText verbosedEntryContrstaints = entryValueDescriptor.verboseConstraints(); + return new LocalizedText("constrainedList", new String[] { verbosedEntryContrstaints.getText() }); + } } } 1.2 +1 -1 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/LocaleConstraints.java Index: LocaleConstraints.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/constraints/LocaleConstraints.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- LocaleConstraints.java 8 Oct 2004 09:36:19 -0000 1.1 +++ LocaleConstraints.java 18 Dec 2004 13:52:16 -0000 1.2 @@ -24,6 +24,6 @@ } public LocalizedText verboseConstraints() { - return new LocalizedText("booleansOnly"); + return new LocalizedText("unconstrainedLocale"); } } 1.4 +10 -0 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/util/MainWrapper.java Index: MainWrapper.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/util/MainWrapper.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- MainWrapper.java 7 Dec 2004 20:52:18 -0000 1.3 +++ MainWrapper.java 18 Dec 2004 13:52:16 -0000 1.4 @@ -20,11 +20,14 @@ package org.apache.commons.contract.util; import java.util.HashMap; +import java.util.Iterator; +import java.util.List; import java.util.Map; import org.apache.commons.contract.Context; import org.apache.commons.contract.ContractViolationException; import org.apache.commons.contract.Executor; +import org.apache.commons.contract.Information; import org.apache.commons.contract.Processor; import org.apache.commons.contract.Result; import org.apache.commons.contract.context.VMContext; @@ -101,5 +104,12 @@ } } System.out.println(); + } + + public static void printInformations(List informations) { + for ( Iterator i = informations.iterator(); i.hasNext(); ) { + Information information = (Information)i.next(); + System.out.println("Folgendes: "+information.getLocalizedError().getText()); + } } } 1.3 +4 -1 jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/util/InteractiveMainWrapper.java Index: InteractiveMainWrapper.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/contract/src/java/org/apache/commons/contract/util/InteractiveMainWrapper.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- InteractiveMainWrapper.java 7 Dec 2004 20:52:17 -0000 1.2 +++ InteractiveMainWrapper.java 18 Dec 2004 13:52:16 -0000 1.3 @@ -37,6 +37,7 @@ public class InteractiveMainWrapper extends MainWrapper { public static Result main(String []args, Processor processor) { Executor.init(); + printUsage(processor); Context context = new VMContext(); ParameterDescriptor[] parameterDescriptors = processor.getParameterDescriptors(); Map parameters = new HashMap(); @@ -60,7 +61,9 @@ parameters.put(parameterDescriptors[i].getName(), value); } try { - return Executor.process(processor, parameters, context); + Result result = Executor.process(processor, parameters, context); + printInformations(context.getInformations()); + return result; } catch ( ContractViolationException exception ) { printException(exception); System.out.println();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]