Changeset 21203 in main


Ignore:
Timestamp:
08/05/20 00:38:43 (16 months ago)
Author:
GarthBraithwaite_STG
Message:

java, view - saved query with login working from within result page. Cleaned out def from result and builder removed. Put dialogs from global var to associated with the window object.

Location:
trunk
Files:
1 added
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/SiteSpecific.xml

    r21201 r21203  
    173173                                <entry key="/query/definition/contentblocks/**" value-ref="queryDefinitionResultContentBlocksController"/>
    174174
    175                                 <entry key="/query/definition/from/result"              value-ref="queryDefinitionFromResultController"/>
    176175                                <entry key="/query/definition/save"                             value-ref="queryDefinitionSaveController"/>
    177176                                <entry key="/query/definition/delete/*"                 value-ref="queryDefinitionDeleteController"/>
     
    193192                                <entry key="/secure/query/definition/result/*/*"        value-ref="secureQueryDefinitionResultController"/>
    194193                                <entry key="/secure/query/definition/builder/*/*"       value-ref="secureQueryDefinitionBuilderController"/>
    195                                 <entry key="/secure/query/definition/from/builder"      value-ref="secureQueryDefinitionFromBuilderController"/>
    196                                 <entry key="/secure/query/definition/from/result"       value-ref="secureQueryDefinitionFromResultController"/>
    197194
    198195
     
    213210                                <entry key="/user/status"                                               value-ref="userStatusController"/>
    214211                                <entry key="/user/access/email"                                 value-ref="userEmailAccessController"/>
     212
     213<entry key="/user/Login.json"           value-ref="securityAjaxLoginController"/>
     214
    215215<!-- These should be implemented inplace of above requests.
    216216                                <entry key="/user/Profile.html"                                 value-ref="userEditProfileController"/>
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/query-definition.xml

    r21201 r21203  
    217217                </description>
    218218                <property name="view" ref="queryResultContentBlocksView"/>
    219         </bean>
    220 
    221 <bean id="queryDefinitionFromBuilderController" parent="commonModelMapListController">
    222                 <description>
    223                         query/definition/from/builder
    224                         The builder has the QM in the session.  Any session selected values
    225                         are cleared then the new user selected values from the post are
    226                         added.  This new QM is now the main model map that the QD detail page
    227                         uses for the selected values section.  The XSLT recognizes that this
    228                         is a new def and populates the page with default values.
    229                 </description>
    230                 <property name="modelMapList">
    231                         <list>
    232                                 <ref bean="queryModuleDocumentFromSessionModelMap"/>
    233                                 <ref bean="queryModuleDeleteUserSelectionsModelMap"/>
    234                                 <ref bean="queryModuleAddUserSelectionsModelMap"/>
    235 
    236                                 <ref bean="commonMeasuresModelMap"/>
    237                                 <ref bean="commonValueTypesModelMap"/>
    238                         </list>
    239                 </property>
    240                 <property name="view" ref="queryDefinitionDetailView"/>
    241                 <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
    242         </bean>
    243         <bean id="queryDefinitionFromResultController" parent="commonModelMapListController">
    244                 <description>
    245                         query/definition/from/result
    246                         Same as the builder version but invoked from the query result page.
    247                         Note that this version already has the user's selections so no need
    248                         to clear and add.
    249                 </description>
    250                 <property name="modelMapList">
    251                         <list>
    252                                 <ref bean="queryModuleDocumentFromSessionModelMap"/>
    253 
    254                                 <ref bean="commonMeasuresModelMap"/>
    255                                 <ref bean="commonValueTypesModelMap"/>
    256                         </list>
    257                 </property>
    258                 <property name="view" ref="queryDefinitionNewView"/>
    259                 <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
    260219        </bean>
    261220
     
    349308                <property name="XSLTPathAndFilename" value="html/query/definition/detail/DetailPage.xslt"/>
    350309        </bean>
    351         <bean id="queryDefinitionNewView" parent="commonXSLTTransformationView">
    352                 <property name="XSLTPathAndFilename" value="html/query/definition/new/NewPage.xslt"/>
    353         </bean>
    354310</beans>
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/secure.xml

    r21163 r21203  
    241241        </bean>
    242242
    243         <bean id="secureQueryDefinitionFromBuilderController" parent="queryDefinitionFromBuilderController">
    244                 <property name="view" ref="secureQueryDefinitionEditDetailView"/>
    245         </bean>
    246 
    247         <bean id="secureQueryDefinitionFromResultController" parent="queryDefinitionFromResultController">
    248                 <property name="view" ref="secureQueryDefinitionEditDetailView"/>
    249         </bean>
    250 
    251243
    252244        <bean id="secureTestController" parent="commonModelMapListController">
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/security.xml

    r21201 r21203  
    2020                <constructor-arg value="/user/Login.html"/>
    2121        </bean>
     22        <bean id="securitySecurityContextRepository" class="org.springframework.security.web.context.HttpSessionSecurityContextRepository"/>
    2223
    2324
     
    4142                                <ref bean="securitySecureQueryPostSubmitFilterChain"/>
    4243                                <ref bean="securitySecureQueryFilterChain"/>
    43                                 <ref bean="securityAJAXAuthenticationFilterChain"/>
    4444                                <ref bean="securityAuthenticationFilterChain"/>
     45<ref bean="securityAJAXAuthenticationFilterChain"/>
    4546                        </list>
    4647                </constructor-arg>
     
    167168
    168169
    169 
    170 
    171 
    172 
    173 
    174 
    175 
    176 
    177         <bean id="securityAJAXAuthenticationFilterChain" class="org.ibisph.web.filter.AntPatternSecurityFilterChain">
    178                 <description>
    179                         Authenticated only chain.  This is used for self registered "user"
    180                         related requests and the default non specific "secure" type requests
    181                         (test jsp, selections and saved queries).
    182                 </description>
    183                 <constructor-arg>
    184                         <list>
    185                                 <value>/user/ajax_authenticate</value>
    186                         </list>
    187                 </constructor-arg>
    188                 <constructor-arg>
    189                         <list>
    190                                 <ref bean="securitySecurityContextPersistenceFilter"/>
    191                                 <ref bean="securityAuthenticationHeaderProcessingFilter"/>
    192                                 <ref bean="securityAJAXAuthenticationProcessingFilter"/>
    193                                 <ref bean="securityExceptionTranslationFilter"/>
    194                                 <ref bean="securityAuthenticationAccessInterceptorFilter"/>
    195 <!--
    196 -->
    197                         </list>
    198                 </constructor-arg>
    199         </bean>
    200 
    201 
    202 
    203 
    204 
    205 
    206 
    207 
    208 
    209 
    210170        <!-- ======================================================= F I L T E R S -->
    211171        <bean id="securitySecurityContextPersistenceFilter" class="org.springframework.security.web.context.SecurityContextPersistenceFilter">
    212                 <constructor-arg>
    213                         <bean class="org.springframework.security.web.context.HttpSessionSecurityContextRepository"/>
    214                 </constructor-arg>
     172                <constructor-arg ref="securitySecurityContextRepository"/>
    215173        </bean>
    216174        <bean id="securityConcurrentSessionFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter">
     
    353311
    354312
     313
     314
     315
     316
     317
     318
     319
     320
     321        <bean id="securityAJAXAuthenticationFilterChain" class="org.ibisph.web.filter.AntPatternSecurityFilterChain">
     322                <description>
     323                        Authenticated only chain.  This is used for self registered "user"
     324                        related requests and the default non specific "secure" type requests
     325                        (test jsp, selections and saved queries).
     326                </description>
     327                <constructor-arg>
     328                        <list>
     329                                <value>/user/ajax_authenticate</value>
     330                        </list>
     331                </constructor-arg>
     332                <constructor-arg>
     333                        <list>
     334                                <ref bean="securitySecurityContextPersistenceFilter"/>
     335                                <ref bean="securityAuthenticationHeaderProcessingFilter"/>
     336                                <ref bean="securityAJAXAuthenticationProcessingFilter"/>
     337                                <ref bean="securityExceptionTranslationFilter"/>
     338                                <ref bean="securityAuthenticationAccessInterceptorFilter"/>
     339<!--
     340-->
     341                        </list>
     342                </constructor-arg>
     343        </bean>
     344
    355345        <!-- AJAX form based login filter -->
    356346        <bean id="securityAJAXAuthenticationProcessingFilter" class="org.ibisph.user.springsecurity.LogUserAuthenticationProcessingFilter">
     
    381371
    382372
     373
     374
     375
     376
     377
     378
     379
     380
    383381        <!-- form based login filter -->
    384382        <bean id="securityAuthenticationPageProcessingFilter" class="org.ibisph.user.springsecurity.LogUserAuthenticationProcessingFilter">
     
    386384                <property name="usernameParameter"        value="username"/>
    387385                <property name="passwordParameter"        value="password"/>
     386                <property name="postOnly"                 value="true"/>
    388387
    389388                <property name="authenticationSuccessHandler" ref="securityAuthenticationSuccessAuthenticationHandler"/>
     
    445444                <property name="useForward" value="true"/>
    446445        </bean>
     446
     447
     448<bean id="securityAjaxLoginController" class="org.ibisph.user.springsecurity.AjaxLoginController">
     449                <property name="authenticationManager"     ref="securityAuthenticationProviderManager"/>
     450                <property name="SecurityContextRepository" ref="securitySecurityContextRepository"/>
     451        </bean>
     452
    447453
    448454
  • trunk/ibisph-view/src/main/webapp/xslt/html/VideoDialog.xslt

    r19983 r21203  
    2020                <dialog id="videoDialog" class="DialogContent">
    2121                        <div class="InnerCanvas"><div id="mediaPlayer"></div></div>
    22                         <button type="button" title="Closes map selection without updating selections."
     22                        <button type="button" title="Closes video window."
    2323                                onclick="closeVideo()"
    2424                        >Close</button>
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/Page.xslt

    r20582 r21203  
    157157                        var dimensionName = "<xsl:value-of select="$Page.dimensionName"/>";
    158158
    159                         var selectionMapDialog;
    160159                        var $jqueryLeaflet;
    161160
     
    169168                                }
    170169
    171                                 selectionMapDialog =
     170                                window.selectionMapDialog =
    172171                                        $("#selectionMapDialog").kendoWindow({
    173172                                                title: "<xsl:value-of select="$Page.communityDimensionTitle"/> Selection Map"
     
    197196                        function showMap()
    198197                        {
    199                                 selectionMapDialog.center().open();
     198                                window.selectionMapDialog.center().open();
    200199                                $jqueryLeaflet.map.invalidateSize();
    201200                                L.Control.LayerSets.prototype.htmlSelectionsToMapSelections("GeoProxy", "dimensionValue", $jqueryLeaflet.map, dimensionName);
     
    231230                        </div>
    232231                        <button type="button" title="Sets the selected geographical values."
    233                                 onclick="L.Control.LayerSets.prototype.mapSelectionsToHTMLSelections($jqueryLeaflet.map, 'GeoProxy', 'dimensionValue'); selectionMapDialog.close()"
     232                                onclick="L.Control.LayerSets.prototype.mapSelectionsToHTMLSelections($jqueryLeaflet.map, 'GeoProxy', 'dimensionValue'); window.selectionMapDialog.close()"
    234233                        >OK</button>
    235234                        <button type="button" title="Closes map selection without updating selections."
    236                                 onclick="selectionMapDialog.close()"
     235                                onclick="window.selectionMapDialog.close()"
    237236                        >Cancel</button>
    238237                </div>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/definition/QueryDefinition.xslt

    r21167 r21203  
    8484                        </div>
    8585                        <button type="button" onclick="saveDefinition();">Save</button>
    86                         <button type="button" onclick="queryDefinitionEditIdentityDialog.close()" title="Closes the edit without saving.">Cancel</button>
     86                        <button type="button" onclick="window.queryDefinitionEditIdentityDialog.close()" title="Closes the edit without saving.">Cancel</button>
    8787                </div>
    8888
     
    218218                <script type="text/javascript">
    219219                        // <![CDATA[
    220                         var queryDefinitionEditIdentityDialog = null;
    221220                        $(document).ready(function()
    222221                        {
    223                                 queryDefinitionEditIdentityDialog =
     222                                window.queryDefinitionEditIdentityDialog =
    224223                                        $("#queryDefinitionEditIdentityDialog").kendoWindow({
    225224                                                title: "Saved Query Definition"
     
    241240                                                        ,url:  form.attr("action")
    242241                                                        ,data: form.serialize()
    243                                                         ,success: function(data) { alert("success!"); }
     242                                                        ,success: function(data) {}
    244243                                                        ,error: function(data)
    245244                                                        {
     
    255254
    256255                        }); //~~~~~~~~~~~~~~~~~~~~ End of Ready Function ~~~~~~~~~~~~~~~~~~~
     256
     257
    257258                        function showIdentityDialog()
    258259                        {
    259                                 queryDefinitionEditIdentityDialog.center().open();
     260                                window.queryDefinitionEditIdentityDialog.center().open();
    260261                                document.getElementById("name").focus();
    261262                        } //~~~~~~~~~~~~~~~~~~~~ End of Function ~~~~~~~~~~~~~~~~~~~
     263
    262264
    263265                        var validNameCharactersRegEx = /^[a-z0-9_\-]+$/i; //    [A-Za-z0-9\-\_\.]*;
     
    283285                                }
    284286                                $("#identityForm").trigger("submit");
    285                                 queryDefinitionEditIdentityDialog.close();
    286 //                              location.reload();
     287                                window.queryDefinitionEditIdentityDialog.close();
     288                                location.reload();
    287289                        }
    288290                        // ]]>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/definition/detail/DetailPage.xslt

    r15958 r21203  
    1313        <ibis:doc>
    1414                <name>html/query/definition/detail/DetailPage</name>
    15                 <summary>Produces Main Query Definition Detail Edit page</summary>
     15                <summary>Produces Main Query Definition Detail View/Edit page</summary>
    1616                <description>
    17                         XSLT used to create the Query Definition Edit page.
     17                        XSLT for Query Definition View/Edit page.
    1818                </description>
    1919        </ibis:doc>
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/definition/detail/Page.xslt

    r21163 r21203  
    116116                </xsl:call-template>
    117117
     118<xsl:if test="not($QueryDefinition.isBlankQueryDefinition)">
    118119                <xsl:call-template name="ContentContainer.expandable">
    119120                        <xsl:with-param name="title" select="'Saved Query Dataset Definition Identity'"/>
     
    219220                        </xsl:with-param>
    220221                </xsl:call-template>
     222</xsl:if>
    221223
    222224                <xsl:call-template name="ContentContainer.expandable">
     
    375377                        <xsl:with-param name="configuration" select="$configuration"/>
    376378                </xsl:call-template>
     379
     380<xsl:if test="ibis:isAuthenticated() and $QueryDefinition.isBlankQueryDefinition">
     381                <script type="text/javascript">
     382                        $(document).ready(function(){ showIdentityDialog(); });
     383                </script>
     384</xsl:if>
    377385        </xsl:template>
    378386
     
    385393                        <h3><xsl:value-of select="'Query Definition Detail Options'"/></h3>
    386394                        <div class="Container Buttons">
     395<xsl:if test="not($QueryDefinition.isBlankQueryDefinition)">
    387396                                <button id="runButton" type="button" accesskey="R" font-icon="&#xe200;" alt="Run Icon"
    388397                                        onclick="location.href='{$baseRequestPath}result/{$definitionURLSuffix}'"
     
    394403                                        title="Open the definition in the query builder interface."
    395404                                >Open This Definition in the Builder</button>
    396 
    397                 <xsl:if test="$QueryDefinition.isMyQueryDefinitions">
     405</xsl:if>
     406                <xsl:if test="$QueryDefinition.isMyQueryDefinitions or
     407                        (ibis:isAuthenticated() and $QueryDefinition.isBlankQueryDefinition)"
     408                >
    398409                                <button id="editButton" type="button" accesskey="E" font-icon="&#xe10b;" alt="Edit Icon"
    399410                                        onclick="showIdentityDialog()"
    400411                                        title="Edit the definition's identity or delete the definition."
    401412                                >Edit Definition Identity</button>
    402                                 <button id="deleteButton" type="button" accesskey="D" font-icon="&#xe10c;" alt="Delete Icon"
     413                </xsl:if>
     414
     415                <xsl:if test="$QueryDefinition.isMyQueryDefinitions">
     416                                <button id="deleteButton" type="button" accesskey="D" font-icon="&#xe10c;" alt="Delete Icon"
    403417                                        onclick="deleteDefinition()"
    404418                                        title="Delete the definition's identity."
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/Page.xslt

    r21106 r21203  
    5656                display selections.  These saved query definitions can
    5757                then be ran later and can even be shared with others.
     58                <br/><br/>
     59
     60                NOTE: you need to be <a href="{$ibis.baseRequestPath}user/Login.html">logged in</a>
     61                with either a self registered account or a secure account to be able to
     62                save definitions.
    5863        </xsl:param>
    5964        <xsl:param name="Page.loadQueryDefinitionHelpContent">
     
    6368                <br/><br/>
    6469
    65                 NOTE: you will need to be logged in to be able to see
    66                 your definitions.
     70                NOTE: you need to be <a href="{$ibis.baseRequestPath}user/Login.html">logged in</a>
     71                with either a self registered account or a secure account to be able to
     72                see your save definitions.
    6773        </xsl:param>
    6874
  • trunk/ibisph-view/src/main/webapp/xslt/html/query/module/builder/SectionSelections.xslt

    r20915 r21203  
    651651                                </xsl:call-template>
    652652                        </div>
    653                         <button type="button" onclick="L.Control.LayerSets.prototype.mapSelectionsToHTMLSelections($jqueryLeaflet.map, 'GeoProxy', null); selectionMapDialog.close()" title="Sets the selected geographical values.">OK</button>
    654                         <button type="button" onclick="selectionMapDialog.close()" title="Closes map selection without updating selections.">Cancel</button>
     653                        <button type="button" onclick="L.Control.LayerSets.prototype.mapSelectionsToHTMLSelections($jqueryLeaflet.map, 'GeoProxy', null); window.selectionMapDialog.close()" title="Sets the selected geographical values.">OK</button>
     654                        <button type="button" onclick="window.selectionMapDialog.close()" title="Closes map selection without updating selections.">Cancel</button>
    655655                </div>
    656656
    657657                <xsl:call-template name="DataViz.selectionMapJavaScript"/>
    658658                <script type="text/javascript">
    659                         var selectionMapDialog;
    660659                        var $jqueryLeaflet;
    661660
    662661                        $(document).ready(function()
    663662                        {
    664                                 selectionMapDialog =
     663                                window.selectionMapDialog =
    665664                                        $("#selectionMapDialog").kendoWindow({
    666665                                                title: "Selection Map"
     
    690689                        function showMap()
    691690                        {
    692                                 selectionMapDialog.center().open();
     691                                window.selectionMapDialog.center().open();
    693692                                $jqueryLeaflet.map.invalidateSize();
    694693                                L.Control.LayerSets.prototype.htmlSelectionsToMapSelections("GeoProxy", null, $jqueryLeaflet.map, null);
  • trunk/ibisph-view/src/main/webapp/xslt/html/user/access/Page.xslt

    r20786 r21203  
    9696
    9797                <script type="text/javascript">
    98                         var loggedInDialog;
    9998                        $(document).ready(function()
    10099                        {
    101                                 loggedInDialog =
     100                                window.loggedInDialog =
    102101                                        $("#loggedInDialog").kendoWindow({
    103102                                                title: "Already Logged In"
     
    109108                                if("" != "<xsl:value-of select="$ibis.userProfile/EMAIL_ADDRESS"/>")
    110109                                {
    111                                         loggedInDialog.center().open();
     110                                        window.loggedInDialog.center().open();
    112111                                }
    113112                        });
  • trunk/ibisph-view/src/main/webapp/xslt/html/user/registration/Page.xslt

    r20786 r21203  
    5454        <xsl:param name="Page.contentSectionsPostFormContent">
    5555
    56                 <a onclick="usageAgreementDialog.center().open();">Terms and Conditions</a>
     56                <a onclick="window.usageAgreementDialog.center().open();">Terms and Conditions</a>
    5757                <br/><br/>
    5858       
     
    102102                                your browser's back button.
    103103                        </div>
    104                         <button type="button" onclick="usageAgreementDialog.close()" title="Closes this message.">I Agree</button>
     104                        <button type="button" onclick="window.usageAgreementDialog.close()" title="Closes this message.">I Agree</button>
    105105                </div>
    106106
     
    118118
    119119                <script type="text/javascript">
    120                         var usageAgreementDialog;
    121                         var loggedInDialog;
    122120                        $(document).ready(function()
    123121                        {
    124                                 loggedInDialog =
     122                                window.loggedInDialog =
    125123                                        $("#loggedInDialog").kendoWindow({
    126124                                                title: "Already Logged In"
     
    131129                                        }).data('kendoWindow');
    132130
    133                                 usageAgreementDialog =
     131                                window.usageAgreementDialog =
    134132                                        $("#usageAgreementDialog").kendoWindow({
    135133                                                title: "Department of Health User Preferences Account"
     
    142140                                if("" != "<xsl:value-of select="$ibis.userProfile/EMAIL_ADDRESS"/>")
    143141                                {
    144                                         loggedInDialog.center().open();
     142                                        window.loggedInDialog.center().open();
    145143                                }
    146144                                else
     
    150148                                        // HTML5 need to revert back to cookie based tracking.
    151149                                        var usageAgreement = window.sessionStorage.getItem("ibisph.registrationUsageAgreement");
    152                                         if("shown" != usageAgreement) usageAgreementDialog.center().open();
     150                                        if("shown" != usageAgreement) window.usageAgreementDialog.center().open();
    153151                                        window.sessionStorage.setItem("ibisph.registrationUsageAgreement", "shown");
    154152                                }
  • trunk/ibisph/src/main/java/org/ibisph/querydefinition/modelmap/SaveQueryDefinitionFromHTTPRequest.java

    r21163 r21203  
    2121  protected HTTPRequestParametersToContainerElementService httpRequestParametersToContainerElementService;
    2222
    23   protected String queryModuleSessionName = null;
     23  protected String queryModuleSessionName = "XML";
    2424  protected QueryModuleXMLToQueryDefinitionXML queryModuleXMLToQueryDefinitionXMLService;
    2525
    26   protected String modelMapKey = "XML";
    2726
    2827  /**
  • trunk/ibisph/src/main/java/org/ibisph/querymodule/modelmap/QueryModuleFromQueryDefinition.java

    r9122 r21203  
    9090   */
    9191  protected Node getQueryModule(Node queryDefinition, HttpServletRequest request) throws Exception {
    92     String configurationPath = XMLLib.getText(queryDefinition, "CONFIGURATION_PATH");
     92    String configurationPath = XMLLib.getText(queryDefinition, "REQUEST/CONFIGURATION_PATH");
    9393    Node queryModule = this.queryModuleService.getQueryModule(configurationPath);
    9494    if(null == queryModule) throw new FileNotFoundException("Invalid Query Module within Query Defintion.  Configuration Path: " + configurationPath);
  • trunk/ibisph/src/main/java/org/ibisph/user/springsecurity/NoPAuthenticationHandler.java

    r21201 r21203  
    22
    33import java.io.IOException;
     4import java.io.PrintWriter;
    45
    56import org.springframework.security.core.Authentication;
     
    2324  } //----------------------- End of Constructor --------------------------
    2425
     26// https://medium.com/eastros/springsecurity-authenticating-authorizing-ajax-requests-server-side-implementation-28d7da9ef457
     27   
    2528  public void onAuthenticationSuccess(
    2629    javax.servlet.http.HttpServletRequest request,
     
    2932  ) throws IOException, javax.servlet.ServletException {
    3033    logger.warn("Ajax Login Success for " + authentication.getName());
     34    String jsonObject = "{\"message\":\"Please login first.\","+
     35      "\"access-denied\":true,\"cause\":\"AUTHENTICATION_FAILURE\"}";
     36      String contentType = "application/json";
     37      response.setContentType(contentType);
     38      PrintWriter out = response.getWriter();
     39      out.print(jsonObject);
     40      out.flush();
     41      out.close();
     42      return;
    3143  } //-------------------------- End of Method ------------------------------
    3244
Note: See TracChangeset for help on using the changeset viewer.