Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.GWT.server;

import java.util.*;

import org.litesoft.GWT.client.rpc.*;
import org.litesoft.bo.views.*;
import org.litesoft.bo.views.caching.*;
import org.litesoft.bo.views.communication.*;
import org.litesoft.bo.views.server.*;
import org.litesoft.commonfoundation.exceptions.*;
import org.litesoft.core.*;

public abstract class AbstractVoServerApp extends AbstractServerApp implements VoService  // don't forget this!
{
    private ServerVoDataProviderMap mDPmap;

    protected AbstractVoServerApp( String pAppName, VoCacheManager pCacheManager, ServerVoDataProviderMapFactory pFactory )
    {
        super( pAppName );
        ServletSessionHelper.initialize( pCacheManager );
        ServerContext.getMasterServerStore().set( ServerVoDataProviderMap.class, mDPmap = pFactory.createServerVoDataProviderMap() );
    }

    @Override
    public final SCpayload process( CSpayload pPayload )
    {
        ContextID zContextID = ServletSessionHelper.callInit( getThreadLocalRequest().getSession( true ) );

        try
        {
            AbstractCSrequestVOtype zRequest = (AbstractCSrequestVOtype) pPayload.getCSrequest();
            if ( zRequest == null )
            {
                return new SCpayload( new VOSCresponseError( "" ), getTemporalTriggers() ); // Simple Poll
            }
            String zViewObjectRegisteredName = zRequest.getForViewObjectRegisteredName();

            ServerVoDataProvider<IViewObject> zDataProvider = mDPmap.get( zViewObjectRegisteredName );

            if ( zDataProvider == null )
            {
                throw new IllegalStateException( "No DataProvider for '" + zViewObjectRegisteredName + "'" );
            }

            SCresult zResult = zRequest.process( mDPmap, zDataProvider );

            CacheID zCacheID = pPayload.getResponseCacheID();
            if ( zCacheID != null )
            {
                if ( zResult.getReadObjectClassName() != null )
                {
                    ServletSessionHelper.getCacheManager().addType( zContextID, zCacheID, zResult.getReadObjectClassName() );
                }
                else if ( zResult.getReadObjectURL() != null )
                {
                    ServletSessionHelper.getCacheManager().addInstance( zContextID, zCacheID, zResult.getReadObjectURL() );
                }
            }
            List<ObjectURL> zChangedObjectURLs = zResult.getChangedObjectURLs();

            CacheID[] zCacheIDs = ServletSessionHelper.getCacheManager().invalidate( zContextID, zChangedObjectURLs );

            return new SCpayload( zResult.getSCresponse(), getTemporalTriggers(), zCacheIDs );
        }
        catch ( SessionExpiredException e )
        {
            return new SCpayload( new SecuritySCresponse( true, e.getMessage() ), getTemporalTriggers() );
        }
        catch ( SecurityException e )
        {
            return new SCpayload( new SecuritySCresponse( false, e.getMessage() ), getTemporalTriggers() );
        }
        catch ( RuntimeException e )
        {
            if ( e instanceof DisplayableException )
            {
                DisplayableException zDisplayable = (DisplayableException) e;
                return new SCpayload( new VOSCresponseError( resolve( zDisplayable.getToResolveIdentifier(), zDisplayable.getParams() ) ), getTemporalTriggers() );
            }
            getLogger().warn().log( e );
            throw e;
        }
        finally
        {
            ServletSessionHelper.callFini();
        }
    }

    protected synchronized TemporalTrigger[] getTemporalTriggers()
    {
        if ( mTemporalTriggerAccessors.isEmpty() )
        {
            return null;
        }
        TemporalTrigger[] rv = new TemporalTrigger[mTemporalTriggerAccessors.size()];
        for ( int i = 0; i < mTemporalTriggerAccessors.size(); i++ )
        {
            rv[i] = mTemporalTriggerAccessors.get( i ).getTrigger();
        }
        return rv;
    }

    private List<TemporalTriggerAccessor> mTemporalTriggerAccessors = new ArrayList<TemporalTriggerAccessor>();

    public synchronized void add( TemporalTriggerAccessor pTemporalTriggerAccessor )
    {
        if ( pTemporalTriggerAccessor != null )
        {
            mTemporalTriggerAccessors.add( pTemporalTriggerAccessor );
        }
    }

    abstract protected String resolve( String pIdentifier, String[] pParams );
}

Commits for litesoft/trunk/Java/GWT/Server/src/org/litesoft/GWT/server/AbstractVoServerApp.java

Diff revisions: vs.
Revision Author Commited Message
947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

939 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 21:30:31 +0000

Extracting commonfoundation

474 Diff Diff GeorgeS picture GeorgeS Fri 02 Sep, 2011 14:29:50 +0000

Switch to Properties and eliminate some of the Per App shit

49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

25 Diff Diff GeorgeS picture GeorgeS Mon 01 Mar, 2010 14:09:51 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000