You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2007/09/18 15:24:26 UTC
svn commit: r576899 -
/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/objectmodel/ObjectModelImpl.java
Author: vgritsenko
Date: Tue Sep 18 06:24:25 2007
New Revision: 576899
URL: http://svn.apache.org/viewvc?rev=576899&view=rev
Log:
a bit of cleanup
Modified:
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/objectmodel/ObjectModelImpl.java
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/objectmodel/ObjectModelImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/objectmodel/ObjectModelImpl.java?rev=576899&r1=576898&r2=576899&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/objectmodel/ObjectModelImpl.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/objectmodel/ObjectModelImpl.java Tue Sep 18 06:24:25 2007
@@ -49,12 +49,12 @@
private Map singleValueMap;
private MultiMap multiValueMap;
private MultiMap multiValueMapForLocated;
- private Map initialEntries = null;
-
+ private Map initialEntries;
//FIXME: This is a temporary solution
private boolean modified;
+
public ObjectModelImpl() {
singleValueMap = new HashMap();
//FIXME: Not sure if this makes sense
@@ -63,7 +63,6 @@
localContexts = new ArrayStack();
multiValueMap = MultiValueMap.decorate(new HashMap(), StackReversedIteration.class);
multiValueMapForLocated = MultiValueMap.decorate(new HashMap(), StackReversedIteration.class);
- modified = false;
}
public static class StackReversedIteration extends ArrayStack {
@@ -79,8 +78,10 @@
public Object get(Object key) {
//FIXME: This should be done more elegantly
- if ("this".equals(key))
+ if ("this".equals(key)) {
return this;
+ }
+
return super.get(key);
}
@@ -90,8 +91,9 @@
public Object put(Object key, Object value) {
modified = true;
- if (!localContexts.empty())
+ if (!localContexts.empty()) {
((ArrayStack) localContexts.peek()).push(new DefaultKeyValue(key, value));
+ }
singleValueMap.put(key, value);
multiValueMap.put(key, value);
@@ -120,8 +122,9 @@
* @return located Map or null if <code>createIfNeeded</code> is false and Map cannot be found
*/
private Map locateMapAt(String path, boolean createIfNeeded) {
- if (path.lastIndexOf(SEGMENT_SEPARATOR) == -1)
+ if (path.lastIndexOf(SEGMENT_SEPARATOR) == -1) {
return this;
+ }
Map map = this;
int segmentBegin = 0;
@@ -130,12 +133,16 @@
String key = path.substring(segmentBegin, segmentEnd);
if (map.containsKey(key)) {
Object obj = map.get(key);
- if (!(obj instanceof Map))
+ if (!(obj instanceof Map)) {
throw new ClassCastException("Object at path " + path.substring(0, segmentEnd) + "is not a Map");
+ }
+
map = (Map)obj;
} else {
- if (!createIfNeeded)
+ if (!createIfNeeded) {
return null;
+ }
+
Map newMap = new HashMap();
map.put(key, newMap);
map = newMap;
@@ -143,42 +150,53 @@
segmentBegin = segmentEnd + 1;
segmentEnd = path.indexOf(SEGMENT_SEPARATOR, segmentBegin);
}
+
return map;
}
public void putAt(String path, Object value) {
- if (path == null)
+ if (path == null) {
throw new NullPointerException("Path cannot be null.");
- if (path.length() == 0)
+ }
+ if (path.length() == 0) {
throw new IllegalArgumentException("Path cannot be empty");
+ }
Map map = locateMapAt(path, true);
String key = path.substring(path.lastIndexOf(SEGMENT_SEPARATOR) + 1, path.length());
- if (!localContexts.empty())
+ if (!localContexts.empty()) {
((ArrayStack) localContexts.peek()).push(new PathValue(path, value));
+ }
map.put(key, value);
}
private void removeAt(String path, Object value) {
- if (path == null)
+ if (path == null) {
throw new NullPointerException("Path cannot be null.");
- if (path.length() == 0)
+ }
+ if (path.length() == 0) {
throw new IllegalArgumentException("Path cannot be empty");
+ }
Map map = locateMapAt(path, false);
String key = path.substring(path.lastIndexOf(SEGMENT_SEPARATOR) + 1, path.length());
- if (map == null)
+ if (map == null) {
return;
+ }
+
multiValueMapForLocated.remove(key, value);
- if (multiValueMap.containsKey(key))
- map.put(key, ((StackReversedIteration)multiValueMap.get(key)).peek());
- else
+ if (multiValueMap.containsKey(key)) {
+ map.put(key, ((StackReversedIteration) multiValueMap.get(key)).peek());
+ } else {
map.remove(key);
+ }
}
public void cleanupLocalContext() {
- if (localContexts.empty())
+ if (localContexts.empty()) {
throw new IllegalStateException("Local contexts stack is empty");
+ }
+
ArrayStack removeEntries = (ArrayStack)localContexts.pop();
while (!removeEntries.isEmpty()) {
if (removeEntries.peek() instanceof PathValue) {
@@ -190,10 +208,11 @@
Object value = entry.getValue();
multiValueMap.remove(key, value);
- if (multiValueMap.containsKey(key))
- singleValueMap.put(key, ((StackReversedIteration)multiValueMap.get(key)).peek());
- else
+ if (multiValueMap.containsKey(key)) {
+ singleValueMap.put(key, ((StackReversedIteration) multiValueMap.get(key)).peek());
+ } else {
singleValueMap.remove(key);
+ }
}
}
}
@@ -207,24 +226,29 @@
}
public void setInitialEntries(Map initialEntries) {
- if (this.initialEntries != null)
+ if (this.initialEntries != null) {
throw new IllegalStateException("Object Model has initial entries set already.");
+ }
+
this.initialEntries = initialEntries;
for (Iterator keysIterator = initialEntries.keySet().iterator(); keysIterator.hasNext(); ) {
Object key = keysIterator.next();
put(key, ((ObjectModelProvider)initialEntries.get(key)).getObject());
}
- modified = false;
+
+ this.modified = false;
}
public void fillContext() {
// Hack: I use jxpath to populate the context object's properties
// in the jexl context
Object contextObject = get(CONTEXTBEAN);
- if (contextObject == null)
+ if (contextObject == null) {
//nothing to do
return;
+ }
+ // FIXME Exception Handling
final JXPathBeanInfo bi =
JXPathIntrospector.getBeanInfo(contextObject.getClass());
if (bi.isDynamic()) {
@@ -237,12 +261,12 @@
for (int i = 0; i < len; i++) {
try {
put(result[i], h.getProperty(contextObject, result[i]));
- } catch (Exception exc) {
- exc.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
- } catch (Exception ignored) {
- ignored.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
}
} else {
PropertyDescriptor[] props = bi.getPropertyDescriptors();
@@ -252,10 +276,10 @@
Method read = props[i].getReadMethod();
if (read != null) {
put(props[i].getName(),
- read.invoke(contextObject, null));
+ read.invoke(contextObject, null));
}
- } catch (Exception ignored) {
- ignored.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
}
@@ -272,7 +296,7 @@
public String getPath() {
return this.path;
- };
+ }
public Object getValue() {
return this.value;
@@ -281,13 +305,14 @@
}
/* (non-Javadoc)
- * @see org.apache.cocoon.el.objectmodel.ObjectModel#setParent(org.apache.cocoon.el.objectmodel.ObjectModel)
+ * @see ObjectModel#setParent(ObjectModel)
*/
public void setParent(ObjectModel parentObjectModel) {
- if (this.modified)
+ if (this.modified) {
throw new IllegalStateException("Setting parent may occur only if Object Model is empty.");
+ }
+
singleValueMap.putAll(parentObjectModel);
multiValueMap.putAll(parentObjectModel.getAll());
- };
-
-}
\ No newline at end of file
+ }
+}