You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by hu...@apache.org on 2006/11/22 21:35:47 UTC
svn commit: r478313 - in
/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config:
ClasspathConfigurationProvider.java DefaultSettings.java Settings.java
Author: husted
Date: Wed Nov 22 12:35:46 2006
New Revision: 478313
URL: http://svn.apache.org/viewvc?view=rev&rev=478313
Log:
WW-1483 Javadoc and IDEA refactorings only. No functional changes.
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/Settings.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java?view=diff&rev=478313&r1=478312&r2=478313
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java Wed Nov 22 12:35:46 2006
@@ -132,6 +132,7 @@
/**
* Create instance utilizing a list of packages to scan for Action classes.
+ *
* @param pkgs List of pacaktges to scan for Action Classes.
*/
public ClasspathConfigurationProvider(String[] pkgs) {
@@ -151,10 +152,16 @@
}
+ /**
+ * PageLocator defines a locate method that can be used to discover server pages.
+ */
public static interface PageLocator {
public URL locate(String path);
}
+ /**
+ * ClasspathPathLocator searches the classpath for server pages.
+ */
public static class ClasspathPageLocator implements PageLocator {
public URL locate(String path) {
return ClassLoaderUtil.getResource(path, getClass());
@@ -162,32 +169,49 @@
}
/**
- * @param defaultParentPackage the defaultParentPackage to set
+ * Register a default parent package for the actions.
+ *
+ * @param defaultParentPackage the new defaultParentPackage
*/
public void setDefaultParentPackage(String defaultParentPackage) {
this.defaultParentPackage = defaultParentPackage;
}
/**
- * @param defaultPageExtension the defaultPageExtension to set
+ * Register a default page extension to use when locating pages.
+ *
+ * @param defaultPageExtension the new defaultPageExtension
*/
public void setDefaultPageExtension(String defaultPageExtension) {
this.defaultPageExtension = defaultPageExtension;
}
/**
+ * Reigster a default page prefix to use when locating pages.
+ *
* @param defaultPagePrefix the defaultPagePrefix to set
*/
public void setDefaultPagePrefix(String defaultPagePrefix) {
this.defaultPagePrefix = defaultPagePrefix;
}
+ /**
+ * Register a PageLocation to use to scan for server pages.
+ *
+ * @param locator
+ */
public void setPageLocator(PageLocator locator) {
this.pageLocator = locator;
}
/**
- * @param pkgs A set of packages to load
+ * Scan a list of packages for Action classes.
+ *
+ * This method loads classes that implement the Action interface
+ * or have a class name that ends with the letters "Action".
+ *
+ * @param pkgs A list of packages to load
+ * @see #processActionClass
*/
protected void loadPackages(String[] pkgs) {
@@ -201,6 +225,7 @@
}
}, pkgs);
+
Set<? extends Class<? extends Class>> actionClasses = resolver.getClasses();
for (Object obj : actionClasses) {
Class cls = (Class) obj;
@@ -215,9 +240,14 @@
}
/**
+ * Create a default action mapping for a class instance.
+ *
+ * The namespace annotation is honored, if found, otherwise
+ * the Java package is converted into the namespace
+ * by changing the dots (".") to slashes ("/").
*
* @param cls Action or POJO instance to process
- * @param pkgs Set of packages to scan for Actions
+ * @param pkgs List of packages that were scanned for Actions
*/
protected void processActionClass(Class cls, String[] pkgs) {
String name = cls.getName();
@@ -227,7 +257,7 @@
for (String pkg : pkgs) {
if (name.startsWith(pkg)) {
if (LOG.isDebugEnabled()) {
- LOG.debug("Processing class "+name);
+ LOG.debug("ClasspathConfigurationProvider: Processing class "+name);
}
name = name.substring(pkg.length() + 1);
@@ -249,7 +279,7 @@
String parent = ((ParentPackage)annotation).value();
PackageConfig parentPkg = configuration.getPackageConfig(parent);
if (parentPkg == null) {
- throw new ConfigurationException("Unable to locate parent package "+parent, annotation);
+ throw new ConfigurationException("ClasspathConfigurationProvider: Unable to locate parent package "+parent, annotation);
}
pkgConfig.addParent(parentPkg);
@@ -263,6 +293,7 @@
actionName = actionName.substring(0, actionName.length() - ACTION.length());
}
+ // Force initial letter of action to lowercase
if (actionName.length() > 1) {
int lowerPos = actionName.lastIndexOf('/') + 1;
StringBuilder sb = new StringBuilder();
@@ -282,8 +313,15 @@
}
/**
+ * Finds or creates the package configuration for an Action class.
+ *
+ * The namespace annotation is honored, if found,
+ * and the namespace is checked for a parent configuration.
+ *
+ * @param actionNamespace The configuration namespace
* @param actionPackage The Java package containing our Action classes
- * @return
+ * @param actionClass The Action class instance
+ * @return PackageConfig object for the Action class
*/
protected PackageConfig loadPackageConfig(String actionNamespace, String actionPackage, Class actionClass) {
PackageConfig parent = null;
@@ -307,7 +345,7 @@
}
if (parent == null) {
- throw new ConfigurationException("Unable to locate default parent package: " +
+ throw new ConfigurationException("ClasspathConfigurationProvider: Unable to locate default parent package: " +
defaultParentPackage);
}
pkgConfig.addParent(parent);
@@ -319,27 +357,45 @@
return pkgConfig;
}
+ /**
+ * Default destructor. Override to provide behavior.
+ */
public void destroy() {
}
-
+
+ /**
+ * Register this application's configuration.
+ *
+ * @param config The configuration for this application.
+ */
public void init(Configuration config) {
this.configuration = config;
}
+ /**
+ * Clears and loads the list of packages registered at construction.
+ *
+ * @throws ConfigurationException
+ */
public void loadPackages() throws ConfigurationException {
loadedPackageConfigs.clear();
loadPackages(packages);
initialized = true;
}
+ /**
+ * Indicates whether the packages have been initialized.
+ *
+ * @return True if the packages have been initialized
+ */
public boolean needsReload() {
return !initialized;
}
/**
- * Creates result configs from result annotations, and if a result isn't found,
- * creates them on the fly.
+ * Creates ResultConfig objects from result annotations,
+ * and if a result isn't found, creates it on the fly.
*/
class ResultMap<K,V> extends HashMap<K,V> {
private Class actionClass;
@@ -376,6 +432,12 @@
}
+ /**
+ * Extracts result name and value and calls {@link #createResultConfig}.
+ *
+ * @param result Result annotation reference representing result type to create
+ * @return New or cached ResultConfig object for result
+ */
protected ResultConfig createResultConfig(Result result) {
Class<? extends Object> cls = result.type();
if (cls == NullResult.class) {
@@ -384,6 +446,12 @@
return createResultConfig(result.name(), cls, result.value());
}
+ /**
+ * Retrieve ResultConfig from cache.
+ *
+ * @param key Name of ResultConfig
+ * @return ResultConfig correspnding to key
+ */
public V get(Object key) {
V result = super.get(key);
@@ -391,8 +459,8 @@
return result;
} else {
- // TODO: This code never is actually used, do to how the runtime configuration
- // is created.
+ // This code should never actually be called,
+ // due to how the runtime configuration is created.
String actionPath = pkgConfig.getNamespace() + "/" + actionName;
String fileName = actionPath + "-" + key + defaultPageExtension;
@@ -406,22 +474,26 @@
}
/**
- * @param key
- * @param resultClass
- * @param location
- * @return
+ * Creates a default ResultConfig,
+ * using either the resultClass or the default ResultType for configuration package
+ * associated this ResultMap class.
+ *
+ * @param key The result type name
+ * @param resultClass The class for the result type
+ * @param location Path to the resource represented by this type
+ * @return A ResultConfig for key mapped to location
*/
private ResultConfig createResultConfig(Object key, Class<? extends Object> resultClass, String location) {
Map<? extends Object, ? extends Object> configParams = null;
if (resultClass == null) {
String defaultResultType = pkgConfig.getFullDefaultResultType();
- ResultTypeConfig resultType = (ResultTypeConfig) pkgConfig.getAllResultTypeConfigs().get(defaultResultType);
+ ResultTypeConfig resultType = pkgConfig.getAllResultTypeConfigs().get(defaultResultType);
configParams = resultType.getParams();
String className = resultType.getClazz();
try {
resultClass = ClassLoaderUtil.loadClass(className, getClass());
} catch (ClassNotFoundException ex) {
- throw new ConfigurationException("Unable to locate result class "+className, actionClass);
+ throw new ConfigurationException("ClasspathConfigurationProvider: Unable to locate result class "+className, actionClass);
}
}
@@ -442,7 +514,8 @@
}
}
+ // See superclass for Javadoc
public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
- // Nothing
+ // Override to provide functionality
}
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java?view=diff&rev=478313&r1=478312&r2=478313
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java Wed Nov 22 12:35:46 2006
@@ -32,117 +32,111 @@
/**
- * Default implementation of Settings - creates and delegates to other settingss by using an internal
- * {@link DelegatingSettings}.
+ * DefaultSettings implements optional methods of Settings.
+ * <p>
+ * This class creates and delegates to other settings by using an internal
+ * {@link DelegatingSettings} object.
*/
public class DefaultSettings extends Settings {
+ /**
+ * The logging instance for this class.
+ */
protected Log log = LogFactory.getLog(this.getClass());
- Settings config;
+ /**
+ * The Settings object that handles API calls.
+ */
+ Settings delegate;
/**
- * Creates a new DefaultSettings object by loading all property files
- * and creating an internal {@link DelegatingSettings} object. All calls to get and set
- * in this class will call that settings object.
+ * Constructs an instance by loading the standard property files,
+ * any custom property files (<code>struts.custom.properties</code>),
+ * and any custom message resources ().
+ * <p>
+ * Since this constructor combines Settings from multiple resources,
+ * it utilizes a {@link DelegatingSettings} instance,
+ * and all API calls are handled by that instance.
*/
public DefaultSettings() {
- // Create default implementations
- // Use default properties and struts.properties
+
ArrayList<Settings> list = new ArrayList<Settings>();
+ // stuts.properties, default.properties
try {
list.add(new PropertiesSettings("struts"));
} catch (Exception e) {
- log.warn("Could not find or error in struts.properties", e);
+ log.warn("DefaultSettings: Could not find or error in struts.properties", e);
}
try {
list.add(new PropertiesSettings("org/apache/struts2/default"));
} catch (Exception e) {
- log.error("Could not find org/apache/struts2/default.properties", e);
+ log.error("DefaultSettings: Could not find or error in org/apache/struts2/default.properties", e);
}
- Settings[] configList = new Settings[list.size()];
- config = new DelegatingSettings((Settings[]) list.toArray(configList));
+ Settings[] settings = new Settings[list.size()];
+ delegate = new DelegatingSettings(list.toArray(settings));
- // Add list of additional properties settingss
+ // struts.custom.properties
try {
- StringTokenizer configFiles = new StringTokenizer((String) config.getImpl(StrutsConstants.STRUTS_CUSTOM_PROPERTIES), ",");
+ StringTokenizer customProperties = new StringTokenizer(delegate.getImpl(StrutsConstants.STRUTS_CUSTOM_PROPERTIES), ",");
- while (configFiles.hasMoreTokens()) {
- String name = configFiles.nextToken();
+ while (customProperties.hasMoreTokens()) {
+ String name = customProperties.nextToken();
try {
list.add(new PropertiesSettings(name));
} catch (Exception e) {
- log.error("Could not find " + name + ".properties. Skipping");
+ log.error("DefaultSettings: Could not find " + name + ".properties. Skipping.");
}
}
- configList = new Settings[list.size()];
- config = new DelegatingSettings((Settings[]) list.toArray(configList));
+ settings = new Settings[list.size()];
+ delegate = new DelegatingSettings(list.toArray(settings));
} catch (IllegalArgumentException e) {
- // thrown when Settings is unable to find a certain property
- // eg. struts.custom.properties in default.properties which is commented
- // out
+ // Assume it's OK, since IllegalArgumentException is thrown
+ // when Settings is unable to find a certain setting,
+ // like the struts.custom.properties, which is commented out
}
- // Add additional list of i18n global resource bundles
+ // struts.custom.i18n.resources
try {
LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages");
- StringTokenizer bundleFiles = new StringTokenizer((String) config.getImpl(StrutsConstants.STRUTS_CUSTOM_I18N_RESOURCES), ", ");
+ StringTokenizer customBundles = new StringTokenizer(delegate.getImpl(StrutsConstants.STRUTS_CUSTOM_I18N_RESOURCES), ", ");
- while (bundleFiles.hasMoreTokens()) {
- String name = bundleFiles.nextToken();
+ while (customBundles.hasMoreTokens()) {
+ String name = customBundles.nextToken();
try {
- log.info("Loading global messages from " + name);
+ log.info("DefaultSettings: Loading global messages from " + name);
LocalizedTextUtil.addDefaultResourceBundle(name);
} catch (Exception e) {
- log.error("Could not find " + name + ".properties. Skipping");
+ log.error("DefaultSettings: Could not find " + name + ".properties. Skipping");
}
}
} catch (IllegalArgumentException e) {
- // struts.custom.i18n.resources wasn't provided
+ // Assume it's OK, since many applications do not provide custom resource bundles.
}
}
-
- /**
- * Sets the given property - delegates to the internal config implementation.
- *
- * @see #set(String, String)
- */
- public void setImpl(String aName, String aValue) throws IllegalArgumentException, UnsupportedOperationException {
- config.setImpl(aName, aValue);
+ // See superclass for Javadoc
+ public void setImpl(String name, String value) throws IllegalArgumentException, UnsupportedOperationException {
+ delegate.setImpl(name, value);
}
- /**
- * Gets the specified property - delegates to the internal config implementation.
- *
- * @see #get(String)
- */
+ // See superclass for Javadoc
public String getImpl(String aName) throws IllegalArgumentException {
- // Delegate
- return config.getImpl(aName);
+ return delegate.getImpl(aName);
}
- /**
- * Determines whether or not a value has been set - delegates to the internal config implementation.
- *
- * @see #isSet(String)
- */
+ // See superclass for Javadoc
public boolean isSetImpl(String aName) {
- return config.isSetImpl(aName);
+ return delegate.isSetImpl(aName);
}
- /**
- * Returns a list of all property names - delegates to the internal config implementation.
- *
- * @see #list()
- */
+ // See superclass for Javadoc
public Iterator listImpl() {
- return config.listImpl();
+ return delegate.listImpl();
}
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/Settings.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/Settings.java?view=diff&rev=478313&r1=478312&r2=478313
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/Settings.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/Settings.java Wed Nov 22 12:35:46 2006
@@ -244,24 +244,24 @@
/**
* Implements the {@link #get(String)} method.
*
- * @param aName The name of the setting value to retreive
+ * @param name The name of the setting value to retreive
* @return The setting value as a String
* @throws IllegalArgumentException if an error occurs when retrieving the value
* @see #get(String)
*/
- public String getImpl(String aName) throws IllegalArgumentException {
+ public String getImpl(String name) throws IllegalArgumentException {
return null;
}
/**
* Implements the {@link #getLocation(String)} method.
*
+ * @param name Name of the setting to locate
* @return The location of the setting
- * @param aName Name of the setting to locate
* @throws IllegalArgumentException if an error occurs when retrieving the value
* @see #getLocation(String)
*/
- public Location getLocationImpl(String aName) throws IllegalArgumentException {
+ public Location getLocationImpl(String name) throws IllegalArgumentException {
return null;
}