From b091e96bb4da0365bde5d0ddcf0f4def583da251 Mon Sep 17 00:00:00 2001 From: rfeng Date: Tue, 14 Apr 2009 22:01:33 +0000 Subject: Allows Definitions to be added to the extension point git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@764975 13f79535-47bb-0310-9956-ffa450edef68 --- .../xml/DefaultDefinitionsExtensionPoint.java | 28 ++++++++++++---------- .../definitions/xml/DefinitionsExtensionPoint.java | 19 ++++++++++----- 2 files changed, 29 insertions(+), 18 deletions(-) (limited to 'java/sca/modules') diff --git a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java index 9c5891a8db..1fb9cf8fdc 100644 --- a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java +++ b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java @@ -47,7 +47,8 @@ public class DefaultDefinitionsExtensionPoint implements DefinitionsExtensionPoi private static final URI DEFINITIONS_URI = URI.create("META-INF/definitions.xml"); private ExtensionPointRegistry registry; private List documents = new ArrayList(); - private List definitions; + private List definitions = new ArrayList(); + private boolean documentsLoaded; private boolean loaded; public DefaultDefinitionsExtensionPoint(ExtensionPointRegistry registry) { @@ -66,8 +67,8 @@ public class DefaultDefinitionsExtensionPoint implements DefinitionsExtensionPoi * Load definitions declarations from META-INF/services/ * org.apache.tuscany.sca.contribution.processor.Definitions files */ - private synchronized void loadDefinitions() { - if (loaded) + private synchronized void loadDefinitionsDocuments() { + if (documentsLoaded) return; // Get the definitions declarations @@ -87,21 +88,15 @@ public class DefaultDefinitionsExtensionPoint implements DefinitionsExtensionPoi documents.add(url); } - loaded = true; - } - - public List getDefinitionsDocuments() { - loadDefinitions(); - return documents; + documentsLoaded = true; } public synchronized List getDefinitions() { - if (definitions == null) { - loadDefinitions(); + if (!loaded) { + loadDefinitionsDocuments(); URLArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class); URLArtifactProcessor processor = processors.getProcessor(Definitions.class); - definitions = new ArrayList(); for (URL url : documents) { Definitions def; try { @@ -111,7 +106,16 @@ public class DefaultDefinitionsExtensionPoint implements DefinitionsExtensionPoi logger.log(Level.SEVERE, e.getMessage(), e); } } + loaded = true; } return definitions; } + + public void addDefinitions(Definitions def) { + this.definitions.add(def); + } + + public void removeDefinitions(Definitions def) { + this.definitions.remove(def); + } } diff --git a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsExtensionPoint.java b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsExtensionPoint.java index 88d45bd0af..61b815577f 100644 --- a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsExtensionPoint.java +++ b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefinitionsExtensionPoint.java @@ -33,25 +33,32 @@ public interface DefinitionsExtensionPoint { String DEFINITIONS_FILE = "org.apache.tuscany.sca.definitions.xml.Definitions"; /** - * Add a definitions. + * Add a definitions document * * @param url the URL of the definitions */ void addDefinitionsDocument(URL url); /** - * Remove a definitions. + * Remove a definitions document * * @param url the URL of the definitions */ void removeDefinitionsDocument(URL url); - + + /** + * @param definitions + */ + void addDefinitions(Definitions definitions); /** - * Returns the list of definitions registered in the extension point. - * @return the list of definitions + * @param definitions */ - List getDefinitionsDocuments(); + void removeDefinitions(Definitions definitions); + /** + * Get the list of definitions + * @return A list of definitions + */ List getDefinitions(); } -- cgit v1.2.3