You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by ah...@apache.org on 2007/03/01 21:06:04 UTC
svn commit: r513472 - in /hivemind/hivemind2/trunk:
annotations/src/java/org/apache/hivemind/annotations/internal/
examples/src/java/org/apache/examples/definition/
framework/src/java/org/apache/hivemind/definition/
framework/src/java/org/apache/hivemi...
Author: ahuegen
Date: Thu Mar 1 12:06:02 2007
New Revision: 513472
URL: http://svn.apache.org/viewvc?view=rev&rev=513472
Log:
Laziness of configurations can be configured in definition API
Modified:
hivemind/hivemind2/trunk/annotations/src/java/org/apache/hivemind/annotations/internal/AnnotatedModuleProcessor.java
hivemind/hivemind2/trunk/examples/src/java/org/apache/examples/definition/JavaDefinitionExample.java
hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/ConfigurationPointDefinition.java
hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ConfigurationPointDefinitionImpl.java
hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ModuleDefinitionHelper.java
hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/ConfigurationPointImpl.java
hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/CoreServicesProvider.java
hivemind/hivemind2/trunk/framework/src/test/hivemind/test/FrameworkTestCase.java
hivemind/hivemind2/trunk/xml/src/descriptor/META-INF/hivemodule.xml
hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlCoreServicesProvider.java
hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java
hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/ConfigurationPointDescriptor.java
hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java
hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties
hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/BadAttributes.xml
hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/Simple.xml
Modified: hivemind/hivemind2/trunk/annotations/src/java/org/apache/hivemind/annotations/internal/AnnotatedModuleProcessor.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/annotations/src/java/org/apache/hivemind/annotations/internal/AnnotatedModuleProcessor.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/annotations/src/java/org/apache/hivemind/annotations/internal/AnnotatedModuleProcessor.java (original)
+++ hivemind/hivemind2/trunk/annotations/src/java/org/apache/hivemind/annotations/internal/AnnotatedModuleProcessor.java Thu Mar 1 12:06:02 2007
@@ -272,7 +272,8 @@
visibility = Visibility.PRIVATE;
}
ConfigurationPointDefinitionImpl cpd = new ConfigurationPointDefinitionImpl(module, configuration.id(),
- location, visibility, method.getReturnType().getName(), Occurances.UNBOUNDED);
+ location, visibility, method.getReturnType().getName(), Occurances.UNBOUNDED,
+ false);
module.addConfigurationPoint(cpd);
// Add method implementation as initial contribution
Modified: hivemind/hivemind2/trunk/examples/src/java/org/apache/examples/definition/JavaDefinitionExample.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/examples/src/java/org/apache/examples/definition/JavaDefinitionExample.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/examples/src/java/org/apache/examples/definition/JavaDefinitionExample.java (original)
+++ hivemind/hivemind2/trunk/examples/src/java/org/apache/examples/definition/JavaDefinitionExample.java Thu Mar 1 12:06:02 2007
@@ -23,6 +23,10 @@
import org.apache.hivemind.impl.RegistryBuilder;
import org.apache.hivemind.internal.AbstractServiceImplementationConstructor;
import org.apache.hivemind.internal.ServiceModel;
+import org.apache.hivemind.service.Autowiring;
+import org.apache.hivemind.service.ClassFactory;
+import org.apache.hivemind.service.ThreadEventNotifier;
+import org.apache.hivemind.service.ThreadLocalStorage;
import org.apache.hivemind.util.ClasspathResource;
/**
@@ -40,6 +44,11 @@
Calculator calculator = (Calculator) registry.getService(Calculator.class);
double result = calculator.add(10, 20);
System.out.println("Result: " + result);
+
+ registry.getService("hivemind.ClassFactory", ClassFactory.class);
+ registry.getService("hivemind.ThreadEventNotifier", ThreadEventNotifier.class);
+ registry.getService("hivemind.ThreadLocalStorage", ThreadLocalStorage.class);
+ registry.getService("hivemind.Autowiring", Autowiring.class);
}
private Registry constructRegistry()
@@ -49,6 +58,7 @@
registryDefinition.addModule(module);
RegistryBuilder builder = new RegistryBuilder(registryDefinition);
+ builder.autoDetectModules();
Registry registry = builder.constructRegistry();
return registry;
}
Modified: hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/ConfigurationPointDefinition.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/ConfigurationPointDefinition.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/ConfigurationPointDefinition.java (original)
+++ hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/ConfigurationPointDefinition.java Thu Mar 1 12:06:02 2007
@@ -68,4 +68,9 @@
* @return returns all parsers as instances of {@link ConfigurationParserDefinition}
*/
public Collection getParsers();
+
+ /**
+ * @return returns true if the configuration should be created on first call to one of its methods.
+ */
+ public boolean isLazy();
}
Modified: hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ConfigurationPointDefinitionImpl.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ConfigurationPointDefinitionImpl.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ConfigurationPointDefinitionImpl.java (original)
+++ hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ConfigurationPointDefinitionImpl.java Thu Mar 1 12:06:02 2007
@@ -45,6 +45,8 @@
private Collection _contributions = new ArrayList();
private Map _parsers = new HashMap();
+
+ private boolean _lazy;
public ConfigurationPointDefinitionImpl(ModuleDefinition module)
{
@@ -52,11 +54,12 @@
}
public ConfigurationPointDefinitionImpl(ModuleDefinition module, String id, Location location, Visibility visibility,
- String containerClassName, Occurances expectedContributions)
+ String containerClassName, Occurances expectedContributions, boolean lazy)
{
super(module, id, location, visibility);
_containerClassName = containerClassName;
_expectedContributions = expectedContributions;
+ _lazy = lazy;
}
/**
@@ -151,6 +154,24 @@
public ConfigurationParserDefinition getParser(String inputFormat)
{
return (ConfigurationParserDefinition) _parsers.get(inputFormat);
+ }
+
+ /**
+ * @see org.apache.hivemind.definition.ConfigurationPointDefinition#isLazy()
+ */
+ public boolean isLazy()
+ {
+ return _lazy;
+ }
+
+ /**
+ * Sets the lazy mode of the configuration. Lazy construction is supported only if
+ * the configuration type is an interface.
+ * @param lazy true if if the configuration should be created on first call to one of its methods.
+ */
+ protected void setLazy(boolean lazy)
+ {
+ _lazy = lazy;
}
Modified: hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ModuleDefinitionHelper.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ModuleDefinitionHelper.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ModuleDefinitionHelper.java (original)
+++ hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/definition/impl/ModuleDefinitionHelper.java Thu Mar 1 12:06:02 2007
@@ -81,10 +81,10 @@
serviceModel);
}
- public ConfigurationPointDefinition addConfigurationPoint(String configurationPointId, String containerType)
+ public ConfigurationPointDefinition addConfigurationPoint(String configurationPointId, String containerType, boolean lazy)
{
ConfigurationPointDefinitionImpl result = new ConfigurationPointDefinitionImpl(_module, configurationPointId, _module
- .getLocation(), Visibility.PUBLIC, containerType, Occurances.UNBOUNDED);
+ .getLocation(), Visibility.PUBLIC, containerType, Occurances.UNBOUNDED, lazy);
_module.addConfigurationPoint(result);
return result;
Modified: hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/ConfigurationPointImpl.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/ConfigurationPointImpl.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/ConfigurationPointImpl.java (original)
+++ hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/ConfigurationPointImpl.java Thu Mar 1 12:06:02 2007
@@ -113,12 +113,13 @@
*/
public boolean isLazy()
{
- // TODO annotations: make configurable
// exclude ServiceModels, otherwise a cycle occurs because the proxy generation
// requires the {@link ClassFactory service}
+ // non interface types are not supported because this gets just too expensive
+ // in terms of cpu and memory: 3 proxy classes would be needed
return !getExtensionPointId().equals("hivemind.ServiceModels") &&
getConfigurationType().isInterface() &&
- !Modifier.isFinal(getConfigurationType().getModifiers());
+ getConfigurationPointDefinition().isLazy();
}
/**
Modified: hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/CoreServicesProvider.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/CoreServicesProvider.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/CoreServicesProvider.java (original)
+++ hivemind/hivemind2/trunk/framework/src/java/org/apache/hivemind/impl/CoreServicesProvider.java Thu Mar 1 12:06:02 2007
@@ -204,7 +204,7 @@
// Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started.
// The order in which services are instantiated is not specified.
- helper.addConfigurationPoint("EagerLoad", List.class.getName());
+ helper.addConfigurationPoint("EagerLoad", List.class.getName(), false);
}
/**
@@ -231,7 +231,7 @@
// A configuration to which startup objects may be contributed (as objects or services).
// Startup objects must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.
- ConfigurationPointDefinition cpd = helper.addConfigurationPoint("Startup", List.class.getName());
+ ConfigurationPointDefinition cpd = helper.addConfigurationPoint("Startup", List.class.getName(), false);
final List services = getDefaultStartupServices();
helper.addContributionDefinition(cpd, new Contribution() {
@@ -255,7 +255,7 @@
{
ConfigurationPointDefinition cpd = helper.addConfigurationPoint("ServiceModels",
- Map.class.getName());
+ Map.class.getName(), false);
final List serviceModels = getDefaultServiceModels();
helper.addContributionDefinition(cpd, new Contribution() {
@@ -344,7 +344,7 @@
private void addAutowiringStrategiesConfiguration()
{
- ConfigurationPointDefinition cpd = helper.addConfigurationPoint("AutowiringStrategies", List.class.getName());
+ ConfigurationPointDefinition cpd = helper.addConfigurationPoint("AutowiringStrategies", List.class.getName(), false);
final List serviceModels = getDefaultAutowiringStrategies();
helper.addContributionDefinition(cpd, new Contribution() {
Modified: hivemind/hivemind2/trunk/framework/src/test/hivemind/test/FrameworkTestCase.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/framework/src/test/hivemind/test/FrameworkTestCase.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/framework/src/test/hivemind/test/FrameworkTestCase.java (original)
+++ hivemind/hivemind2/trunk/framework/src/test/hivemind/test/FrameworkTestCase.java Thu Mar 1 12:06:02 2007
@@ -101,7 +101,7 @@
{
ConfigurationPointDefinitionImpl result = new ConfigurationPointDefinitionImpl(module, pointId,
newLocation(), Visibility.PUBLIC, ArrayList.class.getName(),
- Occurances.UNBOUNDED);
+ Occurances.UNBOUNDED, false);
return result;
}
Modified: hivemind/hivemind2/trunk/xml/src/descriptor/META-INF/hivemodule.xml
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/descriptor/META-INF/hivemodule.xml?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/descriptor/META-INF/hivemodule.xml (original)
+++ hivemind/hivemind2/trunk/xml/src/descriptor/META-INF/hivemodule.xml Thu Mar 1 12:06:02 2007
@@ -443,7 +443,7 @@
</element>
</schema>
- <configuration-point id="Translators">
+ <configuration-point id="Translators" lazy="true">
Used to define new translators that can be used in contribution conversion rules.
Translators must have unique names.
Modified: hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlCoreServicesProvider.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlCoreServicesProvider.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlCoreServicesProvider.java (original)
+++ hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlCoreServicesProvider.java Thu Mar 1 12:06:02 2007
@@ -105,8 +105,8 @@
*/
private void addSymbolSourcesConfiguration(ModuleDefinition md)
{
- ConfigurationPointDefinition cpd = helper.addConfigurationPoint("SymbolSources", List.class.getName());
-
+ ConfigurationPointDefinition cpd = helper.addConfigurationPoint("SymbolSources", List.class.getName(), true);
+
helper.addContributionDefinition(cpd, new Contribution()
{
@@ -156,7 +156,7 @@
// Configuration point for setting defaults for symbol values.
- helper.addConfigurationPoint(configurationId, Map.class.getName());
+ helper.addConfigurationPoint(configurationId, Map.class.getName(), false);
}
/**
Modified: hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java (original)
+++ hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java Thu Mar 1 12:06:02 2007
@@ -288,7 +288,7 @@
ConfigurationPointDefinitionImpl configurationPoint = new ConfigurationPointDefinitionImpl(
module, cpd.getId(), cpd.getLocation(), cpd.getVisibility(),
- cpd.getType(), cpd.getCount());
+ cpd.getType(), cpd.getCount(), cpd.isLazy());
module.addConfigurationPoint(configurationPoint);
// If schema is embedded we can add a parser now, otherwise it must
Modified: hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/ConfigurationPointDescriptor.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/ConfigurationPointDescriptor.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/ConfigurationPointDescriptor.java (original)
+++ hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/ConfigurationPointDescriptor.java Thu Mar 1 12:06:02 2007
@@ -38,6 +38,9 @@
/** @since 1.1 */
private Visibility _visibility = Visibility.PUBLIC;
+
+ /** @since 2.0 */
+ private boolean _lazy;
/**
* Type of the configuration
@@ -53,6 +56,7 @@
builder.append("contributionsSchema", _contributionsSchema);
builder.append("contributionsSchemaId", _contributionsSchemaId);
builder.append("visibility", _visibility);
+ builder.append("lazy", _lazy);
return builder.toString();
}
@@ -123,5 +127,18 @@
public void setType(String type)
{
_type = type;
+ }
+
+ public void setLazy(Boolean lazy)
+ {
+ _lazy = lazy;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public boolean isLazy()
+ {
+ return _lazy;
}
}
Modified: hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java (original)
+++ hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java Thu Mar 1 12:06:02 2007
@@ -783,10 +783,13 @@
// Qualify the interface name with the defined package name (which will
// often implicitly or explicitly match the module id).
- String fullContainerTypeName = IdUtils.qualify(
+ String fullTypeName = IdUtils.qualify(
_moduleDescriptor.getPackageName(),
typeName);
- cpd.setType(fullContainerTypeName);
+ cpd.setType(fullTypeName);
+
+ Boolean lazy = getBooleanAttribute("lazy", false);
+ cpd.setLazy(lazy);
md.addConfigurationPoint(cpd);
}
Modified: hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties (original)
+++ hivemind/hivemind2/trunk/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties Thu Mar 1 12:06:02 2007
@@ -24,6 +24,7 @@
required.configuration-point.schema-id=false
required.configuration-point.visibility=false
required.configuration-point.type=false
+required.configuration-point.lazy=false
required.service-point.id=true
required.service-point.interface=false
Modified: hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/BadAttributes.xml
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/BadAttributes.xml?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/BadAttributes.xml (original)
+++ hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/BadAttributes.xml Thu Mar 1 12:06:02 2007
@@ -16,7 +16,7 @@
-->
<module id="hivemind.test.config" version="1.0.0">
- <configuration-point id="BadAttributes" schema-id="Datum"/>
+ <configuration-point id="BadAttributes" schema-id="Datum" lazy="true"/>
<schema id="Datum">
<element name="datum">
<attribute name="key" required="true"/>
Modified: hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/Simple.xml
URL: http://svn.apache.org/viewvc/hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/Simple.xml?view=diff&rev=513472&r1=513471&r2=513472
==============================================================================
--- hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/Simple.xml (original)
+++ hivemind/hivemind2/trunk/xml/src/test/hivemind/test/config/Simple.xml Thu Mar 1 12:06:02 2007
@@ -16,7 +16,7 @@
-->
<module id="hivemind.test.config" version="1.0.0">
- <configuration-point id="Simple" schema-id="Datum"/>
+ <configuration-point id="Simple" schema-id="Datum" lazy="true"/>
<schema id="Datum">
<element name="datum">