You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ob...@apache.org on 2004/08/14 17:03:40 UTC

svn commit: rev 36396 - in avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition: . application location publisher

Author: oberhack
Date: Sat Aug 14 08:03:40 2004
New Revision: 36396

Added:
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/Application.java
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/block.xml
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/debug.xml
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationComponent.java
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationComponent.xprofile
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationService.java
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/block.xml
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/PublisherComponent.java
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/PublisherService.java
   avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/block.xml
Log:


Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/Application.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/Application.java	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,76 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  under the  Apache License,  Version 2.0  (the "License");
+ * you may not use  this file  except in  compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tutorial.application;
+
+import java.io.File;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.activity.Disposable;
+
+import tutorial.location.LocationService;
+import tutorial.publisher.PublisherService;
+
+/**
+ * PublisherComponent from Merlin's Composition Tutorial
+ *
+ * @avalon.component version="1.0" name="test"
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ */
+public class Application extends AbstractLogEnabled implements Serviceable, Disposable
+{
+
+   /**
+    * Servicing of the component by the container during
+    * which service dependencies declared under the component
+    * can be resolved using the supplied service manager.  In this 
+    * example the component uses a LocatorService service to log a 
+    * message exposing a location.
+    *
+    * @param manager the service manager
+    * @avalon.dependency key="locator" type="tutorial.location.LocationService"
+    * @avalon.dependency key="publisher" type="tutorial.publisher.PublisherService"
+    */
+    public void service( ServiceManager manager ) throws ServiceException
+    {
+        getLogger().info( "servicing application" );
+
+        LocationService locator = (LocationService) manager.lookup( "locator" );
+        PublisherService publisher = (PublisherService) manager.lookup( "publisher" );
+
+        //
+        // get the location from the locator and publish
+        // it using the publisher
+        //
+
+        publisher.publish( 
+            "\n******************"
+          + "\n* " + locator.getLocation() 
+          + "\n******************");
+
+        getLogger().info( "done" );
+    }
+
+    public void dispose()
+    {
+        getLogger().info( "disposal" );
+    }
+}
+

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/block.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/block.xml	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,23 @@
+
+<container name="application">
+
+     <classloader>
+       <classpath>
+         <repository>
+           <resource id="avalon-framework:avalon-framework-api" version="4.2.0"/>
+           <resource id="avalon-framework:avalon-framework-impl" version="4.2.0"/>
+           <resource id="merlin-tutorial:locator-api" version="1.0"/>
+           <resource id="merlin-tutorial:publisher-api" version="1.0"/>
+           <resource id="merlin-tutorial:application-impl" version="1.0"/>
+         </repository>
+       </classpath>
+     </classloader>
+
+     <include name="location" id="merlin-tutorial:locator-impl" version="1.0"/>
+     <include name="publisher" id="merlin-tutorial:publisher-impl" version="1.0"/>
+
+     <component name="application" 
+        class="tutorial.application.Application">
+     </component>
+
+</container>

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/debug.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/application/debug.xml	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,14 @@
+
+<targets>
+
+  <target path="/application/application">
+    <categories priority="DEBUG"/>
+  </target>
+  <target path="/application/publisher/publisher">
+    <categories priority="DEBUG"/>
+  </target>
+  <target path="/application/location/info">
+    <categories priority="DEBUG"/>
+  </target>
+
+</targets>

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationComponent.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationComponent.java	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,69 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  under the  Apache License,  Version 2.0  (the "License");
+ * you may not use  this file  except in  compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tutorial.location;
+
+import java.io.File;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.activity.Disposable;
+
+/**
+ * HelloComponent from Merlin's Tutorial
+ *
+ * @avalon.component version="1.0" name="location-provider"
+ * @avalon.service type="tutorial.location.LocationService"
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ */
+public class LocationComponent extends AbstractLogEnabled implements
+Configurable, Disposable, LocationService
+{
+    private String m_location = "unknown";
+
+   /**
+    * Configuration of the component by the container.  The
+    * implementation gets a child element named 'source' and
+    * assigns log the value.
+    *
+    * @param config the component configuration
+    * @exception ConfigurationException if a configuration error occurs
+    */
+    public void configure( Configuration config ) throws
+    ConfigurationException    
+    {
+        m_location = config.getChild( "source" ).getValue( "unknown" );
+        getLogger().info( "location: " + m_location );
+    }
+
+   /**
+    * Return a location.
+    * @return a location
+    */
+    public String getLocation()
+    {
+        return m_location;
+    }
+
+    public void dispose()
+    {
+        getLogger().info( "disposal" );
+    }
+}
+

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationComponent.xprofile
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationComponent.xprofile	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+
+<profiles>
+  <profile name="locator">
+    <configuration>
+      <source>Paris</source>
+    </configuration>
+  </profile>
+</profiles>

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationService.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/LocationService.java	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,33 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  under the  Apache License,  Version 2.0  (the "License");
+ * you may not use  this file  except in  compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tutorial.location;
+
+/**
+ * LocationService from Merlin's Composition Tutorial
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ */
+public interface LocationService
+{
+   /**
+    * Return a location.
+    * @return a location
+    */
+    public String getLocation();
+}
+

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/block.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/location/block.xml	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,28 @@
+
+<container name="locator">
+
+   <services>
+     <service type="tutorial.location.LocationService">
+       <source>info</source>
+     </service>
+   </services>
+
+   <classloader>
+     <classpath>
+       <repository>
+         <resource id="avalon-framework:avalon-framework-api" version="4.2.0"/>
+         <resource id="avalon-framework:avalon-framework-impl" version="4.2.0"/>
+         <resource id="merlin-tutorial:locator-api" version="1.0"/>
+         <resource id="merlin-tutorial:locator-impl" version="1.0"/>
+       </repository>
+     </classpath>
+   </classloader>
+
+   <component name="info" 
+       class="tutorial.location.LocationComponent">
+       <configuration>
+         <source>Paris</source>
+       </configuration>
+   </component>
+
+</container>

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/PublisherComponent.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/PublisherComponent.java	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,63 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  under the  Apache License,  Version 2.0  (the "License");
+ * you may not use  this file  except in  compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tutorial.publisher;
+
+import java.io.File;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.activity.Disposable;
+
+/**
+ * PublisherComponent from Merlin's Composition Tutorial
+ *
+ * @avalon.component version="1.0" name="publisher"
+ * @avalon.service type="tutorial.publisher.PublisherService"
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ */
+public class PublisherComponent extends AbstractLogEnabled implements PublisherService, Disposable
+{
+   /**
+    * Supply of the logging channel by the container.
+    * @param logger the logging channel
+    */
+    public void enableLogging( Logger logger )
+    {
+        logger.info( "created" );
+        super.enableLogging( logger );
+    }
+
+   /**
+    * Publish a message.
+    * @param message the message to publish
+    */
+    public void publish( String message )
+    {
+        getLogger().info( message );
+    }
+
+    public void dispose()
+    {
+        getLogger().info( "disposal" );
+    }
+
+}
+

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/PublisherService.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/PublisherService.java	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,33 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  under the  Apache License,  Version 2.0  (the "License");
+ * you may not use  this file  except in  compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tutorial.publisher;
+
+/**
+ * HelloComponent from Merlin's Tutorial
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ */
+public interface PublisherService
+{
+   /**
+    * Publish a message.
+    * @param message the message to publish
+    */
+    public void publish( String message );
+}
+

Added: avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/block.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/core/templates/composition/publisher/block.xml	Sat Aug 14 08:03:40 2004
@@ -0,0 +1,24 @@
+
+<container name="publisher-block">
+
+   <services>
+     <service type="tutorial.publisher.PublisherService">
+       <source>publisher</source>
+     </service>
+   </services>
+
+   <classloader>
+     <classpath>
+       <repository>
+         <resource id="avalon-framework:avalon-framework-api" version="4.2.0"/>
+         <resource id="avalon-framework:avalon-framework-impl" version="4.2.0"/>
+         <resource id="merlin-tutorial:publisher-api" version="1.0"/>
+         <resource id="merlin-tutorial:publisher-impl" version="1.0"/>
+       </repository>
+     </classpath>
+   </classloader>
+
+   <component name="publisher" 
+       class="tutorial.publisher.PublisherComponent"/>
+
+</container>

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org