litesoft
@ 950
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 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.GWT.server; 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.*; import java.util.*; 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
Revision | Author | Commited | Message |
---|---|---|---|
950 Diff | GeorgeS | Thu 19 Jun, 2014 17:57:04 +0000 | New Lines |
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
474 Diff | GeorgeS | Fri 02 Sep, 2011 14:29:50 +0000 | Switch to Properties and eliminate some of the Per App shit |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
25 Diff | GeorgeS | Mon 01 Mar, 2010 14:09:51 +0000 | |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |