You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2010/05/23 09:11:22 UTC
svn commit: r947370 -
/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
Author: djencks
Date: Sun May 23 07:11:22 2010
New Revision: 947370
URL: http://svn.apache.org/viewvc?rev=947370&view=rev
Log:
If the purpose of an xml env-enty is to suppress injection, don't require the type to be specified.
Modified:
geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java?rev=947370&r1=947369&r2=947370&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java Sun May 23 07:11:22 2010
@@ -105,69 +105,76 @@ public class EnvironmentEntryBuilder ext
for (EnvEntryType envEntry: envEntriesUntyped) {
String name = getStringValue(envEntry.getEnvEntryName());
String type = getStringValue(envEntry.getEnvEntryType());
-
- Class typeClass;
- try {
- typeClass = bundle.loadClass(type);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Could not env-entry type class " + type, e);
- }
-
+
Object value = null;
-
- String strValue = envEntryMap.remove(name);
- if (strValue == null) {
+
+ String strValueOverride = envEntryMap.remove(name);
+ String strValue = null;
+ if (strValueOverride == null) {
strValue = getUntrimmedStringValue(envEntry.getEnvEntryValue());
- if (strValue == null) {
- String lookupName = getStringValue(envEntry.getLookupName());
- if (lookupName != null) {
- if (lookupName.equals(getJndiName(name))) {
- throw new DeploymentException("env-entry lookup name refers to itself");
- }
- value = new JndiReference(lookupName);
+ String lookupName = getStringValue(envEntry.getLookupName());
+ if (strValue != null && lookupName != null) {
+ throw new DeploymentException("You must specify an environment entry value or lookup name but not both. Component: " + module.getAnnotatedApp().toString() + ", name: " + name + ", env-entry-value: " + strValue + ", lookup-name: " + lookupName + "");
+ }
+ if (lookupName != null) {
+ //TODO better circular reference checking
+ if (lookupName.equals(getJndiName(name))) {
+ throw new DeploymentException("env-entry lookup name refers to itself");
}
+ value = new JndiReference(lookupName);
}
+ } else {
+ strValue = strValueOverride;
}
-
+
+
if (value == null) {
if (strValue == null) {
if ("org.apache.geronimo.kernel.Kernel".equals(type)) {
value = new KernelReference();
}
} else {
- try {
- if (String.class.equals(typeClass)) {
- value = strValue;
- } else if (Character.class.equals(typeClass)) {
- if (strValue.length() == 1) {
- value = strValue.charAt(0);
+ if (type != null) {
+ Class typeClass;
+ try {
+ typeClass = bundle.loadClass(type);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("Could not env-entry type class " + type, e);
+ }
+ try {
+ if (String.class.equals(typeClass)) {
+ value = strValue;
+ } else if (Character.class.equals(typeClass)) {
+ if (strValue.length() == 1) {
+ value = strValue.charAt(0);
+ } else {
+ log.warn("invalid character value: {} for name {}", strValue, name );
+ value = ' ';
+ }
+ } else if (Boolean.class.equals(typeClass)) {
+ value = Boolean.valueOf(strValue);
+ } else if (Byte.class.equals(typeClass)) {
+ value = Byte.valueOf(strValue);
+ } else if (Short.class.equals(typeClass)) {
+ value = Short.valueOf(strValue);
+ } else if (Integer.class.equals(typeClass)) {
+ value = Integer.valueOf(strValue);
+ } else if (Long.class.equals(typeClass)) {
+ value = Long.valueOf(strValue);
+ } else if (Float.class.equals(typeClass)) {
+ value = Float.valueOf(strValue);
+ } else if (Double.class.equals(typeClass)) {
+ value = Double.valueOf(strValue);
+ } else if (Class.class.equals(typeClass)) {
+ value = new ClassReference(strValue);
+ } else if (typeClass.isEnum()) {
+ value = Enum.valueOf(typeClass, strValue);
} else {
- log.warn("invalid character value: {} for name {}", strValue, name );
- value = ' ';
+ throw new DeploymentException("Unrecognized env-entry type: " + type);
}
- } else if (Boolean.class.equals(typeClass)) {
- value = Boolean.valueOf(strValue);
- } else if (Byte.class.equals(typeClass)) {
- value = Byte.valueOf(strValue);
- } else if (Short.class.equals(typeClass)) {
- value = Short.valueOf(strValue);
- } else if (Integer.class.equals(typeClass)) {
- value = Integer.valueOf(strValue);
- } else if (Long.class.equals(typeClass)) {
- value = Long.valueOf(strValue);
- } else if (Float.class.equals(typeClass)) {
- value = Float.valueOf(strValue);
- } else if (Double.class.equals(typeClass)) {
- value = Double.valueOf(strValue);
- } else if (Class.class.equals(typeClass)) {
- value = new ClassReference(strValue);
- } else if (typeClass.isEnum()) {
- value = Enum.valueOf(typeClass, strValue);
- } else {
- throw new DeploymentException("Unrecognized env-entry type: " + type);
+ } catch (NumberFormatException e) {
+ throw new DeploymentException("Invalid env-entry value for name: " + name, e);
}
- } catch (NumberFormatException e) {
- throw new DeploymentException("Invalid env-entry value for name: " + name, e);
}
}
}