Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/Java/GWT/OldServer/src/org/litesoft/GWT/forms/server/support/nonpublic/FormServicePeerPushInterfaceBusAdapter.java

Diff revisions: vs.
  @@ -1,212 +1,212 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.GWT.forms.server.support.nonpublic;
3 -
4 - import org.litesoft.GWT.eventbus.client.*;
5 - import org.litesoft.GWT.eventbus.server.*;
6 - import org.litesoft.GWT.forms.client.rpc.*;
7 - import org.litesoft.GWT.forms.server.*;
8 - import org.litesoft.*;
9 - import org.litesoft.core.simpletypes.*;
10 - import org.litesoft.ui.def.nonpublic.support.*;
11 - import org.litesoft.ui.support.*;
12 - import org.litesoft.ui_1_5.*;
13 -
14 - import java.io.*;
15 - import java.util.concurrent.atomic.*;
16 -
17 - public class FormServicePeerPushInterfaceBusAdapter implements FormComponentBusConstants,
18 - EventPackageSubscriber,
19 - FormServicePeerEventBusPushInterface,
20 - ServerEventBusDisposeListener {
21 - private final AtomicReference<EventBus> mEventBus = new AtomicReference<EventBus>();
22 - private final AtomicReference<FormServicePeer> mServicePeer = new AtomicReference<FormServicePeer>();
23 - private final String mFormID;
24 - private final String mOurID;
25 -
26 - public FormServicePeerPushInterfaceBusAdapter( EventBus pEventBus, FormServicePeer pServicePeer,
27 - ISystemUserResolver pSystemUserResolver,
28 - Long pUniqueFormServicePeerID,
29 - FormCreationRequestPackage pPackage,
30 - ExternalizationInterface pExternalization,
31 - FormAccessControlFactory pFACfactory ) {
32 - mEventBus.set( pEventBus );
33 - mServicePeer.set( pServicePeer );
34 - mFormID = pPackage.getSourceName();
35 - mOurID = "FSP" + pEventBus.getNextUniqueID();
36 - FormUsage usage = pPackage.getFormUsage();
37 - Serializable initializationPayload = pPackage.getInitializationPayload();
38 - ServicePeerToFormCreationData zFCD;
39 - try {
40 - ISystemUser zSystemUser = getSystemUserForFormInteractionData( pEventBus );
41 - zFCD = pServicePeer.initializeAndCreateFormMetaData( this, pSystemUserResolver,
42 - pUniqueFormServicePeerID, zSystemUser, usage,
43 - initializationPayload, pExternalization,
44 - pFACfactory.getBaseFAC( pEventBus ) );
45 - }
46 - catch ( RuntimeException e ) {
47 - FormServicePeer.LOGGER.error.log( e );
48 - pEventBus.publishIfNotDisposed( new FormCreationResponsePackage( pPackage.getTargetName(), //
49 - mFormID, //
50 - e.getMessage() ) );
51 - return;
52 - }
53 - if ( pEventBus instanceof ServerEventBus ) {
54 - ((ServerEventBus) pEventBus).addListener( this );
55 - }
56 - pEventBus.subscribeAndPublishIfNotDisposed( this, new FormCreationResponsePackage( mOurID, mFormID,
57 - zFCD ) );
58 - }
59 -
60 - private ISystemUser getSystemUserForFormInteractionData( EventBus pEventBus ) {
61 - return (pEventBus instanceof AuthenticatedServerEventBus) ? //
62 - ((AuthenticatedServerEventBus) pEventBus).getLoggedInUser() : //
63 - null;
64 - }
65 -
66 - public EventBus getEventBus() {
67 - return mEventBus.get();
68 - }
69 -
70 - public String getFormID() {
71 - return mFormID;
72 - }
73 -
74 - public String getOurID() {
75 - return mOurID;
76 - }
77 -
78 - private void releaseResources() {
79 - EventBus zEventBus = mEventBus.getAndSet( null );
80 - if ( zEventBus != null ) {
81 - zEventBus.unsubscribe( this );
82 - if ( zEventBus instanceof ServerEventBus ) {
83 - ((ServerEventBus) zEventBus).removeListener( this );
84 - }
85 - }
86 - FormServicePeer zServicePeer = mServicePeer.getAndSet( null );
87 - if ( zServicePeer != null ) {
88 - zServicePeer.dispose();
89 - }
90 - }
91 -
92 - protected void finalize()
93 - throws Throwable {
94 - releaseResources();
95 - super.finalize();
96 - }
97 -
98 - private void sendToForm( EventPackage pPackage ) {
99 - EventBus zEventBus = mEventBus.get();
100 - if ( zEventBus != null ) {
101 - zEventBus.publishIfNotDisposed( pPackage );
102 - }
103 - }
104 -
105 - // EventPackageSubscriber:
106 -
107 - public String subscribeWith() {
108 - return mOurID;
109 - }
110 -
111 - public void packageReceivedVia( EventPackage pEventPackage, EventBus pEventBus ) {
112 - FormServicePeer zServicePeer = mServicePeer.get();
113 - if ( zServicePeer != null ) {
114 - try {
115 - if ( pEventPackage instanceof FormToServicePeerPackage ) {
116 - FormToServicePeerPackage zPackage = (FormToServicePeerPackage) pEventPackage;
117 - FormToServicePeerData zData = zPackage.getToServicePeerData();
118 - try {
119 - sendUnsolicitedData( zServicePeer.formEvent( zData ) );
120 - }
121 - catch ( RuntimeException e ) {
122 - sendUnsolicitedData( zData.getAsyncMessageNumber(),
123 - "Error processing 'formEvent': " + e.getMessage() );
124 - throw e;
125 - }
126 - } else if ( pEventPackage instanceof FormValuesRequestPackage ) {
127 - FormValuesRequestPackage zPackage = (FormValuesRequestPackage) pEventPackage;
128 - Integer zAsyncMessageNumber = zPackage.getAsyncMessageNumber();
129 - try {
130 - sendResponseFromRequestValues( zServicePeer.setRootObjectTo( zAsyncMessageNumber, //
131 - zPackage.getKey() ) );
132 - }
133 - catch ( RuntimeException e ) {
134 - sendResponseFromRequestValues( zAsyncMessageNumber,
135 - "Error processing 'setRootObjectTo': " +
136 - e.getMessage() );
137 - throw e;
138 - }
139 - } else if ( pEventPackage instanceof FormResourceRequestPackage ) {
140 - FormResourceRequestPackage zPackage = (FormResourceRequestPackage) pEventPackage;
141 - AttributeResourceOptionsRequestData zRequest = zPackage.getRequest();
142 - try {
143 - AttributeResourceOptionsResponseData zResponse =
144 - zServicePeer.getResourceOptions( zRequest );
145 - if ( zResponse == null ) {
146 - zResponse = new AttributeResourceOptionsResponseData(
147 - ResourceOptionsErrorType.ErrorNullReturned );
148 - }
149 - sendResponseFromResourceRequest( zRequest, zResponse );
150 - }
151 - catch ( RuntimeException e ) {
152 - sendResponseFromResourceRequest( zRequest, //
153 - new AttributeResourceOptionsResponseData(
154 - e.getMessage() ) );
155 - throw e;
156 - }
157 - } else if ( pEventPackage instanceof FormDisposePackage ) {
158 - releaseResources();
159 - }
160 - }
161 - catch ( RuntimeException e ) {
162 - FormServicePeer.LOGGER.error.log( e );
163 - }
164 - }
165 - }
166 -
167 - // PushInterface:
168 -
169 - public void releasedBy( FormServicePeer pFormServicePeer ) {
170 - releaseResources();
171 - }
172 -
173 - public void sendUnsolicitedData( ServicePeerToFormData pServicePeerToFormData ) {
174 - if ( pServicePeerToFormData != null ) {
175 - sendToForm( ServicePeerToFormPackage.unsolicitedData( mOurID, mFormID, pServicePeerToFormData ) );
176 - }
177 - }
178 -
179 - private void sendResponseFromResourceRequest( AttributeResourceOptionsRequestData pRequest,
180 - AttributeResourceOptionsResponseData pResource ) {
181 - sendToForm( new FormResourceResponsePackage( mOurID, mFormID, pRequest, pResource ) );
182 - }
183 -
184 - private void sendResponseFromRequestValues( ServicePeerToFormData pServicePeerToFormData ) {
185 - if ( pServicePeerToFormData != null ) {
186 - sendToForm( ServicePeerToFormPackage.responseFromRequestValues( mOurID, mFormID,
187 - pServicePeerToFormData ) );
188 - }
189 - }
190 -
191 - private void sendResponseFromRequestValues( Integer pAsyncMessageNumber, String pErrorText ) {
192 - sendResponseFromRequestValues( createErrorResponse( pAsyncMessageNumber, pErrorText ) );
193 - }
194 -
195 - private void sendUnsolicitedData( Integer pAsyncMessageNumber, String pErrorText ) {
196 - sendUnsolicitedData( createErrorResponse( pAsyncMessageNumber, pErrorText ) );
197 - }
198 -
199 - private ServicePeerToFormData createErrorResponse( Integer pAsyncMessageNumber, String pErrorText ) {
200 - ServicePeerToFormDataCollector collector = new ServicePeerToFormDataCollector();
201 - collector.setAsyncMessageNumber( pAsyncMessageNumber );
202 - collector.addError( pErrorText );
203 - return new ServicePeerToFormData( collector );
204 - }
205 -
206 - public void init( IServerEventBus pServerEventBus ) {
207 - }
208 -
209 - public void disposing( IServerEventBus pServerEventBus ) {
210 - releaseResources();
211 - }
212 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.GWT.forms.server.support.nonpublic;
3 +
4 + import org.litesoft.GWT.eventbus.client.*;
5 + import org.litesoft.GWT.eventbus.server.*;
6 + import org.litesoft.GWT.forms.client.rpc.*;
7 + import org.litesoft.GWT.forms.server.*;
8 + import org.litesoft.*;
9 + import org.litesoft.core.simpletypes.*;
10 + import org.litesoft.ui.def.nonpublic.support.*;
11 + import org.litesoft.ui.support.*;
12 + import org.litesoft.ui_1_5.*;
13 +
14 + import java.io.*;
15 + import java.util.concurrent.atomic.*;
16 +
17 + public class FormServicePeerPushInterfaceBusAdapter implements FormComponentBusConstants,
18 + EventPackageSubscriber,
19 + FormServicePeerEventBusPushInterface,
20 + ServerEventBusDisposeListener {
21 + private final AtomicReference<EventBus> mEventBus = new AtomicReference<EventBus>();
22 + private final AtomicReference<FormServicePeer> mServicePeer = new AtomicReference<FormServicePeer>();
23 + private final String mFormID;
24 + private final String mOurID;
25 +
26 + public FormServicePeerPushInterfaceBusAdapter( EventBus pEventBus, FormServicePeer pServicePeer,
27 + ISystemUserResolver pSystemUserResolver,
28 + Long pUniqueFormServicePeerID,
29 + FormCreationRequestPackage pPackage,
30 + ExternalizationInterface pExternalization,
31 + FormAccessControlFactory pFACfactory ) {
32 + mEventBus.set( pEventBus );
33 + mServicePeer.set( pServicePeer );
34 + mFormID = pPackage.getSourceName();
35 + mOurID = "FSP" + pEventBus.getNextUniqueID();
36 + FormUsage usage = pPackage.getFormUsage();
37 + Serializable initializationPayload = pPackage.getInitializationPayload();
38 + ServicePeerToFormCreationData zFCD;
39 + try {
40 + ISystemUser zSystemUser = getSystemUserForFormInteractionData( pEventBus );
41 + zFCD = pServicePeer.initializeAndCreateFormMetaData( this, pSystemUserResolver,
42 + pUniqueFormServicePeerID, zSystemUser, usage,
43 + initializationPayload, pExternalization,
44 + pFACfactory.getBaseFAC( pEventBus ) );
45 + }
46 + catch ( RuntimeException e ) {
47 + FormServicePeer.LOGGER.error.log( e );
48 + pEventBus.publishIfNotDisposed( new FormCreationResponsePackage( pPackage.getTargetName(), //
49 + mFormID, //
50 + e.getMessage() ) );
51 + return;
52 + }
53 + if ( pEventBus instanceof ServerEventBus ) {
54 + ((ServerEventBus) pEventBus).addListener( this );
55 + }
56 + pEventBus.subscribeAndPublishIfNotDisposed( this, new FormCreationResponsePackage( mOurID, mFormID,
57 + zFCD ) );
58 + }
59 +
60 + private ISystemUser getSystemUserForFormInteractionData( EventBus pEventBus ) {
61 + return (pEventBus instanceof AuthenticatedServerEventBus) ? //
62 + ((AuthenticatedServerEventBus) pEventBus).getLoggedInUser() : //
63 + null;
64 + }
65 +
66 + public EventBus getEventBus() {
67 + return mEventBus.get();
68 + }
69 +
70 + public String getFormID() {
71 + return mFormID;
72 + }
73 +
74 + public String getOurID() {
75 + return mOurID;
76 + }
77 +
78 + private void releaseResources() {
79 + EventBus zEventBus = mEventBus.getAndSet( null );
80 + if ( zEventBus != null ) {
81 + zEventBus.unsubscribe( this );
82 + if ( zEventBus instanceof ServerEventBus ) {
83 + ((ServerEventBus) zEventBus).removeListener( this );
84 + }
85 + }
86 + FormServicePeer zServicePeer = mServicePeer.getAndSet( null );
87 + if ( zServicePeer != null ) {
88 + zServicePeer.dispose();
89 + }
90 + }
91 +
92 + protected void finalize()
93 + throws Throwable {
94 + releaseResources();
95 + super.finalize();
96 + }
97 +
98 + private void sendToForm( EventPackage pPackage ) {
99 + EventBus zEventBus = mEventBus.get();
100 + if ( zEventBus != null ) {
101 + zEventBus.publishIfNotDisposed( pPackage );
102 + }
103 + }
104 +
105 + // EventPackageSubscriber:
106 +
107 + public String subscribeWith() {
108 + return mOurID;
109 + }
110 +
111 + public void packageReceivedVia( EventPackage pEventPackage, EventBus pEventBus ) {
112 + FormServicePeer zServicePeer = mServicePeer.get();
113 + if ( zServicePeer != null ) {
114 + try {
115 + if ( pEventPackage instanceof FormToServicePeerPackage ) {
116 + FormToServicePeerPackage zPackage = (FormToServicePeerPackage) pEventPackage;
117 + FormToServicePeerData zData = zPackage.getToServicePeerData();
118 + try {
119 + sendUnsolicitedData( zServicePeer.formEvent( zData ) );
120 + }
121 + catch ( RuntimeException e ) {
122 + sendUnsolicitedData( zData.getAsyncMessageNumber(),
123 + "Error processing 'formEvent': " + e.getMessage() );
124 + throw e;
125 + }
126 + } else if ( pEventPackage instanceof FormValuesRequestPackage ) {
127 + FormValuesRequestPackage zPackage = (FormValuesRequestPackage) pEventPackage;
128 + Integer zAsyncMessageNumber = zPackage.getAsyncMessageNumber();
129 + try {
130 + sendResponseFromRequestValues( zServicePeer.setRootObjectTo( zAsyncMessageNumber, //
131 + zPackage.getKey() ) );
132 + }
133 + catch ( RuntimeException e ) {
134 + sendResponseFromRequestValues( zAsyncMessageNumber,
135 + "Error processing 'setRootObjectTo': " +
136 + e.getMessage() );
137 + throw e;
138 + }
139 + } else if ( pEventPackage instanceof FormResourceRequestPackage ) {
140 + FormResourceRequestPackage zPackage = (FormResourceRequestPackage) pEventPackage;
141 + AttributeResourceOptionsRequestData zRequest = zPackage.getRequest();
142 + try {
143 + AttributeResourceOptionsResponseData zResponse =
144 + zServicePeer.getResourceOptions( zRequest );
145 + if ( zResponse == null ) {
146 + zResponse = new AttributeResourceOptionsResponseData(
147 + ResourceOptionsErrorType.ErrorNullReturned );
148 + }
149 + sendResponseFromResourceRequest( zRequest, zResponse );
150 + }
151 + catch ( RuntimeException e ) {
152 + sendResponseFromResourceRequest( zRequest, //
153 + new AttributeResourceOptionsResponseData(
154 + e.getMessage() ) );
155 + throw e;
156 + }
157 + } else if ( pEventPackage instanceof FormDisposePackage ) {
158 + releaseResources();
159 + }
160 + }
161 + catch ( RuntimeException e ) {
162 + FormServicePeer.LOGGER.error.log( e );
163 + }
164 + }
165 + }
166 +
167 + // PushInterface:
168 +
169 + public void releasedBy( FormServicePeer pFormServicePeer ) {
170 + releaseResources();
171 + }
172 +
173 + public void sendUnsolicitedData( ServicePeerToFormData pServicePeerToFormData ) {
174 + if ( pServicePeerToFormData != null ) {
175 + sendToForm( ServicePeerToFormPackage.unsolicitedData( mOurID, mFormID, pServicePeerToFormData ) );
176 + }
177 + }
178 +
179 + private void sendResponseFromResourceRequest( AttributeResourceOptionsRequestData pRequest,
180 + AttributeResourceOptionsResponseData pResource ) {
181 + sendToForm( new FormResourceResponsePackage( mOurID, mFormID, pRequest, pResource ) );
182 + }
183 +
184 + private void sendResponseFromRequestValues( ServicePeerToFormData pServicePeerToFormData ) {
185 + if ( pServicePeerToFormData != null ) {
186 + sendToForm( ServicePeerToFormPackage.responseFromRequestValues( mOurID, mFormID,
187 + pServicePeerToFormData ) );
188 + }
189 + }
190 +
191 + private void sendResponseFromRequestValues( Integer pAsyncMessageNumber, String pErrorText ) {
192 + sendResponseFromRequestValues( createErrorResponse( pAsyncMessageNumber, pErrorText ) );
193 + }
194 +
195 + private void sendUnsolicitedData( Integer pAsyncMessageNumber, String pErrorText ) {
196 + sendUnsolicitedData( createErrorResponse( pAsyncMessageNumber, pErrorText ) );
197 + }
198 +
199 + private ServicePeerToFormData createErrorResponse( Integer pAsyncMessageNumber, String pErrorText ) {
200 + ServicePeerToFormDataCollector collector = new ServicePeerToFormDataCollector();
201 + collector.setAsyncMessageNumber( pAsyncMessageNumber );
202 + collector.addError( pErrorText );
203 + return new ServicePeerToFormData( collector );
204 + }
205 +
206 + public void init( IServerEventBus pServerEventBus ) {
207 + }
208 +
209 + public void disposing( IServerEventBus pServerEventBus ) {
210 + releaseResources();
211 + }
212 + }