dflorey 2004/12/30 04:55:57
Modified: projector/src/java/org/apache/slide/projector/constraints
ArrayFactory.java AnyFactory.java MapFactory.java
Added: projector/src/java/org/apache/slide/projector/constraints
DynamicMapConstraints.java
DynamicArrayConstraints.java
DynamicListConstraints.java
Log:
Migration to contract package required introduction of dynamic lists, arrays
and maps
Revision Changes Path
1.3 +2 -2
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/ArrayFactory.java
Index: ArrayFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/ArrayFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ArrayFactory.java 28 Nov 2004 13:54:05 -0000 1.2
+++ ArrayFactory.java 30 Dec 2004 12:55:57 -0000 1.3
@@ -41,8 +41,8 @@
Iterator childrenIterator = element.getChildren().iterator();;
if ( childrenIterator.hasNext() ) {
Constraints allowedArrayValue =
ConstraintsManager.getInstance().loadConstraints((Element)childrenIterator.next());
- return new ArrayConstraints(allowedArrayValue);
+ return new DynamicArrayConstraints(allowedArrayValue);
}
- return new ArrayConstraints();
+ return new DynamicArrayConstraints();
}
}
1.3 +2 -0
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/AnyFactory.java
Index: AnyFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/AnyFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AnyFactory.java 28 Nov 2004 13:54:05 -0000 1.2
+++ AnyFactory.java 30 Dec 2004 12:55:57 -0000 1.3
@@ -6,6 +6,7 @@
import org.apache.commons.contract.constraints.Constraints;
import org.apache.commons.xmlio.out.XMLStringWriter;
import org.apache.commons.xmlio.out.XMLWriter;
+import org.apache.slide.projector.Projector;
import org.apache.slide.projector.value.Any;
import org.apache.slide.projector.value.URI;
import org.apache.slide.projector.value.URIValue;
@@ -30,6 +31,7 @@
String processor = element.getAttributeValue("processor");
String result = element.getAttributeValue("result");
String store = element.getAttributeValue("store");
+ if ( store == null ) store = Projector.NO_STORE;
String key = element.getAttributeValue("key");
String domain = element.getAttributeValue("domain");
URI processorUri = ( processor == null ? null : new
URIValue(processor) );
1.3 +1 -1
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/MapFactory.java
Index: MapFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/MapFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MapFactory.java 28 Nov 2004 13:54:05 -0000 1.2
+++ MapFactory.java 30 Dec 2004 12:55:57 -0000 1.3
@@ -45,7 +45,7 @@
}
public Constraints loadDescriptor(Element element) {
- MapConstraints valueDescriptor = new MapConstraints();
+ MapConstraints valueDescriptor = new DynamicMapConstraints();
for ( Iterator i = element.getChildren().iterator();
i.hasNext(); ) {
Element entry = (Element)i.next();
String key = entry.getAttributeValue("key");
1.1
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/DynamicMapConstraints.java
Index: DynamicMapConstraints.java
===================================================================
package org.apache.slide.projector.constraints;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.contract.Context;
import org.apache.commons.contract.constraints.CastException;
import org.apache.commons.contract.constraints.Constraints;
import org.apache.commons.contract.constraints.MapConstraints;
import org.apache.commons.contract.descriptor.ParameterDescriptor;
import org.apache.commons.i18n.LocalizedError;
import org.apache.slide.projector.value.Any;
public class DynamicMapConstraints extends MapConstraints {
protected Map castedMap(Map map, Context context) throws CastException {
Map castedMap = new HashMap(map);
for ( Iterator i = entryConstraints.iterator(); i.hasNext(); ) {
ParameterDescriptor parameterDescriptor =
(ParameterDescriptor)i.next();
Constraints entryDescriptor =
parameterDescriptor.getConstraints();
String key = parameterDescriptor.getName();
if ( key.equals(ALL) ) {
for ( Iterator j = castedMap.entrySet().iterator();
j.hasNext(); ) {
Map.Entry entry = (Map.Entry)j.next();
Object value = entry.getValue();
if ( value instanceof Any ) {
try {
value = ((Any)value).load(context);
} catch (Exception e) {
throw new CastException(new
LocalizedError("evaluatingAnyFailed"), e);
}
}
castedMap.put(entry.getKey(),
entryDescriptor.cast(value, context));
}
} else {
if ( !castedMap.containsKey(key) ) {
if ( !parameterDescriptor.isRequired() ) {
castedMap.put(key,
parameterDescriptor.getDefaultValue());
}
} else {
Object object = castedMap.get(key);
if ( object == null &&
parameterDescriptor.getDefaultValue() == null ||
object.equals(parameterDescriptor.getDefaultValue())) {
castedMap.put(key, object);
} else {
if ( object instanceof Any ) {
try {
object = ((Any)object).load(context);
} catch (Exception e) {
throw new CastException(new
LocalizedError("evaluatingAnyFailed"), e);
}
}
castedMap.put(key, entryDescriptor.cast(object,
context));
}
}
}
}
return castedMap;
}
}
1.1
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/DynamicArrayConstraints.java
Index: DynamicArrayConstraints.java
===================================================================
package org.apache.slide.projector.constraints;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.contract.Context;
import org.apache.commons.contract.constraints.ArrayConstraints;
import org.apache.commons.contract.constraints.CastException;
import org.apache.commons.contract.constraints.Constraints;
import org.apache.commons.i18n.LocalizedError;
import org.apache.slide.projector.value.Any;
public class DynamicArrayConstraints extends ArrayConstraints {
/**
*
*/
public DynamicArrayConstraints() {
super();
}
/**
* @param entryValueDescriptor
*/
public DynamicArrayConstraints(Constraints entryValueDescriptor) {
super(entryValueDescriptor);
}
public Object cast(Object value, Context context) throws CastException {
Object[] array = null;
if ( value instanceof String[] ) {
array = new Object[((String[])value).length];
for ( int i = 0; i < array.length; i++ ) {
array[i] = entryValueDescriptor.cast(((String
[])value)[i], context);
}
} else if ( value instanceof List ) {
array = new Object[((List)value).size()];
int counter = 0;
for ( Iterator i = ((List)value).iterator(); i.hasNext(); ) {
Object entry = i.next();
if ( entry instanceof Any ) {
try {
entry = ((Any)entry).load(context);
} catch (Exception e) {
throw new CastException(new
LocalizedError("evaluatingAnyFailed"), e);
}
}
array[counter] = entryValueDescriptor.cast(entry, context);
counter++;
}
} else if ( value instanceof Object[] ) {
array = new Object[((Object[])value).length];
for ( int i = 0; i < array.length; i++ ) {
Object entry = ((Object[])value)[i];
if ( entry instanceof Any ) {
try {
entry = ((Any)entry).load(context);
} catch (Exception e) {
throw new CastException(new
LocalizedError("evaluatingAnyFailed"), e);
}
}
array[i] = entryValueDescriptor.cast(entry,
context);
}
} else {
throw new CastException(new LocalizedError("uncastableArray",
new Object[] { value }));
}
return array;
}
}
1.1
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/DynamicListConstraints.java
Index: DynamicListConstraints.java
===================================================================
package org.apache.slide.projector.constraints;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.contract.Context;
import org.apache.commons.contract.constraints.CastException;
import org.apache.commons.contract.constraints.ListConstraints;
import org.apache.commons.i18n.LocalizedError;
import org.apache.slide.projector.value.Any;
public class DynamicListConstraints extends ListConstraints {
public Object cast(Object value, Context context) throws CastException {
List list = new ArrayList();
if ( value instanceof String[] ) {
for ( int i = 0; i < ((String[])value).length; i++ ) {
list.add(entryValueDescriptor.cast(((String
[])value)[i], context));
}
} else if ( value instanceof List ) {
for ( Iterator i = ((List)value).iterator(); i.hasNext(); ) {
Object entry = i.next();
if ( entry instanceof Any ) {
try {
entry = ((Any)entry).load(context);
} catch (Exception e) {
throw new CastException(new
LocalizedError("evaluatingAnyFailed"), e);
}
}
list.add(entryValueDescriptor.cast(entry, context));
}
} else if ( value instanceof Object[] ) {
for ( int i = 0; i < ((Object [])value).length; i++ ) {
Object entry = ((Object [])value)[i];
if ( entry instanceof Any ) {
try {
entry = ((Any)entry).load(context);
} catch (Exception e) {
throw new CastException(new
LocalizedError("evaluatingAnyFailed"), e);
}
}
list.add(entryValueDescriptor.cast(entry, context));
}
} else {
throw new CastException(new LocalizedError("uncastableList",
new Object[] { value }));
}
return list;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]