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]

Reply via email to