We have almost upgraded to GWT-2.12.1, but we have few queries:-

1. We have to write *@RemoteServiceRelativePath("/abc")*  in our *XYZ_Srv* 
class. 
     Is there any way we can do it without writing 
*@RemoteServiceRelativePath("/abc").*  otherwise How can we make it not to 
be hardcoded but get the Class Name in it.

2. We have to put the Servlet in web.xml file like 







*<servlet>    <servlet-name>loginServlet</servlet-name>    
<servlet-class>com.demo.login.Login_SrvImpl</servlet-class>  </servlet>  
<servlet-mapping>    <servlet-name>loginServlet</servlet-name>    
<url-pattern>/login</url-pattern>  </servlet-mapping>*
     How we can generate it dynamically as we have a large number of 
servlets to map so we want it to add in multiple file such that maintaining 
it will be easy. I mean Dynamic     ServletRegistration here. 

3. also currently we are having all the projects to be served under* 
com.demo.packageName*. Here we get duplicity as we have few packages with 
same name under different project or Custom libs.
    is it possible to have it like *com.demo.project1.packageName*, 
*com.demo.project2.packageName*
On Wednesday, February 12, 2025 at 1:27:55 AM UTC+5:30 Leon wrote:

> Oh, but I agree, the nature of the GWT Canvas implementation is no driver 
> at all in which methodology to use to implement your application. 
> Which design approach should be used depends on what the development team 
> masters best.
>
> The advantage of an OO approach - which I was trying to make clear but 
> obviously failed - is that you can have the model work out the required 
> functionality before you need to draw it out on the canvas. It has many 
> advantages, one of which - in this case - is that you need a lot less 
> complex actions from the canvas itself. The reason is not for performance, 
> but it's a complexity reduction basically. 
> For that reason OO is very practical on the backend, but given the unique 
> nature of GWT it makes it very practical on the frontend too. 
> To me, that is one of it's USP's.
>
> And we can agree to disagree on the FP. 
> Whilst I can imagine that for script languages FP seems like a more 
> natural fit, but for information systems where java shines, OO is the best 
> fit. 
> The FP adoption in java is not late to the party, but is more like Oracle 
> following the trend trying to make java hip and luring the script 
> developers to jump ship.
> So yeah, for FP in Java I would say it is definitely following a trend.
> But like I said, we can agree to disagree.
>
> The funny thing about software development is that it is a field in which 
> mastery of the tools is often seen as mastery of the craft.
> Now try to explain that to a carpenter or a potter.
>
>
>
> On Tue, Feb 11, 2025 at 6:38 PM Colin Alworth <[email protected]> 
> wrote:
>
>> Sorry if I was unclear - FP vs OO vs whatever really shouldn't matter. I 
>> only brought it up because you mentioned "OO style" driving some choices. 
>> The nature of the Canvas APIs shouldn't need to drive how you use them, 
>> until you are so starved for performance that you can't afford any 
>> indirection at all.
>>
>> I don't think it is fair to call it the current trend - to anyone. Java 
>> upped its FP game in Java 8, 10 years ago - and I don't think anyone will 
>> argue that Java ever gets to the party early, without years of 
>> deliberation. JavaScript is perfectly usable as a functional language 
>> (debatably more so than than Java even today, since we still need SAM 
>> interfaces and can't just pass functions directly) and has been for 30 
>> years since it was first released.
>>
>> React's strategy effectively required that they adopt a "stateless" 
>> paradigm, which lends itself very well to encouraging (ostensibly) pure 
>> functions for rendering, that accept the state/props as an argument.
>>
>> On Sunday, February 9, 2025 at 2:39:00 AM UTC-6 [email protected] 
>> wrote:
>>
>>> Switching to functional is the current trend I guess. Now you can argue 
>>> whether or not it's smart to change design approach because it's a trend. 
>>> As a framework - probably yes as you get higher adoption rates. 
>>> As an application developer probably not - as it just creates extra 
>>> maintenance for when the next trend comes around.
>>>
>>> On Sun, Feb 9, 2025 at 12:30 AM Craig Mitchell <[email protected]> 
>>> wrote:
>>>
>>>> > *OO vs procedural/functional is quite the different design approach. 
>>>> I would even say that those are worlds apart.*
>>>>
>>>> Tell that to the React creators, that switched the framework from OO to 
>>>> functional.  😝
>>>>
>>>> On Sunday, 9 February 2025 at 8:49:40 am UTC+11 Leon wrote:
>>>>
>>>>> I can see where you say a developer familiar with the DOM is more 
>>>>> likely to work with on the canvas api directly.
>>>>> And yes, the more technical options the better. Sure. 
>>>>> But I do not see how you can say that an OO vs procedural or 
>>>>> functional approach is not that relevant? OO vs procedural/functional is 
>>>>> quite the different design approach. I would even say that those are 
>>>>> worlds 
>>>>> apart. In what way do you think that this difference not relevant?
>>>>>
>>>>>
>>>>> On Sat, Feb 8, 2025 at 8:53 PM Colin Alworth <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> @Craig - If you draw everything on the same canvas, the zoom/scale 
>>>>>> works on everything on that canvas. it limits what you can do with that 
>>>>>> canvas. If you want to scale or zoom everything, yes then it doesn't 
>>>>>> matter. So yes you are right, it depends on the project.
>>>>>>
>>>>>> This isn't true, it only applied on the operations that take place 
>>>>>> while it is set. You can call scale(1, 1) to go back to 1:1, or you can 
>>>>>> use 
>>>>>> the save()/restore() that Craig mentioned. You can also clip to keep the 
>>>>>> zoomed content within certain bounds.
>>>>>>
>>>>>> @Colin - With multiple layers I would also need multiple canvas's and 
>>>>>> overlay them right? 
>>>>>>
>>>>>> Correct - each would have its own frame buffer, and could be 
>>>>>> cleared/drawn independently.
>>>>>>  
>>>>>>
>>>>>> We wrote a single adapter widget that uses a single canvas. This 
>>>>>> adapter widget knows what the zoom level is. Objects that are drawn on 
>>>>>> that 
>>>>>> widget of a certain type get zoomed, whilst others of a different type 
>>>>>> do 
>>>>>> not. It is super simple and easily explained to new devs. Everyone on 
>>>>>> the 
>>>>>> team can add views or objects and the type determines how these are 
>>>>>> displayed. Even devs without exact knowledge of how the canvas works can 
>>>>>> develop and maintain objects to be displayed.
>>>>>>
>>>>>> I guess it's also a development style/preference thing. If you code 
>>>>>> the view of the canvas in a single class or single method, the solution 
>>>>>> is 
>>>>>> likely to have to rely more on the technological capabilities of the 
>>>>>> canvas. Working with an adapter then does not really make a lot of 
>>>>>> sense. 
>>>>>> If you have more of an OO style of development, you express more in 
>>>>>> functional blocks. Then you have to rely less on the technical 
>>>>>> capabilities 
>>>>>> as you can translate what needs to be done on the basis of what your 
>>>>>> objects are before you hit the canvas. Then the zooming/scaling happens 
>>>>>> in the object, not on the canvas so to speak.
>>>>>> So the required functionality of the canvas remains fairly basic.
>>>>>>
>>>>>> I don't make these suggestions lightly - if you are happy with how 
>>>>>> canvas performs and the quality of the output, then you may well never 
>>>>>> need 
>>>>>> them, but it can be fun to know they exist.
>>>>>>
>>>>>> I don't much care about OO vs FP styles for this - building an API 
>>>>>> around these features should be straightforward within whatever paradigm 
>>>>>> you prefer. For most projects we ended up with roughly two layers of 
>>>>>> abstractions - the "shapes that get drawn on the screen via canvas 
>>>>>> commands" abstraction (iterate through "shapes", respect their "z-index" 
>>>>>> or 
>>>>>> other relative positioning, capture clicks and figure out which "shape" 
>>>>>> was 
>>>>>> clicked on, redraw only changed "shapes" and those that intersect them, 
>>>>>> etc), and the "business logic drives what shapes to draw" abstraction 
>>>>>> ("I 
>>>>>> want a pie chart in the corner, compute slices based on data", "these 
>>>>>> buttons over here control those axes", "Labeled items in the legend will 
>>>>>> drive which stars/circles in the chart are highlighted when hovered"). 
>>>>>> It 
>>>>>> feels natural to someone who is used to working with a DOM (esp SVG), 
>>>>>> and 
>>>>>> can handle thousands of items without much trouble. 
>>>>>>
>>>>>> Zoom can appear at either level here - multiple coord systems, or 
>>>>>> make the "zoom" part of the "shape" API. You're totally correct that 
>>>>>> scaling need not happen at the "canvas level" - while the MDN link I 
>>>>>> gave 
>>>>>> seems to imply that, it really is just trying to make it easier for the 
>>>>>> developer to not need to think about one more "layer" of ways that their 
>>>>>> data needs to be transformed. From a certain perspective, you might want 
>>>>>> to 
>>>>>> just have a transform matrix that you apply to each shape, and compose 
>>>>>> your 
>>>>>> zoom-because-zoom-widget, translate-because-panning, rotate, etc 
>>>>>> operations 
>>>>>> all at that level, and just apply the transform once when drawing (or 
>>>>>> even 
>>>>>> apply to the coords before you call in to canvas). None of it matters as 
>>>>>> long as the math is correct.
>>>>>>
>>>>>> If you need more power, odds are you can find pretty quickly where 
>>>>>> the "unnecessary" O(n^2) or O(n lg n) operations are taking place 
>>>>>> (sorted 
>>>>>> insertion by z-index, solving for intersections, etc), and can do a 
>>>>>> better 
>>>>>> job partitioning "shapes" or go all out and drop down to just "business 
>>>>>> logic drives canvas commands" where it is required.
>>>>>>
>>>>>>  
>>>>>>
>>>>>> performance wise, I've done fully animated person relation networks 
>>>>>> and animated dashboards in large canvases for nearly a decade now. 
>>>>>> We've never ran into any performance issues. 
>>>>>> That being said, I think the views and on-screen actions we used were 
>>>>>> somewhat limited when compared to developing a game with full world 
>>>>>> rendering or something similar. 
>>>>>>  
>>>>>> Did I already say I love this gwt group? It makes me think a lot more 
>>>>>> about what I am doing and why I am doing it. 
>>>>>> Plus the input from the GWT devs usually give me insights I haven't 
>>>>>> thought about before or didn't know existed.
>>>>>>
>>>>>> If you can stand the stream of discussion, you may also enjoy 
>>>>>> https://matrix.to/#/#gwtproject_gwt:gitter.im. It tends to be more 
>>>>>> conversational, and can get into the weeds in unrelated topics like this.
>>>>>>  
>>>>>>
>>>>>> On Sat, Feb 8, 2025 at 2:56 AM Colin Alworth <[email protected]> 
>>>>>> wrote:
>>>>>>
>>>>>> I'm sorry if my message confused the two kinds of 'zoom' being 
>>>>>> discussed here - there's the one where the pixels on the physical 
>>>>>> monitor 
>>>>>> don't match the pixels of your display (this covers both HDPI and ctrl 
>>>>>> +/-), and there's the one where the user clicks the + icon (drawn on the 
>>>>>> canvas) to make everything inside a specific rectangle bigger.
>>>>>>
>>>>>> The context2d.scale() method can do both, but I was mostly referring 
>>>>>> to the first, adapting to the user's current monitor+settings at any 
>>>>>> given 
>>>>>> time. Note that in this context, scale() does _not_ make things blurry 
>>>>>> when 
>>>>>> you zoom, but effectively multiplies all your coordinates by the scale. 
>>>>>> The 
>>>>>> canvas "height" and "width" (the "actual size" in the link's code 
>>>>>> sample) 
>>>>>> are what makes things blurry or super precise.
>>>>>>
>>>>>> In the second case, scale() can still be totally appropriate, 
>>>>>> especially if coupled with a "panning" feature, or if data is updating. 
>>>>>> Odds are very high that in those cases, the parts of the canvas outside 
>>>>>> the 
>>>>>> "rectangle" aren't moving - all the various controls, the rectangle 
>>>>>> itself. 
>>>>>> Avoiding redrawing whatever you can each frame is important for 
>>>>>> performance. Or, you can just adjust your coordinate system when 
>>>>>> projecting 
>>>>>> on to the canvas, multiplying by your current zoom factor for each 
>>>>>> position 
>>>>>> - as above, it is doing the same thing.
>>>>>>
>>>>>> While we're discussing it, clipping (with save/restore or without) 
>>>>>> still also be helpful to conserve rewrites too - if you had a single 
>>>>>> canvas 
>>>>>> element, you would clip to inside the rectangle, clear, and redraw only 
>>>>>> what is in there - save() and restore() are a valid way of handling 
>>>>>> that, 
>>>>>> or just reapply state at each pass. If you're careful, you could even 
>>>>>> just 
>>>>>> redraw a subset of the rectangle's contents - solve for which items 
>>>>>> actually changed (doing some intersection math), and clip+clearRect just 
>>>>>> that section, then redraw just what is in there. If you "draw" a little 
>>>>>> outside the clip in any of these cases, no big deal - it will get 
>>>>>> clipped 
>>>>>> out (but you'll still pay for the code to run, it just won't have any 
>>>>>> overdraw).
>>>>>>
>>>>>> If you think about this like "partitioning" the drawing area with 
>>>>>> clip, there are two other ways to partition too - you can "tile" 
>>>>>> canvases, 
>>>>>> selectively redrawing their entire contents if they are affected, and 
>>>>>> you 
>>>>>> can "layer" them, using transparency to enable lower layers or higher 
>>>>>> layers to remain intact when other layers need to be cleared and 
>>>>>> repainted. 
>>>>>> Tiling can also work with non-homogenous blocks - the "rectangle" above 
>>>>>> could be one canvas, and the "controls" could be in their own.
>>>>>>
>>>>>> On Friday, February 7, 2025 at 5:11:41 PM UTC-6 
>>>>>> [email protected] wrote:
>>>>>>
>>>>>> > *I would not use the scale functionality as it applies to the 
>>>>>> whole canvas. *
>>>>>>
>>>>>> Whatever works for your project is best, however, the scale only 
>>>>>> applies when you set it.  And you can always reset it.  Eg:
>>>>>>
>>>>>> // Save the current state
>>>>>> context2d.save();
>>>>>>
>>>>>> // Apply zoom
>>>>>> context2d.scale(xxx, xxx);
>>>>>>
>>>>>> // Draw zoomed stuff
>>>>>> ...
>>>>>>
>>>>>> // Reset the zoom
>>>>>> context2d.restore();
>>>>>>
>>>>>> This also lets browsers use the GPU to render (although, I'm not 
>>>>>> actually sure if the scaling is done on the CPU or the GPU).
>>>>>>
>>>>>> On Friday, 7 February 2025 at 5:02:17 pm UTC+11 Leon Pennings wrote:
>>>>>>
>>>>>> I would not use the scale functionality as it applies to the whole 
>>>>>> canvas. 
>>>>>> I'd prefer to apply an adapter pattern for determining actual 
>>>>>> coordinates on the canvas. 
>>>>>> Then you can still have a toolbar, location display or slider for the 
>>>>>> zoom factor in it's normal proportions and just have the actual content 
>>>>>> you 
>>>>>> want to show in a different scale. 
>>>>>>
>>>>>> Op donderdag 6 februari 2025 om 13:33:12 UTC+1 schreef Colin Alworth:
>>>>>>
>>>>>> No problem - I wanted to be sure I didn't make a mistake, since I 
>>>>>> haven't myself used canvas "in anger" in many years, and only loosely 
>>>>>> keep 
>>>>>> track of resources and advice on it.
>>>>>>
>>>>>> SmartGWT's "Draw" examples make the API look very similar to the GXT 
>>>>>> "draw" packages - it isn't really a raster API at all, but a vector API 
>>>>>> that just happens to be built on top of a canvas implementation. 
>>>>>>
>>>>>> My recollection is that for fewer than around 1k-10k drawn items, SVG 
>>>>>> is faster and simpler to understand than canvas, and canvas's benefits 
>>>>>> only 
>>>>>> start kicking in when the DOM gets too heavy to manipulate quickly each 
>>>>>> frame. Looking briefly at the example page you shared a few weeks ago, 
>>>>>> if 
>>>>>> you were interested in getting into the low level details of how to do 
>>>>>> the 
>>>>>> drawing, your case perhaps could stand being remade in plain SVG - 
>>>>>> always 
>>>>>> high resolution. The benefits may be mostly for your own understanding 
>>>>>> rather than any real observed performance improvements from running the 
>>>>>> page (that said: dropping SmartGWT would appear to drop almost 8mb of JS 
>>>>>> out of your 9+mb page).
>>>>>>
>>>>>> On Wednesday, February 5, 2025 at 9:46:51 PM UTC-6 
>>>>>> [email protected] wrote:
>>>>>>
>>>>>> > Neil, I'm not sure where I appeared to have said that.
>>>>>>
>>>>>>  
>>>>>>
>>>>>> I am sorry, I did not intend to put words in your mouth.
>>>>>>
>>>>>> That was my understanding from your previous email stating
>>>>>> that  canvas is a raster format.  I misinterpreted your statements.
>>>>>>
>>>>>>  
>>>>>>
>>>>>> I apologize for that.
>>>>>>
>>>>>>  
>>>>>>
>>>>>> Thank you,
>>>>>>
>>>>>>  Neil 
>>>>>>
>>>>>>  
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Neil Aggarwal, (972) 834-1565, http://www.propfinancing.com
>>>>>>
>>>>>> We offer 30 year loans on single family houses!
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to a topic in 
>>>>>> the Google Groups "GWT Users" group.
>>>>>> To unsubscribe from this topic, visit 
>>>>>> https://groups.google.com/d/topic/google-web-toolkit/E3P4xZ8SFCg/unsubscribe
>>>>>> .
>>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>>> [email protected].
>>>>>> To view this discussion visit 
>>>>>> https://groups.google.com/d/msgid/google-web-toolkit/0e1b79f7-fa2e-482f-899b-65c5e9ca3e72n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/google-web-toolkit/0e1b79f7-fa2e-482f-899b-65c5e9ca3e72n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to a topic in 
>>>>>> the Google Groups "GWT Users" group.
>>>>>> To unsubscribe from this topic, visit 
>>>>>> https://groups.google.com/d/topic/google-web-toolkit/E3P4xZ8SFCg/unsubscribe
>>>>>> .
>>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>>> [email protected].
>>>>>>
>>>>> To view this discussion visit 
>>>>>> https://groups.google.com/d/msgid/google-web-toolkit/c66862dd-bcfc-4516-b2bf-c5dc17a73deen%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/google-web-toolkit/c66862dd-bcfc-4516-b2bf-c5dc17a73deen%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> -- 
>>>> You received this message because you are subscribed to a topic in the 
>>>> Google Groups "GWT Users" group.
>>>> To unsubscribe from this topic, visit 
>>>> https://groups.google.com/d/topic/google-web-toolkit/E3P4xZ8SFCg/unsubscribe
>>>> .
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> [email protected].
>>>>
>>> To view this discussion visit 
>>>> https://groups.google.com/d/msgid/google-web-toolkit/7299cb42-a00a-415a-b6a6-c8718ce1f9ddn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/google-web-toolkit/7299cb42-a00a-415a-b6a6-c8718ce1f9ddn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "GWT Users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/google-web-toolkit/E3P4xZ8SFCg/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>>
> To view this discussion visit 
>> https://groups.google.com/d/msgid/google-web-toolkit/778e24ce-c26e-4170-a346-755129440140n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/google-web-toolkit/778e24ce-c26e-4170-a346-755129440140n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/google-web-toolkit/ddde2908-e28a-4768-8f6e-31e9d61a939dn%40googlegroups.com.

Reply via email to