[Red5commits] [1538] Scope services are looked up by their interface now, fallback to beans through I
jbauch
luke at codegent.com
Wed Jan 24 10:51:17 EST 2007
Scope services are looked up by their interface now, fallback to beans through IScopeService interface with defined (static) field name ("BEAN_NAME"). This allows overwriting of services through the scope handler by implementing the respective service interface.
Timestamp: 11/14/06 17:05:36 EST (2 months ago)
Change: 1538
Author: jbauch
Files (see diff or trac for details):
java/io/trunk/src/org/red5/io/IStreamableFileFactory.java
java/server/trunk/src/org/red5/samples/components/ClientManager.java
java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java
java/server/trunk/src/org/red5/server/api/IScopeService.java
java/server/trunk/src/org/red5/server/api/ScopeUtils.java
java/server/trunk/src/org/red5/server/api/scheduling/ISchedulingService.java
java/server/trunk/src/org/red5/server/api/so/ISharedObjectService.java
java/server/trunk/src/org/red5/server/api/stream/IOnDemandStreamService.java
java/server/trunk/src/org/red5/server/api/stream/IStreamFilenameGenerator.java
java/server/trunk/src/org/red5/server/api/stream/IStreamService.java
java/server/trunk/src/org/red5/server/api/stream/ISubscriberStreamService.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java
java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
java/server/trunk/src/org/red5/server/statistics/ScopeStatistics.java
java/server/trunk/src/org/red5/server/stream/BroadcastScope.java
java/server/trunk/src/org/red5/server/stream/ClientBroadcastStream.java
java/server/trunk/src/org/red5/server/stream/IProviderService.java
java/server/trunk/src/org/red5/server/stream/PlaylistSubscriberStream.java
java/server/trunk/src/org/red5/server/stream/ProviderService.java
java/server/trunk/src/org/red5/server/stream/ServerStream.java
java/server/trunk/src/org/red5/server/stream/StreamService.java
java/server/trunk/src/org/red5/server/stream/consumer/FileConsumer.java
java/server/trunk/src/org/red5/server/stream/provider/FileProvider.java
Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/1538
Index: /java/server/trunk/src/org/red5/samples/components/ClientManager.java
===================================================================
--- /java/server/trunk/src/org/red5/samples/components/ClientManager.java (revision 1406)
+++ /java/server/trunk/src/org/red5/samples/components/ClientManager.java (revision 1538)
@@ -62,5 +62,5 @@
ISharedObjectService service = (ISharedObjectService) ScopeUtils
.getScopeService(scope,
- ISharedObjectService.SHARED_OBJECT_SERVICE);
+ ISharedObjectService.class);
return service.getSharedObject(scope, name, persistent);
}
Index: /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java
===================================================================
--- /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java (revision 1529)
+++ /java/server/trunk/src/org/red5/server/adapter/ApplicationAdapter.java (revision 1538)
@@ -601,5 +601,5 @@
boolean persistent) {
ISharedObjectService service = (ISharedObjectService) getScopeService(
- scope, ISharedObjectService.SHARED_OBJECT_SERVICE,
+ scope, ISharedObjectService.class,
SharedObjectService.class);
return service.createSharedObject(scope, name, persistent);
@@ -617,5 +617,5 @@
public ISharedObject getSharedObject(IScope scope, String name) {
ISharedObjectService service = (ISharedObjectService) getScopeService(
- scope, ISharedObjectService.SHARED_OBJECT_SERVICE,
+ scope, ISharedObjectService.class,
SharedObjectService.class);
return service.getSharedObject(scope, name);
@@ -636,5 +636,5 @@
boolean persistent) {
ISharedObjectService service = (ISharedObjectService) getScopeService(
- scope, ISharedObjectService.SHARED_OBJECT_SERVICE,
+ scope, ISharedObjectService.class,
SharedObjectService.class);
return service.getSharedObject(scope, name, persistent);
@@ -649,5 +649,5 @@
public Set<String> getSharedObjectNames(IScope scope) {
ISharedObjectService service = (ISharedObjectService) getScopeService(
- scope, ISharedObjectService.SHARED_OBJECT_SERVICE,
+ scope, ISharedObjectService.class,
SharedObjectService.class);
return service.getSharedObjectNames(scope);
@@ -664,5 +664,5 @@
public boolean hasSharedObject(IScope scope, String name) {
ISharedObjectService service = (ISharedObjectService) getScopeService(
- scope, ISharedObjectService.SHARED_OBJECT_SERVICE,
+ scope, ISharedObjectService.class,
SharedObjectService.class);
return service.hasSharedObject(scope, name);
@@ -673,5 +673,5 @@
public boolean hasBroadcastStream(IScope scope, String name) {
IProviderService service = (IProviderService) getScopeService(scope,
- IProviderService.KEY, ProviderService.class);
+ IProviderService.class, ProviderService.class);
return (service.getLiveProviderInput(scope, name, false) != null);
}
@@ -679,5 +679,5 @@
public IBroadcastStream getBroadcastStream(IScope scope, String name) {
IStreamService service = (IStreamService) getScopeService(
- scope, IStreamService.STREAM_SERVICE,
+ scope, IStreamService.class,
StreamService.class);
if (!(service instanceof StreamService))
@@ -699,5 +699,5 @@
public List<String> getBroadcastStreamNames(IScope scope) {
IProviderService service = (IProviderService) getScopeService(scope,
- IProviderService.KEY, ProviderService.class);
+ IProviderService.class, ProviderService.class);
return service.getBroadcastStreamNames(scope);
}
@@ -716,5 +716,5 @@
public boolean hasOnDemandStream(IScope scope, String name) {
IProviderService service = (IProviderService) getScopeService(scope,
- IProviderService.KEY, ProviderService.class);
+ IProviderService.class, ProviderService.class);
return (service.getVODProviderInput(scope, name) != null);
}
@@ -736,5 +736,5 @@
.warn("This won't work until the refactoring of the streaming code is complete.");
IOnDemandStreamService service = (IOnDemandStreamService) getScopeService(
- scope, IOnDemandStreamService.ON_DEMAND_STREAM_SERVICE,
+ scope, IOnDemandStreamService.class,
StreamService.class);
return service.getOnDemandStream(scope, name);
@@ -756,5 +756,5 @@
.warn("This won't work until the refactoring of the streaming code is complete.");
ISubscriberStreamService service = (ISubscriberStreamService) getScopeService(
- scope, ISubscriberStreamService.SUBSCRIBER_STREAM_SERVICE,
+ scope, ISubscriberStreamService.class,
StreamService.class);
return service.getSubscriberStream(scope, name);
@@ -775,5 +775,5 @@
public String addScheduledJob(int interval, IScheduledJob job) {
ISchedulingService service = (ISchedulingService) getScopeService(
- scope, ISchedulingService.SCHEDULING_SERVICE,
+ scope, ISchedulingService.class,
QuartzSchedulingService.class);
return service.addScheduledJob(interval, job);
@@ -794,5 +794,5 @@
public String addScheduledOnceJob(long timeDelta, IScheduledJob job) {
ISchedulingService service = (ISchedulingService) getScopeService(
- scope, ISchedulingService.SCHEDULING_SERVICE,
+ scope, ISchedulingService.class,
QuartzSchedulingService.class);
return service.addScheduledOnceJob(timeDelta, job);
@@ -812,5 +812,5 @@
public String addScheduledOnceJob(Date date, IScheduledJob job) {
ISchedulingService service = (ISchedulingService) getScopeService(
- scope, ISchedulingService.SCHEDULING_SERVICE,
+ scope, ISchedulingService.class,
QuartzSchedulingService.class);
return service.addScheduledOnceJob(date, job);
@@ -825,5 +825,5 @@
public void removeScheduledJob(String name) {
ISchedulingService service = (ISchedulingService) getScopeService(
- scope, ISchedulingService.SCHEDULING_SERVICE,
+ scope, ISchedulingService.class,
QuartzSchedulingService.class);
service.removeScheduledJob(name);
@@ -837,5 +837,5 @@
public List<String> getScheduledJobNames() {
ISchedulingService service = (ISchedulingService) getScopeService(
- scope, ISchedulingService.SCHEDULING_SERVICE,
+ scope, ISchedulingService.class,
QuartzSchedulingService.class);
return service.getScheduledJobNames();
@@ -853,5 +853,5 @@
public double getStreamLength(String name) {
IProviderService provider = (IProviderService) getScopeService(scope,
- IProviderService.KEY, ProviderService.class);
+ IProviderService.class, ProviderService.class);
File file = provider.getVODProviderFile(scope, name);
if (file == null) {
@@ -862,5 +862,5 @@
IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils
- .getScopeService(scope, IStreamableFileFactory.KEY,
+ .getScopeService(scope, IStreamableFileFactory.class,
StreamableFileFactory.class);
IStreamableFileService service = factory.getService(file);
Index: /java/server/trunk/src/org/red5/server/statistics/ScopeStatistics.java
===================================================================
--- /java/server/trunk/src/org/red5/server/statistics/ScopeStatistics.java (revision 1519)
+++ /java/server/trunk/src/org/red5/server/statistics/ScopeStatistics.java (revision 1538)
@@ -200,5 +200,5 @@
ISharedObjectService service = (ISharedObjectService) ScopeUtils
.getScopeService(scope,
- ISharedObjectService.SHARED_OBJECT_SERVICE);
+ ISharedObjectService.class);
if (service == null) {
return new Hashtable<String, Object>();
Index: /java/server/trunk/src/org/red5/server/stream/provider/FileProvider.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/provider/FileProvider.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/stream/provider/FileProvider.java (revision 1538)
@@ -168,5 +168,5 @@
private void init() {
IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils
- .getScopeService(scope, IStreamableFileFactory.KEY,
+ .getScopeService(scope, IStreamableFileFactory.class,
StreamableFileFactory.class);
IStreamableFileService service = factory.getService(file);
Index: /java/server/trunk/src/org/red5/server/stream/consumer/FileConsumer.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/consumer/FileConsumer.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/stream/consumer/FileConsumer.java (revision 1538)
@@ -157,5 +157,5 @@
private void init() throws IOException {
IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils
- .getScopeService(scope, IStreamableFileFactory.KEY,
+ .getScopeService(scope, IStreamableFileFactory.class,
StreamableFileFactory.class);
if (!file.isFile()) {
Index: /java/server/trunk/src/org/red5/server/stream/ServerStream.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/ServerStream.java (revision 1519)
+++ /java/server/trunk/src/org/red5/server/stream/ServerStream.java (revision 1538)
@@ -243,9 +243,9 @@
}
IProviderService providerService = (IProviderService) getScope()
- .getContext().getBean(IProviderService.KEY);
+ .getContext().getBean(IProviderService.BEAN_NAME);
providerService
.registerBroadcastStream(getScope(), publishedName, this);
scheduler = (ISchedulingService) getScope().getContext().getBean(
- ISchedulingService.SCHEDULING_SERVICE);
+ ISchedulingService.BEAN_NAME);
state = State.STOPPED;
currentItemIndex = -1;
@@ -324,5 +324,5 @@
boolean isLive = false;
IProviderService providerService = (IProviderService) getScope()
- .getContext().getBean(IProviderService.KEY);
+ .getContext().getBean(IProviderService.BEAN_NAME);
msgIn = providerService.getVODProviderInput(getScope(), item.getName());
if (msgIn == null) {
Index: /java/server/trunk/src/org/red5/server/stream/BroadcastScope.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/BroadcastScope.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/stream/BroadcastScope.java (revision 1538)
@@ -133,5 +133,5 @@
if (hasParent()) {
IProviderService providerService = (IProviderService) getParent()
- .getContext().getBean(IProviderService.KEY);
+ .getContext().getBean(IProviderService.BEAN_NAME);
providerService.unregisterBroadcastStream(getParent(),
getName());
Index: /java/server/trunk/src/org/red5/server/stream/PlaylistSubscriberStream.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/PlaylistSubscriberStream.java (revision 1519)
+++ /java/server/trunk/src/org/red5/server/stream/PlaylistSubscriberStream.java (revision 1538)
@@ -531,5 +531,5 @@
state = State.STOPPED;
schedulingService = (ISchedulingService) getScope().getContext()
- .getBean(ISchedulingService.SCHEDULING_SERVICE);
+ .getBean(ISchedulingService.BEAN_NAME);
IConsumerService consumerManager = (IConsumerService) getScope()
.getContext().getBean(IConsumerService.KEY);
@@ -553,5 +553,5 @@
IContext context = thisScope.getContext();
IProviderService providerService = (IProviderService) context
- .getBean(IProviderService.KEY);
+ .getBean(IProviderService.BEAN_NAME);
IMessageInput liveInput = providerService.getLiveProviderInput(
thisScope, item.getName(), false);
Index: /java/server/trunk/src/org/red5/server/stream/ProviderService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/ProviderService.java (revision 1537)
+++ /java/server/trunk/src/org/red5/server/stream/ProviderService.java (revision 1538)
@@ -145,5 +145,5 @@
private String getStreamFilename(IScope scope, String name) {
IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils
- .getScopeService(scope, IStreamableFileFactory.KEY);
+ .getScopeService(scope, IStreamableFileFactory.class);
if (name.indexOf(':') == -1 && name.indexOf('.') == -1) {
//if (!name.contains(':') && !name.contains('.')) {
@@ -160,5 +160,5 @@
IStreamFilenameGenerator filenameGenerator = (IStreamFilenameGenerator)
- ScopeUtils.getScopeService(scope, IStreamFilenameGenerator.KEY, DefaultStreamFilenameGenerator.class);
+ ScopeUtils.getScopeService(scope, IStreamFilenameGenerator.class, DefaultStreamFilenameGenerator.class);
return filenameGenerator.generateFilename(scope, name);
Index: /java/server/trunk/src/org/red5/server/stream/StreamService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/StreamService.java (revision 1519)
+++ /java/server/trunk/src/org/red5/server/stream/StreamService.java (revision 1538)
@@ -255,5 +255,5 @@
IContext context = conn.getScope().getContext();
IProviderService providerService = (IProviderService) context
- .getBean(IProviderService.KEY);
+ .getBean(IProviderService.BEAN_NAME);
bs.setPublishedName(name);
// TODO handle registration failure
Index: /java/server/trunk/src/org/red5/server/stream/ClientBroadcastStream.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/ClientBroadcastStream.java (revision 1519)
+++ /java/server/trunk/src/org/red5/server/stream/ClientBroadcastStream.java (revision 1538)
@@ -134,5 +134,5 @@
IScope scope = getConnection().getScope();
IStreamFilenameGenerator generator = (IStreamFilenameGenerator) ScopeUtils
- .getScopeService(scope, IStreamFilenameGenerator.KEY,
+ .getScopeService(scope, IStreamFilenameGenerator.class,
DefaultStreamFilenameGenerator.class);
Index: /java/server/trunk/src/org/red5/server/stream/IProviderService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/stream/IProviderService.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/stream/IProviderService.java (revision 1538)
@@ -24,9 +24,10 @@
import org.red5.server.api.IScope;
+import org.red5.server.api.IScopeService;
import org.red5.server.api.stream.IBroadcastStream;
import org.red5.server.messaging.IMessageInput;
-public interface IProviderService {
- public static final String KEY = "providerService";
+public interface IProviderService extends IScopeService {
+ public static String BEAN_NAME = "providerService";
/**
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java (revision 1530)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPHandler.java (revision 1538)
@@ -462,5 +462,5 @@
|| action.equals(ACTION_RECEIVE_AUDIO)) {
IStreamService streamService = (IStreamService) getScopeService(
- conn.getScope(), IStreamService.STREAM_SERVICE,
+ conn.getScope(), IStreamService.class,
StreamService.class);
invokeCall(conn, call, streamService);
@@ -567,5 +567,5 @@
ISharedObjectService sharedObjectService = (ISharedObjectService) getScopeService(
- scope, ISharedObjectService.SHARED_OBJECT_SERVICE,
+ scope, ISharedObjectService.class,
SharedObjectService.class);
if (!sharedObjectService.hasSharedObject(scope, name)) {
Index: /java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java (revision 1522)
+++ /java/server/trunk/src/org/red5/server/net/rtmp/RTMPConnection.java (revision 1538)
@@ -266,5 +266,5 @@
Red5.setConnectionLocal(this);
IStreamService streamService = (IStreamService) getScopeService(scope,
- IStreamService.STREAM_SERVICE, StreamService.class);
+ IStreamService.class, StreamService.class);
if (streamService != null) {
synchronized (streams) {
Index: /java/server/trunk/src/org/red5/server/api/so/ISharedObjectService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/so/ISharedObjectService.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/so/ISharedObjectService.java (revision 1538)
@@ -23,4 +23,5 @@
import org.red5.server.api.IScope;
+import org.red5.server.api.IScopeService;
/**
@@ -28,7 +29,7 @@
*
*/
-public interface ISharedObjectService {
+public interface ISharedObjectService extends IScopeService {
- public final static String SHARED_OBJECT_SERVICE = "sharedObjectService";
+ public static String BEAN_NAME = "sharedObjectService";
/**
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 1538)
@@ -0,0 +1,38 @@
+package org.red5.server.api;
+
+/*
+ * RED5 Open Source Flash Server - http://www.osflash.org/red5
+ *
+ * Copyright (c) 2006 by respective authors (see below). All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2.1 of the License, or (at your option) any later
+ * version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along
+ * with this library; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/**
+ * Base interface for all scope services. Used by the ScopeUtils to lookup
+ * services defined in beans. A scope service usually can perform various
+ * tasks on a scope like managing shared objects, streams, etc.
+ *
+ * @author The Red5 Project (red5 at osflash.org)
+ * @author Joachim Bauch (bauch at struktur.de)
+ */
+public interface IScopeService {
+
+ /**
+ * Name of a bean defining that scope service. Override in
+ * subinterfaces.
+ * */
+ public static String BEAN_NAME = null;
+
+}
Index: /java/server/trunk/src/org/red5/server/api/scheduling/ISchedulingService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/scheduling/ISchedulingService.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/scheduling/ISchedulingService.java (revision 1538)
@@ -23,4 +23,6 @@
import java.util.List;
+import org.red5.server.api.IScopeService;
+
/**
* Service that supports periodic execution of jobs, adding, removing and
@@ -31,7 +33,7 @@
*
*/
-public interface ISchedulingService {
+public interface ISchedulingService extends IScopeService {
- public static final String SCHEDULING_SERVICE = "schedulingService";
+ public static String BEAN_NAME = "schedulingService";
/**
Index: /java/server/trunk/src/org/red5/server/api/stream/ISubscriberStreamService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/stream/ISubscriberStreamService.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/stream/ISubscriberStreamService.java (revision 1538)
@@ -21,8 +21,9 @@
import org.red5.server.api.IScope;
+import org.red5.server.api.IScopeService;
-public interface ISubscriberStreamService {
+public interface ISubscriberStreamService extends IScopeService {
- public final static String SUBSCRIBER_STREAM_SERVICE = "subscriberStreamService";
+ public static String BEAN_NAME = "subscriberStreamService";
/**
Index: /java/server/trunk/src/org/red5/server/api/stream/IStreamFilenameGenerator.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/stream/IStreamFilenameGenerator.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/stream/IStreamFilenameGenerator.java (revision 1538)
@@ -21,4 +21,5 @@
import org.red5.server.api.IScope;
+import org.red5.server.api.IScopeService;
/**
@@ -28,8 +29,8 @@
* @author Joachim Bauch (bauch at struktur.de)
*/
-public interface IStreamFilenameGenerator {
+public interface IStreamFilenameGenerator extends IScopeService {
/** Name of the bean to setup a custom filename generator in an application. */
- public static final String KEY = "streamFilenameGenerator";
+ public static String BEAN_NAME = "streamFilenameGenerator";
/**
Index: /java/server/trunk/src/org/red5/server/api/stream/IStreamService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/stream/IStreamService.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/stream/IStreamService.java (revision 1538)
@@ -1,3 +1,5 @@
package org.red5.server.api.stream;
+
+import org.red5.server.api.IScopeService;
/*
@@ -23,7 +25,7 @@
* This interface represents the stream methods that can be called throug RTMP.
*/
-public interface IStreamService {
+public interface IStreamService extends IScopeService {
- public static final String STREAM_SERVICE = "streamService";
+ public static String BEAN_NAME = "streamService";
/**
Index: /java/server/trunk/src/org/red5/server/api/stream/IOnDemandStreamService.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/stream/IOnDemandStreamService.java (revision 1406)
+++ /java/server/trunk/src/org/red5/server/api/stream/IOnDemandStreamService.java (revision 1538)
@@ -21,8 +21,9 @@
import org.red5.server.api.IScope;
+import org.red5.server.api.IScopeService;
-public interface IOnDemandStreamService {
+public interface IOnDemandStreamService extends IScopeService {
- public final static String ON_DEMAND_STREAM_SERVICE = "onDemandStreamService";
+ public static String BEAN_NAME = "onDemandStreamService";
/**
Index: /java/server/trunk/src/org/red5/server/api/ScopeUtils.java
===================================================================
--- /java/server/trunk/src/org/red5/server/api/ScopeUtils.java (revision 1519)
+++ /java/server/trunk/src/org/red5/server/api/ScopeUtils.java (revision 1538)
@@ -20,4 +20,6 @@
*/
+import java.lang.reflect.Field;
+
import org.apache.log4j.Logger;
import org.red5.server.api.persistence.IPersistable;
@@ -199,5 +201,5 @@
* @return
*/
- public static Object getScopeService(IScope scope, String name) {
+ protected static Object getScopeService(IScope scope, String name) {
return getScopeService(scope, name, null);
}
@@ -215,15 +217,8 @@
* @return Service object
*/
- public static Object getScopeService(IScope scope, String name,
+ protected static Object getScopeService(IScope scope, String name,
Class defaultClass) {
if (scope == null) {
return null;
- }
-
- if (scope.hasAttribute(IPersistable.TRANSIENT_PREFIX
- + SERVICE_CACHE_PREFIX + name)) {
- // Return cached service
- return scope.getAttribute(IPersistable.TRANSIENT_PREFIX
- + SERVICE_CACHE_PREFIX + name);
}
@@ -246,9 +241,91 @@
}
+ return result;
+ }
+
+ /**
+ * Returns scope service that implements a given interface.
+ *
+ * @param scope
+ * The scope service belongs to
+ * @param intf
+ * The interface the service must implement
+ * @return Service object
+ */
+ public static Object getScopeService(IScope scope, Class intf) {
+ return getScopeService(scope, intf, null);
+ }
+
+ /**
+ * Returns scope service that implements a given interface.
+ *
+ * @param scope
+ * The scope service belongs to
+ * @param intf
+ * The interface the service must implement
+ * @param defaultClass
+ * Class that should be used to create a new service if no service was found.
+ * @return Service object
+ */
+ public static Object getScopeService(IScope scope, Class intf,
+ Class defaultClass) {
+ if (scope == null || intf == null) {
+ r
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