This makes sense to me, I would assume this would run after the standard 
adaption process if no adapter is found?  Could multiple of these be specified? 
 

Thanks,
Dan

-----Original Message-----
From: Felix Meschberger [mailto:fmesc...@adobe.com] 
Sent: Tuesday, April 02, 2013 8:19 AM
To: dev@sling.apache.org
Subject: Re: Sling Dynamic Proxy

Hi

Am 29.03.2013 um 21:18 schrieb Justin Edelson:

> Fixing/changing AdapterManager shouldn't be out of the question :)

Absolutely: How about a special adaptable and adapter class name of "*" which 
just means "any" ?

Regards
Felix

> 
> 
> 
> 
> On Fri, Mar 29, 2013 at 4:04 PM, Dan Klco <dan.k...@sixdimensions.com>wrote:
> 
>> Justin,
>> 
>> I total agree, however I didn't see a way to inject adaptables into 
>> the Sling Adapter Manager without knowing the exact class to be 
>> adapted ahead of time.  I would imagine there would be a way to 
>> change this, but I can't see one which would not require changing the Sling 
>> Adapter Manager.
>> 
>> If we could add a hook where you could specify an AdapterFactory to 
>> handle requests for a subclass of a particular class, assuming the 
>> exact class is not matched then we should be able to support adapting 
>> to proxy instances without further code for implementers.
>> 
>> At the moment, there is an abstract class included in the Sling Proxy 
>> project which will make it easier for implementers to implement an 
>> AdapterFactory for their interfaces.
>> 
>> Thanks for the feedback and please let me know if I missed something,
>> 
>> -Dan
>> 
>> -----Original Message-----
>> From: justinedel...@gmail.com [mailto:justinedel...@gmail.com] On 
>> Behalf Of Justin Edelson
>> Sent: Friday, March 29, 2013 3:36 PM
>> To: dev@sling.apache.org
>> Subject: Re: Sling Dynamic Proxy
>> 
>> Hi Dan,
>> This looks very interesting, but I'm curious why this code:
>> 
>> ISlingProxyService slingProxyService;****
>> 
>> {...}****
>> 
>> Page page = slingProxyService.getProxy(resource, Page.class);
>> 
>> Is not just
>> 
>> Page page = resource.adaptTo(Page.class);
>> 
>> 
>> Regards,
>> 
>> Justin
>> 
>> 
>> On Fri, Mar 29, 2013 at 3:14 PM, Dan Klco <dan.k...@sixdimensions.com
>>> wrote:
>> 
>>> Hello Everyone,****
>>> 
>>> ****
>>> 
>>> A colleague (Michael Kelleher) and I have built an extension we 
>>> would be interested in incorporating into Sling, as a contributed module.
>>> ****
>>> 
>>> ****
>>> 
>>> A short synopsis of this is, it functions as a far simpler, 
>>> read-only ORM for Sling.  It allows a developer to define an 
>>> Interface, and with the use of Annotations, and a Service, create an 
>>> instance backed by
>>> resource(s) within JCR.  The mapping of method names to JCR 
>>> properties is configured with annotations and interpreted by the 
>>> Java Proxy InvocationHandler to map back to Sling Resources and 
>>> properties.****
>>> 
>>> ****
>>> 
>>> Here's an example usage of the Sling Dynamic Proxy:****
>>> 
>>> ****
>>> 
>>> public interface Page extends ISlingProxy {****
>>> 
>>> ****
>>> 
>>>                /******
>>> 
>>>                * Gets the property jcr:created****
>>> 
>>>                */****
>>> 
>>>                @SlingProperty(name="jcr:created")****
>>> 
>>>                public Date getCreationDate();****
>>> 
>>> ****
>>> 
>>>                /******
>>> 
>>>                * Gets the property jcr:description at the sub path 
>>> jcr:content, the path is not required and can be absolute****
>>> 
>>>                */****
>>> 
>>>                @SlingProperty(name="jcr:description",
>>> path="jcr:content")
>>> ****
>>> 
>>>                public String getDescription();****
>>> 
>>> ****
>>> 
>>>                /******
>>> 
>>>                * Gets the property jcr:title at the sub path 
>>> jcr:content, the path is not required and can be absolute****
>>> 
>>>                */****
>>> 
>>>                @SlingProperty(name="jcr:title",
>>> path="jcr:content")****
>>> 
>>>                public String getTitle();****
>>> 
>>> ****
>>> 
>>>                /******
>>> 
>>>                * Gets the content resource, this could also return a 
>>> class which can be adapted from a resource or another proxy
>>> instance.****
>>> 
>>>                */****
>>> 
>>>                @SlingReference(path="jcr:content")****
>>> 
>>>                public Resource getContentResource();****
>>> 
>>> ****
>>> 
>>>                /******
>>> 
>>>                * Gets the children of the current resource, the 
>>> return type should match the return type in the generic of the 
>>> return
>>> Iterator.**
>>> **
>>> 
>>>                */****
>>> 
>>>                @SlingChildren(returnType=Resource.class, 
>>> path="")****
>>> 
>>>                public Iterator<Resource> getChildren();****
>>> 
>>> }****
>>> 
>>> ****
>>> 
>>> You could then retrieve an instance of the proxy as such:****
>>> 
>>> ****
>>> 
>>> Resource resource;****
>>> 
>>> ISlingProxyService slingProxyService;****
>>> 
>>> {...}****
>>> 
>>> Page page = slingProxyService.getProxy(resource, Page.class);****
>>> 
>>> ****
>>> 
>>> You can check out the code, including some basic tests on 
>>> GitHub:****
>>> 
>>> https://github.com/sixdimensions/sling-proxy****
>>> 
>>> ****
>>> 
>>> We both hope this project will be of interest to the Sling 
>>> developers and the Sling community.****
>>> 
>>> ****
>>> 
>>> Thanks,****
>>> 
>>> ** **
>>> 
>>> Dan Klco****
>>> 
>>> Senior Staff Engineer, Adobe WEM / Day CQ5****
>>> 
>>> San Ramon, CA / Dayton, OH****
>>> 
>>> ** **
>>> 
>>> [image: Description: Description: Description:
>>> cid:image003.gif@01CCF856.90108760]
>>> <http://www.sixdimensions.com/>****
>>> 
>>> Cell (937) 231-3050****
>>> 
>>> Office (937) 343-1326****
>>> 
>>> Fax (877) 510-5082****
>>> 
>>> LinkedIn <http://www.linkedin.com/in/klcodanr> | 
>>> @KlcoDanR<https://twitter.com/klcodanr>
>>> ****
>>> 
>>> ** **
>>> 
>>> *People. Deliver. Progress.*
>>> 
>>> ** **
>>> 
>> 
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2013.0.2904 / Virus Database: 2641/6211 - Release Date: 
>> 03/28/13
>> 
>> 


--
Felix Meschberger | Principal Scientist | Adobe









-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2013.0.3267 / Virus Database: 3161/6217 - Release Date: 03/31/13

Reply via email to