[Red5commits] [1609] API, server core and persistence documentation improvements.Minor code fixes, d

mklishin luke at codegent.com
Wed Jan 24 11:06:21 EST 2007


API, server core and persistence documentation improvements.
Minor code fixes, documentation review.


Timestamp: 01/02/07 19:33:25 EST (3 weeks ago) 
Change: 1609 
Author: mklishin

Files (see diff or trac for details): 
java/server/trunk/src/org/red5/io/flv/impl/FLV.java
java/server/trunk/src/org/red5/io/flv/impl/FLVReader.java
java/server/trunk/src/org/red5/io/flv/meta/MetaCue.java
java/server/trunk/src/org/red5/io/utils/IOUtils.java
java/server/trunk/src/org/red5/io/utils/XMLUtils.java
java/server/trunk/src/org/red5/server/Context.java
java/server/trunk/src/org/red5/server/GlobalScope.java
java/server/trunk/src/org/red5/server/MappingStrategy.java
java/server/trunk/src/org/red5/server/Server.java
java/server/trunk/src/org/red5/server/adapter/AbstractScopeAdapter.java
java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java
java/server/trunk/src/org/red5/server/adapter/IApplication.java
java/server/trunk/src/org/red5/server/adapter/StatefulScopeWrappingAdapter.java
java/server/trunk/src/org/red5/server/api/IBandwidthConfigure.java
java/server/trunk/src/org/red5/server/api/IBasicScope.java
java/server/trunk/src/org/red5/server/api/IClient.java
java/server/trunk/src/org/red5/server/api/IClientRegistry.java
java/server/trunk/src/org/red5/server/api/IConnection.java
java/server/trunk/src/org/red5/server/api/IContext.java
java/server/trunk/src/org/red5/server/api/ICoreObject.java
java/server/trunk/src/org/red5/server/api/IFlowControllable.java
java/server/trunk/src/org/red5/server/api/IMappingStrategy.java
java/server/trunk/src/org/red5/server/api/IScope.java
java/server/trunk/src/org/red5/server/api/IScopeAware.java
java/server/trunk/src/org/red5/server/api/IScopeHandler.java
java/server/trunk/src/org/red5/server/api/IScopeResolver.java
java/server/trunk/src/org/red5/server/api/IScopeService.java
java/server/trunk/src/org/red5/server/api/IServer.java
java/server/trunk/src/org/red5/server/api/Red5.java
java/server/trunk/src/org/red5/server/api/cache/ICacheable.java
java/server/trunk/src/org/red5/server/api/event/IEventObservable.java
java/server/trunk/src/org/red5/server/api/persistence/IPersistable.java
java/server/trunk/src/org/red5/server/api/persistence/IPersistenceStore.java
java/server/trunk/src/org/red5/server/persistence/FilePersistence.java
java/server/trunk/src/org/red5/server/persistence/RamPersistence.java
java/server/trunk/src/org/red5/server/so/SharedObjectScope.java


Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/1609

Index: /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java
===================================================================
--- /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java (revision 1599)
+++ /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java (revision 1609)
@@ -20,28 +20,9 @@
  */
 
-import static org.red5.server.api.ScopeUtils.getScopeService;
-import static org.red5.server.api.ScopeUtils.isApp;
-import static org.red5.server.api.ScopeUtils.isRoom;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.red5.io.IStreamableFile;
-import org.red5.io.IStreamableFileFactory;
-import org.red5.io.IStreamableFileService;
-import org.red5.io.ITagReader;
-import org.red5.io.StreamableFileFactory;
-import org.red5.server.api.IClient;
-import org.red5.server.api.IConnection;
-import org.red5.server.api.IScope;
-import org.red5.server.api.Red5;
-import org.red5.server.api.ScopeUtils;
+import org.red5.io.*;
+import org.red5.server.api.*;
+import static org.red5.server.api.ScopeUtils.*;
 import org.red5.server.api.scheduling.IScheduledJob;
 import org.red5.server.api.scheduling.ISchedulingService;
@@ -49,13 +30,5 @@
 import org.red5.server.api.so.ISharedObject;
 import org.red5.server.api.so.ISharedObjectService;
-import org.red5.server.api.stream.IBroadcastStream;
-import org.red5.server.api.stream.IBroadcastStreamService;
-import org.red5.server.api.stream.IClientBroadcastStream;
-import org.red5.server.api.stream.IOnDemandStream;
-import org.red5.server.api.stream.IOnDemandStreamService;
-import org.red5.server.api.stream.IStreamAwareScopeHandler;
-import org.red5.server.api.stream.IStreamService;
-import org.red5.server.api.stream.ISubscriberStream;
-import org.red5.server.api.stream.ISubscriberStreamService;
+import org.red5.server.api.stream.*;
 import org.red5.server.exception.ClientRejectedException;
 import org.red5.server.scheduling.QuartzSchedulingService;
@@ -66,4 +39,8 @@
 import org.red5.server.stream.StreamService;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+
 /**
  * ApplicationAdapter class serves as a base class for your Red5 applications.
@@ -151,6 +128,8 @@
 	 * This method throws {@link ClientRejectedException} exception.
 	 *
-	 */
-	protected void rejectClient() {
+     * @throws org.red5.server.exception.ClientRejectedException
+     *                  Thrown when client connection must be rejected by application logic
+     */
+	protected void rejectClient() throws ClientRejectedException {
 		throw new ClientRejectedException();
 	}
@@ -163,7 +142,10 @@
 	 * 
 	 * @param reason
-	 * 			additional error message to return
-	 */
-	protected void rejectClient(Object reason) {
+	 * 			Additional error message to return to client-side Flex/Flash application
+     *
+     * @throws org.red5.server.exception.ClientRejectedException
+     *                  Thrown when client connection must be rejected by application logic
+	 */
+	protected void rejectClient(Object reason) throws ClientRejectedException{
 		throw new ClientRejectedException(reason);
 	}
Index: /java/server/trunk/src/org/red5/server/adapter/StatefulScopeWrappingAdapter.java
===================================================================
--- /java/server/trunk/src/org/red5/server/adapter/StatefulScopeWrappingAdapter.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/adapter/StatefulScopeWrappingAdapter.java (revision 1609)
@@ -20,16 +20,11 @@
  */
 
+import org.red5.server.api.*;
+import org.springframework.core.io.Resource;
+
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
-
-import org.red5.server.api.IAttributeStore;
-import org.red5.server.api.IClient;
-import org.red5.server.api.IConnection;
-import org.red5.server.api.IContext;
-import org.red5.server.api.IScope;
-import org.red5.server.api.IScopeAware;
-import org.springframework.core.io.Resource;
 
 /**
@@ -50,7 +45,7 @@
 
 	/**
-     * Getter for property 'scope'.
-     *
-     * @return Value for property 'scope'.
+     * Getter for wrapped scope
+     *
+     * @return  Wrapped scope
      */
     public IScope getScope() {
@@ -227,5 +222,5 @@
 	 * @param pattern			Resource pattern
 	 * @return					Returns array of resources
-	 * @throws IOException		IO exxception
+	 * @throws IOException		I/O exception
 	 */
 	public Resource[] getResources(String pattern) throws IOException {
Index: /java/server/trunk/src/org/red5/server/adapter/IApplication.java
===================================================================
--- /java/server/trunk/src/org/red5/server/adapter/IApplication.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/adapter/IApplication.java (revision 1609)
@@ -29,6 +29,5 @@
  * an applications life.
  * 
- * @author unknown
- * @author daccattato
+ * @author Dominick Accattato
  *
  */
Index: /java/server/trunk/src/org/red5/server/adapter/AbstractScopeAdapter.java
===================================================================
--- /java/server/trunk/src/org/red5/server/adapter/AbstractScopeAdapter.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/adapter/AbstractScopeAdapter.java (revision 1609)
@@ -20,30 +20,47 @@
  */
 
-import org.red5.server.api.IBasicScope;
-import org.red5.server.api.IClient;
-import org.red5.server.api.IConnection;
-import org.red5.server.api.IScope;
-import org.red5.server.api.IScopeHandler;
+import org.red5.server.api.*;
 import org.red5.server.api.event.IEvent;
 import org.red5.server.api.service.IServiceCall;
 
+/**
+ * Base scope handler implementation. Mean to be subclassed.
+ */
 public abstract class AbstractScopeAdapter implements IScopeHandler {
-
+    /**
+     * Can start flag.
+     * <code>true</code> if scope is ready to be activated, <code>false</code> otherwise
+     */
 	private boolean canStart = true;
-
+    /**
+     * Can connect flag.
+     * <code>true</code> if connections to scope are allowed, <code>false</code> otherwise
+     */
 	private boolean canConnect = true;
-
+    /**
+     * Can join flag.
+     * <code>true</code> if scope may be joined by users, <code>false</code> otherwise
+     */
 	private boolean canJoin = true;
-
+    /**
+     * Can call service flag.
+     * <code>true</code> if remote service calls are allowed for the scope, <code>false</code> otherwise
+     */
 	private boolean canCallService = true;
-
+    /**
+     * Can add child scope flag. <code>true</code> if scope is allowed to add child scopes, <code>false</code> otherwise
+     */
 	private boolean canAddChildScope = true;
 
-	private boolean canHandleEvent = true;
+    /**
+     * Can handle event flag.
+     * <code>true</code> if events handling is allowed, <code>false</code> otherwise
+     */
+    private boolean canHandleEvent = true;
 
 	/**
-     * Setter for property 'canStart'.
+     * Setter for can start flag.
      *
-     * @param canStart Value to set for property 'canStart'.
+     * @param canStart  <code>true</code> if scope is ready to be activated, <code>false</code> otherwise
      */
     public void setCanStart(boolean canStart) {
@@ -52,7 +69,7 @@
 
 	/**
-     * Setter for property 'canCallService'.
+     * Setter for can call service flag
      *
-     * @param canCallService Value to set for property 'canCallService'.
+     * @param canCallService <code>true</code> if remote service calls are allowed for the scope, <code>false</code> otherwise
      */
     public void setCanCallService(boolean canCallService) {
@@ -61,7 +78,7 @@
 
 	/**
-     * Setter for property 'canConnect'.
+     * Setter for can connect flag
      *
-     * @param canConnect Value to set for property 'canConnect'.
+     * @param canConnect <code>true</code> if connections to scope are allowed, <code>false</code> otherwise
      */
     public void setCanConnect(boolean canConnect) {
@@ -70,7 +87,7 @@
 
 	/**
-     * Setter for property 'join'.
+     * Setter for 'can join' flag
      *
-     * @param canJoin Value to set for property 'join'.
+     * @param canJoin <code>true</code> if scope may be joined by users, <code>false</code> otherwise
      */
     public void setJoin(boolean canJoin) {
Index: /java/server/trunk/src/org/red5/server/so/SharedObjectScope.java
===================================================================
--- /java/server/trunk/src/org/red5/server/so/SharedObjectScope.java (revision 1601)
+++ /java/server/trunk/src/org/red5/server/so/SharedObjectScope.java (revision 1609)
@@ -43,5 +43,5 @@
 public class SharedObjectScope extends BasicScope implements ISharedObject {
     /**
-     *
+     * Logger
      */
 	private Log log = LogFactory.getLog(SharedObjectScope.class.getName());
@@ -184,14 +184,18 @@
 		// Invoke method on registered handler
 		String serviceName, serviceMethod;
-		int dotPos = handler.lastIndexOf('.');
-		if (dotPos != -1) {
+        // Find out last dot position
+        int dotPos = handler.lastIndexOf('.');
+        // If any, split service name and service method name
+        if (dotPos != -1) {
 			serviceName = handler.substring(0, dotPos);
 			serviceMethod = handler.substring(dotPos + 1);
 		} else {
-			serviceName = "";
+            // Otherwise only service method name is available
+            serviceName = "";
 			serviceMethod = handler;
 		}
 
-		Object soHandler = getServiceHandler(serviceName);
+        // Get previously registred handler for service
+        Object soHandler = getServiceHandler(serviceName);
 		if (soHandler == null && hasParent()) {
 			// No custom handler, check for service defined in the scope's
@@ -208,16 +212,21 @@
 		}
 
-		if (soHandler != null) {
-			Object[] methodResult = ServiceUtils.findMethodWithExactParameters(
+        // Once handler is found, find matching method
+        if (soHandler != null) {
+            // With exact params...
+            Object[] methodResult = ServiceUtils.findMethodWithExactParameters(
 					soHandler, serviceMethod, arguments);
-			if (methodResult.length == 0 || methodResult[0] == null) {
+            // Or at least with suitable list params
+            if (methodResult.length == 0 || methodResult[0] == null) {
 				methodResult = ServiceUtils.findMethodWithListParameters(
 						soHandler, serviceMethod, arguments);
 			}
 
-			if (methodResult.length > 0 && methodResult[0] != null) {
+            // If method is found...
+            if (methodResult.length > 0 && methodResult[0] != null) {
 				Method method = (Method) methodResult[0];
 				Object[] params = (Object[]) methodResult[1];
-				try {
+                //...try to invoke it and handle exceptions
+                try {
 					method.invoke(soHandler, params);
 				} catch (Exception err) {
@@ -237,9 +246,13 @@
     @Override
 	public synchronized boolean removeAttribute(String name) {
-		beginUpdate();
-		boolean success = so.removeAttribute(name);
-		endUpdate();
-
-		if (success) {
+        // Begin update of shared object
+        beginUpdate();
+        // Try to remove attribute
+        boolean success = so.removeAttribute(name);
+        // End update of SO
+        endUpdate();
+
+        // Notify listeners on success and return true
+        if (success) {
             for (ISharedObjectListener listener : serverListeners) {
                 listener.onSharedObjectDelete(this, name);
@@ -252,8 +265,12 @@
     @Override
 	public synchronized void removeAttributes() {
-		beginUpdate();
-		so.removeAttributes();
-		endUpdate();
-
+        // Begin update
+        beginUpdate();
+        // Remove all attributes
+        so.removeAttributes();
+        // End update
+        endUpdate();
+
+        // Notify listeners on atributes clear
         for (ISharedObjectListener listener : serverListeners) {
             listener.onSharedObjectClear(this);
Index: /java/server/trunk/src/org/red5/server/persistence/FilePersistence.java
===================================================================
--- /java/server/trunk/src/org/red5/server/persistence/FilePersistence.java (revision 1606)
+++ /java/server/trunk/src/org/red5/server/persistence/FilePersistence.java (revision 1609)
@@ -235,5 +235,5 @@
 							}
 
-							result = (IPersistable) constructor.newInstance(new Object[] { in });
+							result = (IPersistable) constructor.newInstance(in);
 						} catch (NoSuchMethodException err) {
 							// No valid constructor found, use empty
Index: /java/server/trunk/src/org/red5/server/persistence/RamPersistence.java
===================================================================
--- /java/server/trunk/src/org/red5/server/persistence/RamPersistence.java (revision 1606)
+++ /java/server/trunk/src/org/red5/server/persistence/RamPersistence.java (revision 1609)
@@ -36,4 +36,5 @@
  * @author The Red5 Project (red5 at osflash.org)
  * @author Joachim Bauch (jojo at struktur.de)
+ * @author Michael Klishin (michael at novemberain.com)
  */
 public class RamPersistence implements IPersistenceStore {
@@ -128,8 +129,10 @@
 	/** {@inheritDoc} */
     public synchronized boolean save(IPersistable object) {
-		objects.put(getObjectId(object), object);
-		object.setPersistent(true);
-		return true;
-	}
+        final String key = getObjectId(object);
+        
+        objects.put(key, object);
+        object.setPersistent(true);
+        return true;
+    }
 
 	/** {@inheritDoc} */
Index: /java/server/trunk/src/org/red5/server/GlobalScope.java
===================================================================
--- /java/server/trunk/src/org/red5/server/GlobalScope.java (revision 1599)
+++ /java/server/trunk/src/org/red5/server/GlobalScope.java (revision 1609)
@@ -26,5 +26,6 @@
 
 /**
- * Global scope is a top level scope
+ * Global scope is a top level scope. Server instance is meant to be injected with Spring before
+ * initialization (otherwise NullPointerException is thrown).
  *
  * @see  org.red5.server.api.IGlobalScope
Index: /java/server/trunk/src/org/red5/server/Server.java
===================================================================
--- /java/server/trunk/src/org/red5/server/Server.java (revision 1590)
+++ /java/server/trunk/src/org/red5/server/Server.java (revision 1609)
@@ -19,8 +19,4 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
  */
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
 
 import org.apache.commons.logging.Log;
@@ -32,4 +28,8 @@
 import org.springframework.core.style.ToStringCreator;
 
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
 /**
  * Red5 server core class implementation.
@@ -61,6 +61,6 @@
 
     /**
-     *
-     * @param applicationContext
+     * Setter for Spring application context
+     * @param applicationContext     Application context
      */
 	public void setApplicationContext(ApplicationContext applicationContext) {
@@ -93,6 +93,8 @@
      */
 	public IGlobalScope lookupGlobal(String hostName, String contextPath) {
-		String key = getKey(hostName, contextPath);
-		while (contextPath.indexOf(SLASH) != -1) {
+        // Init mappings key
+        String key = getKey(hostName, contextPath);
+        // If context path contains slashes get complex key and look up for it in mappings
+        while (contextPath.indexOf(SLASH) != -1) {
 			key = getKey(hostName, contextPath);
 			if (log.isDebugEnabled()) {
@@ -102,12 +104,17 @@
 				return getGlobal(mapping.get(key));
 			}
-			contextPath = contextPath.substring(0, contextPath
-					.lastIndexOf(SLASH));
-		}
-		key = getKey(hostName, contextPath);
+            final int slashIndex = contextPath.lastIndexOf(SLASH);
+            // Context path is substring from the beginning and till last slash index
+            contextPath = contextPath.substring( 0, slashIndex );
+		}
+
+        // Get global scope key
+        key = getKey(hostName, contextPath);
 		if (log.isDebugEnabled()) {
 			log.debug("Check host and path: " + key);
 		}
-		if (mapping.containsKey(key)) {
+
+        // Look up for global scope switching keys if still not found
+        if (mapping.containsKey(key)) {
 			return getGlobal(mapping.get(key));
 		}
Index: /java/server/trunk/src/org/red5/server/MappingStrategy.java
===================================================================
--- /java/server/trunk/src/org/red5/server/MappingStrategy.java (revision 1590)
+++ /java/server/trunk/src/org/red5/server/MappingStrategy.java (revision 1609)
@@ -23,5 +23,7 @@
 
 /**
- *
+ * Basic mapping strategy implementation. This one uses slash as filesystem path separator,
+ * '.service' postfix for services naming, '.handler' for handlers naming and 'default' string as
+ * default application name.
  */
 public class MappingStrategy implements IMappingStrategy {
@@ -48,5 +50,5 @@
 
     /**
-     * Setter for defaultApp
+     * Setter for default application name ('default' by default).
      * @param defaultApp     Default application
      */
@@ -58,5 +60,5 @@
      * Resolves resource prefix from path. Default application used as root when path is specified
      * @param path          Path
-     * @return              Resource prefix
+     * @return              Resource prefix according to this naming strategy
      */
 	public String mapResourcePrefix(String path) {
@@ -71,5 +73,5 @@
      * Resolves scope handler name for path& Default application used as root when path is specified
      * @param path         Path
-     * @return
+     * @return             Scope handler name according to this naming strategy
      */
 	public String mapScopeHandlerName(String path) {
@@ -84,5 +86,5 @@
      * Resolves service filename name from name
      * @param name      Service name
-     * @return          Service filename
+     * @return          Service filename according to this naming strategy
      */
 	public String mapServiceName(String name) {
Index: /java/server/trunk/src/org/red5/server/Context.java
===================================================================
--- /java/server/trunk/src/org/red5/server/Context.java (revision 1590)
+++ /java/server/trunk/src/org/red5/server/Context.java (revision 1609)
@@ -20,12 +20,5 @@
  */
 
-import java.io.IOException;
-
-import org.red5.server.api.IClientRegistry;
-import org.red5.server.api.IContext;
-import org.red5.server.api.IMappingStrategy;
-import org.red5.server.api.IScope;
-import org.red5.server.api.IScopeHandler;
-import org.red5.server.api.IScopeResolver;
+import org.red5.server.api.*;
 import org.red5.server.api.persistence.IPersistenceStore;
 import org.red5.server.api.service.IServiceInvoker;
@@ -39,4 +32,11 @@
 import org.springframework.core.io.Resource;
 
+import java.io.IOException;
+
+/**
+ * {@inheritDoc}
+ *
+ * <p>This is basic context implementation used by Red5.</p>
+ */
 public class Context implements IContext, ApplicationContextAware {
     /**
@@ -136,5 +136,5 @@
     /**
      *  Setter for service invoker
-     * @param serviceInvoker
+     * @param serviceInvoker     Service invoker object
      */
 	public void setServiceInvoker(IServiceInvoker serviceInvoker) {
@@ -243,6 +243,5 @@
     public IScopeHandler lookupScopeHandler(String contextPath) {
         // Get target scope handler name
-        String scopeHandlerName = getMappingStrategy().mapScopeHandlerName(
-				contextPath);
+        String scopeHandlerName = getMappingStrategy().mapScopeHandlerName(contextPath);
         // Get bean from bean factory
         Object bean = applicationContext.getBean(scopeHandlerName);
@@ -255,5 +254,7 @@
 
     /**
-     * Return mapping stategy
+     * Return mapping strategy used by this context. Mapping strategy define
+     * naming rules (prefixes, postfixes, default application name, etc) for all named objects
+     * in context.
      * @return               Mapping strategy
      */
Index: /java/server/trunk/src/org/red5/server/api/Red5.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/Red5.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/api/Red5.java (revision 1609)
@@ -44,5 +44,5 @@
 	/**
 	 * Current connection thread. Each connection of Red5 application runs in a
-	 * separate thread. This method returns thread object associated with
+	 * separate thread. This is thread object associated with
 	 * current connection.
 	 */
@@ -52,5 +52,5 @@
 	 * Connection local to the current thread
 	 */
-	public IConnection conn = null;
+	public IConnection conn;
 
 	/**
@@ -73,7 +73,7 @@
 
 	/**
-     * Setter for property 'connectionLocal'.
+     * Setter for connection
      *
-     * @param connection Value to set for property 'connectionLocal'.
+     * @param connection     Thread local connection
      */
     public static void setConnectionLocal(IConnection connection) {
@@ -87,5 +87,5 @@
 	 * provides you with it.
 	 * 
-	 * @return connection object
+	 * @return Connection object
 	 */
 	public static IConnection getConnectionLocal() {
@@ -96,5 +96,5 @@
 	 * Get the connection object
 	 * 
-	 * @return connection object
+	 * @return Connection object
 	 */
 	public IConnection getConnection() {
@@ -105,5 +105,5 @@
 	 * Get the scope
 	 * 
-	 * @return scope object
+	 * @return Scope object
 	 */
 	public IScope getScope() {
@@ -114,5 +114,5 @@
 	 * Get the client
 	 * 
-	 * @return client object
+	 * @return Client object
 	 */
 	public IClient getClient() {
@@ -123,5 +123,5 @@
 	 * Get the spring application context
 	 * 
-	 * @return application context
+	 * @return Application context
 	 */
 	public IContext getContext() {
Index: /java/server/trunk/src/org/red5/server/api/event/IEventObservable.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/event/IEventObservable.java (revision 1597)
+++ /java/server/trunk/src/org/red5/server/api/event/IEventObservable.java (revision 1609)
@@ -28,13 +28,20 @@
  */
 public interface IEventObservable {
-
+    /**
+     * Add event listener to this observable
+     * @param listener      Event listener
+     */
 	public void addEventListener(IEventListener listener);
 
-	public void removeEventListener(IEventListener listener);
+    /**
+     * Remove event listener from this observable
+     * @param listener      Event listener
+     */
+    public void removeEventListener(IEventListener listener);
 
 	/**
-     * Getter for property 'eventListeners'.
+     * Iterator for event listeners
      *
-     * @return Value for property 'eventListeners'.
+     * @return  Event listeners iterator
      */
     public Iterator<IEventListener> getEventListeners();
Index: /java/server/trunk/src/org/red5/server/api/IScopeAware.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/IScopeAware.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/IScopeAware.java (revision 1609)
@@ -34,5 +34,5 @@
 	 * 
 	 * @param scope
-	 * 			scope for this object
+	 * 			Scope for this object
 	 */
 	public void setScope(IScope scope);
Index: /java/server/trunk/src/org/red5/server/api/IScopeService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/IScopeService.java (revision 1538)
+++ /java/server/trunk/src/org/red5/server/api/IScopeService.java (revision 1609)
@@ -21,6 +21,6 @@
 
 /**
- * Base interface for all scope services. Used by the ScopeUtils to lookup
- * services defined in beans. A scope service usually can perform various
+ * Base marker interface for all scope services. Used by the ScopeUtils to lookup
+ * services defined as beans in Spring application context. A scope service usually can perform various
  * tasks on a scope like managing shared objects, streams, etc.
  * 
Index: /java/server/trunk/src/org/red5/server/api/IScopeResolver.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/IScopeResolver.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/IScopeResolver.java (revision 

Note:
Diffs are chopped if more than 25k.
This is to get past the limit on the mailing list.



More information about the Red5commits mailing list