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 | -----------------------------------------------------------------------
-- asf_volume_server -- The volume_server application with Ada Server Faces
-- Copyright (C) 2010, 2011, 2012, 2015 Stephane Carrez
-- Written by Stephane Carrez (Stephane.Carrez@gmail.com)
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
-----------------------------------------------------------------------
with Ada.IO_Exceptions;
with ASF.Server.Web;
with ASF.Servlets;
with ASF.Servlets.Faces;
with Servlet.Core.Files;
with Servlet.Core.Measures;
with ASF.Filters.Dump;
with ASF.Beans;
with ASF.Applications;
with ASF.Applications.Main;
with ASF.Applications.Main.Configs;
with Util.Beans.Objects;
with Util.Log.Loggers;
with Countries;
with Volume;
with Messages;
procedure Asf_Volume_Server is
CONTEXT_PATH : constant String := "/volume";
CONFIG_PATH : constant String := "samples.properties";
Log : constant Util.Log.Loggers.Logger := Util.Log.Loggers.Create ("Openid");
Factory : ASF.Applications.Main.Application_Factory;
App : aliased ASF.Applications.Main.Application;
Faces : aliased ASF.Servlets.Faces.Faces_Servlet;
Files : aliased Servlet.Core.Files.File_Servlet;
Perf : aliased Servlet.Core.Measures.Measure_Servlet;
Dump : aliased ASF.Filters.Dump.Dump_Filter;
Bean : aliased Volume.Compute_Bean;
Conv : aliased Volume.Float_Converter;
WS : ASF.Server.Web.AWS_Container;
C : ASF.Applications.Config;
None : ASF.Beans.Parameter_Bean_Ref.Ref;
begin
C.Set (ASF.Applications.VIEW_EXT, ".html");
C.Set (ASF.Applications.VIEW_DIR, "samples/web");
C.Set ("web.dir", "samples/web");
begin
C.Load_Properties (CONFIG_PATH);
Util.Log.Loggers.Initialize (CONFIG_PATH);
exception
when Ada.IO_Exceptions.Name_Error =>
Log.Error ("Cannot read application configuration file {0}", CONFIG_PATH);
end;
App.Initialize (C, Factory);
App.Set_Global ("contextPath", CONTEXT_PATH);
App.Set_Global ("compute",
Util.Beans.Objects.To_Object (Bean'Unchecked_Access,
Util.Beans.Objects.STATIC));
App.Set_Global ("countries", Util.Beans.Objects.To_Object (Countries.Create_Country_List));
-- Declare a global bean to identify this sample from within the XHTML files.
App.Set_Global ("sampleName", "volume");
-- Register the servlets and filters
App.Add_Servlet (Name => "faces", Server => Faces'Unchecked_Access);
App.Add_Servlet (Name => "files", Server => Files'Unchecked_Access);
App.Add_Filter (Name => "dump", Filter => Dump'Unchecked_Access);
App.Add_Servlet (Name => "perf", Server => Perf'Unchecked_Access);
App.Add_Filter (Name => "perf", Filter => Perf'Unchecked_Access);
-- Define servlet mappings
App.Add_Mapping (Name => "faces", Pattern => "*.html");
App.Add_Mapping (Name => "files", Pattern => "*.css");
App.Add_Mapping (Name => "files", Pattern => "*.js");
App.Add_Mapping (Name => "files", Pattern => "*.png");
App.Add_Filter_Mapping (Name => "dump", Pattern => "*.html");
App.Add_Filter_Mapping (Name => "dump", Pattern => "*.js");
App.Add_Converter (Name => "float", Converter => Conv'Unchecked_Access);
App.Register_Class (Name => "Message_Bean", Handler => Messages.Create_Message_Bean'Access);
App.Register_Class (Name => "Message_List", Handler => Messages.Create_Message_List'Access);
App.Register (Name => "message", Class => "Message_Bean", Params => None);
App.Register (Name => "messages", Class => "Message_List", Params => None);
ASF.Applications.Main.Configs.Read_Configuration (App, "samples/web/WEB-INF/web.xml");
WS.Register_Application (CONTEXT_PATH, App'Unchecked_Access);
Log.Info ("Connect you browser to: http://localhost:8080/volume/compute.html");
WS.Start;
delay 6000.0;
end Asf_Volume_Server;
|