Revision: 464 http://skycastle.svn.sourceforge.net/skycastle/?rev=464&view=rev Author: zzorn Date: 2008-04-18 15:46:30 -0700 (Fri, 18 Apr 2008) Log Message: ----------- Fixed some build problems. Now it should compile and run. Also removed the requirement that client side GameObjects have to implement ManagedObject. Modified Paths: -------------- trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ServerSessionHandler.java trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectId.java trunk/skycastle/modules/core/src/main/java/org/skycastle/protocol/ProtocolCommunicator.java trunk/skycastle/modules/server/src/main/java/org/skycastle/server/SkycastleClientSessionHandler.java Added Paths: ----------- trunk/skycastle/modules/core/src/main/java/org/skycastle/core/ServeerSideGameObjectReference.java Removed Paths: ------------- trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectReference.java Modified: trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ServerSessionHandler.java =================================================================== --- trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ServerSessionHandler.java 2008-04-18 22:31:12 UTC (rev 463) +++ trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ServerSessionHandler.java 2008-04-18 22:46:30 UTC (rev 464) @@ -27,6 +27,8 @@ * * @author Hans Haggstrom */ +// TODO: This should really be non serializable, but the parent needs to be serializable for the sake of the server side +// Can we maybe convert the parent functionalit to a delegate class instead of parent class? public final class ServerSessionHandler extends ProtocolCommunicator implements SimpleClientListener @@ -47,6 +49,7 @@ //====================================================================== // Private Constants + private static final long serialVersionUID = 1L; private static final int PROTOCOL_NEGOTIATION_TIMEOUT_MS = 10000; Modified: trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectId.java =================================================================== --- trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectId.java 2008-04-18 22:31:12 UTC (rev 463) +++ trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectId.java 2008-04-18 22:46:30 UTC (rev 464) @@ -9,7 +9,7 @@ */ // TODO: Use the ID used by managed objects? - no way to get object by id, only by binding a string name to it. // IDEA: Could keep track also of on which server or client the object is? -// IDEA: Merge with GameObjectReference?? +// IDEA: Merge with ServeerSideGameObjectReference?? public final class GameObjectId implements Serializable { Deleted: trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectReference.java =================================================================== --- trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectReference.java 2008-04-18 22:31:12 UTC (rev 463) +++ trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectReference.java 2008-04-18 22:46:30 UTC (rev 464) @@ -1,36 +0,0 @@ -package org.skycastle.core; - -/** - * A reference to a {@link GameObject}. The reference can be serialized and persisted on the server side. - * - * @author Hans Häggström - */ -// IDEA: Could GameObjectId and GameObjectReference be combined? They seem to have more or less the same -// purpose, although GameObjectId is backed up by bindings, and works on both server and client side, -// while GameObjectReference is backed up by a ManagedObjectReference and only works on server side.. -public class GameObjectReference - extends PersistentReference<GameObject> -{ - - //====================================================================== - // Private Constants - - private static final long serialVersionUID = 1L; - - //====================================================================== - // Public Methods - - //---------------------------------------------------------------------- - // Constructors - - /** - * Creates a new {@link org.skycastle.core.GameObjectReference} to the specified {@link GameObject}. - * - * @param gameObject the {@link GameObject} to create a reference to. - */ - public GameObjectReference( final GameObject gameObject ) - { - super( gameObject ); - } - -} Copied: trunk/skycastle/modules/core/src/main/java/org/skycastle/core/ServeerSideGameObjectReference.java (from rev 462, trunk/skycastle/modules/core/src/main/java/org/skycastle/core/GameObjectReference.java) =================================================================== --- trunk/skycastle/modules/core/src/main/java/org/skycastle/core/ServeerSideGameObjectReference.java (rev 0) +++ trunk/skycastle/modules/core/src/main/java/org/skycastle/core/ServeerSideGameObjectReference.java 2008-04-18 22:46:30 UTC (rev 464) @@ -0,0 +1,36 @@ +package org.skycastle.core; + +/** + * A reference to a {@link GameObject}. The reference can be serialized and persisted on the server side. + * + * @author Hans Häggström + */ +// IDEA: Could GameObjectId and ServeerSideGameObjectReference be combined? They seem to have more or less the same +// purpose, although GameObjectId is backed up by bindings, and works on both server and client side, +// while ServeerSideGameObjectReference is backed up by a ManagedObjectReference and only works on server side.. +public class ServeerSideGameObjectReference + extends PersistentReference<ServerSideGameObject> +{ + + //====================================================================== + // Private Constants + + private static final long serialVersionUID = 1L; + + //====================================================================== + // Public Methods + + //---------------------------------------------------------------------- + // Constructors + + /** + * Creates a new {@link ServeerSideGameObjectReference} to the specified {@link GameObject}. + * + * @param gameObject the {@link GameObject} to create a reference to. + */ + public ServeerSideGameObjectReference( final ServerSideGameObject gameObject ) + { + super( gameObject ); + } + +} Modified: trunk/skycastle/modules/core/src/main/java/org/skycastle/protocol/ProtocolCommunicator.java =================================================================== --- trunk/skycastle/modules/core/src/main/java/org/skycastle/protocol/ProtocolCommunicator.java 2008-04-18 22:31:12 UTC (rev 463) +++ trunk/skycastle/modules/core/src/main/java/org/skycastle/protocol/ProtocolCommunicator.java 2008-04-18 22:46:30 UTC (rev 464) @@ -5,6 +5,8 @@ import org.skycastle.protocol.negotiation.ProtocolNegotiator; import org.skycastle.util.ParameterChecker; +import java.io.Serializable; + /** * Takes care of negotiating a protocol, and after that forwarding decoded messages to a listener. * <p/> @@ -16,6 +18,7 @@ */ // IDEA: Move logging / some error handling to this class, and avoid throwing out exceptions? public abstract class ProtocolCommunicator + implements Serializable { //====================================================================== Modified: trunk/skycastle/modules/server/src/main/java/org/skycastle/server/SkycastleClientSessionHandler.java =================================================================== --- trunk/skycastle/modules/server/src/main/java/org/skycastle/server/SkycastleClientSessionHandler.java 2008-04-18 22:31:12 UTC (rev 463) +++ trunk/skycastle/modules/server/src/main/java/org/skycastle/server/SkycastleClientSessionHandler.java 2008-04-18 22:46:30 UTC (rev 464) @@ -40,8 +40,8 @@ // so we supress a serialization warning for IDE:s that look for those problems. @SuppressWarnings( { "NonSerializableFieldInSerializableClass" } ) - private GameObjectReference myClientAccountReference; - private GameObjectId myClientAccountId; + private ServeerSideGameObjectReference myClientAccountReference = null; + private GameObjectId myClientAccountId = null; //====================================================================== // Private Constants @@ -168,11 +168,11 @@ LOGGER.log( Level.INFO, "User '" + myClientSession.getName() + "' logged in." ); - final GameObject account = getUserAccount( myClientSession.getName() ); + final ServerSideGameObject account = getUserAccount( myClientSession.getName() ); // TODO: Notify the account object that the user logged in. - myClientAccountReference = new GameObjectReference( account ); + myClientAccountReference = new ServeerSideGameObjectReference( account ); try { @@ -242,17 +242,17 @@ * * @return a {@link GameObject} with the specified users account object. */ - private GameObject getUserAccount( final String userLoginName ) + private ServerSideGameObject getUserAccount( final String userLoginName ) { final String bindingName = ACCOUNT_PREFIX + userLoginName; final GameObjectContext context = GameContext.getGameObjectContext(); - GameObject clientAccount = context.getGameObjectBoundToName( bindingName ); + ServerSideGameObject clientAccount = (ServerSideGameObject) context.getGameObjectBoundToName( bindingName ); if ( clientAccount == null ) { // If client doesn't yet have any account, create a new one - clientAccount = context.createGameObject(); + clientAccount = (ServerSideGameObject) context.createGameObject(); // TODO: Do we need to store the client user name with the account? Any other data? // TODO: This is a game / server extension point, as different servers could have different options and provided UI layouts here. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.