Thank you Guys. After isolating into test-case i  came to know that factory 
is already built with different implementation. It's always good to learn 
more. Thanks.

On Wednesday, 5 February 2014 15:02:42 UTC-6, Sam Berlin wrote:
>
> Yes, this is one of the use-cases that assistedinject supports, and 
> there's a lot of tests to make sure it's working as expected.  Since you're 
> experiencing a problem with it, the best way to find out what's causing 
> that problem is to isolate it into a reproducible test-case.
>
>  sam
>
>
> On Wed, Feb 5, 2014 at 3:53 PM, Rama Krishna Gollapudi 
> <[email protected]<javascript:>
> > wrote:
>
>> I'm not sure. But here is my problem precisely. I'm using an abstract 
>> class inside the factory and bindind that implementation. 
>> Example:
>>
>> public interface ResourceFactory {
>>
>>     Resource domainResource(Domain target);
>> }
>>
>> public abstract class Resource{}
>>
>> public MyResource extends Resource{}.
>>
>> Where Resource is an abstract. 
>>
>> and  bind them with 
>> install(new FactoryModuleBuilder().implement(Resource.class, 
>> MyResource.class).build(
>>                    ResourceFactory.class));
>>
>> Is it possible to bind like this?.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Wednesday, 5 February 2014 14:44:05 UTC-6, Sam Berlin wrote:
>>
>>> Can you isolate the problem into a repeatable self-contained test-case?
>>>
>>>  sam
>>>
>>>
>>> On Tue, Feb 4, 2014 at 1:39 PM, Rama Krishna Gollapudi <
>>> [email protected]> wrote:
>>>
>>>> Here is my abstract class
>>>>
>>>> public abstract class DomainResource {
>>>>
>>>>     @Inject
>>>>     @Assisted
>>>>     private Domain target;
>>>>
>>>>     @Inject
>>>>     private LinkHelper helper;
>>>>
>>>>     /**
>>>>      * Accessor for the domain resource, will return domain information 
>>>> and links to domain scoped resources
>>>>      * @param info the uri information
>>>>      * @return a Map representing the returned json
>>>>      */
>>>>     @GET
>>>>     @Produces(APPLICATION_JSON)
>>>>     @SuppressWarnings("nls")
>>>>     public Map<String, Object> get(@Context final UriInfo info) {
>>>>         
>>>>         return "Implement your stuff";
>>>>     }
>>>> }
>>>>
>>>>
>>>> *Implementaion*
>>>>
>>>> public class TodoResource extends DomainResource {
>>>>     @Inject
>>>>     private Domain domain;
>>>>     @Inject
>>>>     private ScopedResourceFactory factory;
>>>>     @Inject
>>>>     private LinkHelper helper;
>>>>
>>>>     @GET
>>>>     @Produces(APPLICATION_JSON)
>>>>     public Map<String, Object> getTypes(@Context final UriInfo uriInfo) 
>>>> {
>>>>         return helper.indexMapResponse();
>>>>     }
>>>>
>>>>     /**
>>>>      * @param info uriInfo object used to extract matrix params
>>>>      * @return the encounters resource
>>>>      */
>>>>     @Path("todos")
>>>>     public Object getEncounters(@Context final UriInfo info) {
>>>>         return " implement Your Stuff.";
>>>>     }
>>>> }
>>>>
>>>>
>>>> *Factory :*
>>>> public interface ScopedResourceFactory {
>>>>
>>>>     DomainResource domainResource(Domain target);
>>>> }
>>>>
>>>>
>>>>
>>>> And as per your suggestion i'm binding like this.  
>>>> install(new FactoryModuleBuilder().implement(DomainResource.class, 
>>>> TodoResource.class).build(
>>>>                     ScopedResourceFactory.class));
>>>>
>>>> But still i'm getting exception. Please find below. 
>>>>
>>>>
>>>>
>>>> com.rama.util.jaxrs.DomainResource is abstract, not a concrete class. 
>>>>  Unable to create AssistedInject factory.
>>>>   while locating com.cerner.iaware.util.jaxrs.DomainResource
>>>>   at com.rama.util.guice.ScopedResourceFactory.domainResource(
>>>> ScopedResourceFactory.java:1)
>>>>
>>>> 1 error
>>>> at com.google.inject.internal.Errors.throwCreationExceptionIfErrors
>>>> Exist(Errors.java:448)
>>>>  at com.google.inject.internal.InternalInjectorCreator.
>>>> initializeStatically(InternalInjectorCreator.java:155)
>>>> at com.google.inject.internal.InternalInjectorCreator.build(
>>>> InternalInjectorCreator.java:107)
>>>>  at com.google.inject.Guice.createInjector(Guice.java:96)
>>>> at com.google.inject.Guice.createInjector(Guice.java:73)
>>>>  at com.google.inject.Guice.createInjector(Guice.java:62)
>>>> at com.rama.todo.guice.GuiceConfigurationInitializer.getInjector(
>>>> GuiceConfigurationInitializer.java:49)
>>>>  at com.google.inject.servlet.GuiceServletContextListener.
>>>> contextInitialized(GuiceServletContextListener.java:47)
>>>> at org.apache.catalina.core.StandardContext.listenerStart(
>>>> StandardContext.java:4939)
>>>>  at org.apache.catalina.core.StandardContext.startInternal(
>>>> StandardContext.java:5434)
>>>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>>>>  at org.apache.catalina.core.ContainerBase$StartChild.call(
>>>> ContainerBase.java:1559)
>>>> at org.apache.catalina.core.ContainerBase$StartChild.call(
>>>> ContainerBase.java:1549)
>>>>  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>>>  at java.util.concurrent.ThreadPoolExecutor$Worker.
>>>> runTask(ThreadPoolExecutor.java:886)
>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(
>>>> ThreadPoolExecutor.java:908)
>>>>  at java.lang.Thread.run(Thread.java:662)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Tuesday, 4 February 2014 12:09:47 UTC-6, Sam Berlin wrote:
>>>>
>>>>> The assisted inject 
>>>>> docs<http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/assistedinject/FactoryModuleBuilder.html>describe
>>>>>  how to do this.  The example in the doc reads:
>>>>>
>>>>>  install(new FactoryModuleBuilder()
>>>>>      .implement(Payment.class, RealPayment.class)
>>>>>      .build(PaymentFactory.class));
>>>>>
>>>>> You'd just substitute Payment for DomainResource, RealPayment for 
>>>>> TodoResource, and PaymentFactory for your assistedinject factory.
>>>>>
>>>>>  sam
>>>>>
>>>>>
>>>>> On Tue, Feb 4, 2014 at 12:38 PM, Rama Krishna Gollapudi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hello,
>>>>>>           I'm having  a problem of binding an abstract class with 
>>>>>> it's implementation using Guice . I'm getting the following exception.
>>>>>>
>>>>>> com.rama.util.jaxrs.DomainResource is abstract, not a concrete 
>>>>>> class.  Unable to create AssistedInject factory.
>>>>>>
>>>>>> And  i did binding like this.  bind(DomainResource.class).to
>>>>>> (TodoResource.class);
>>>>>>
>>>>>> DomainResoruce is an abstract class and TodoResource is an 
>>>>>> implementation. 
>>>>>>
>>>>>> Thanks,
>>>>>> Rama.
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "google-guice" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>>
>>>>>> Visit this group at http://groups.google.com/group/google-guice.
>>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>
>>>>>
>>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "google-guice" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/google-guice.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "google-guice" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/google-guice.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to