Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [linuxtools-dev] TMF : createExecutableExtension in instantiateTrace() of TmfTraceElement.java

Hi Patrick

Got it, actually, I saw the dummy helper for validation purpose also ^^

The cause I ask it is that I am trying to to some injection under the TMF way implementation for a new TraceType

I try to implementation a E4 based service that can do some additional PIPE like trace processing

For example a power consume index could take frequency & load as input, output could be other pipes as input also

To bridge / trigger the service to work, I bind it to the class extends TmfTrace

To workaround it, I did a ModelAddon to force createExecutableExtension() in TmfTraceType like bellow

        @PostConstruct
public void init(IEclipseContext context, IExtensionRegistry reg) {
assert context != null;
_context = context;

                 /*
* A hack to TMF, since inject must be before TMFTrace implementation
* The getInstance() call would trigger load extension points
* It is the point to force inject here
*/
TraceTypeHelper tth = TmfTraceType.getInstance().getTraceType(Activator.TRACETYPE_ID);
tmfTrace = tth.getTrace();
assert tmfTrace != null;
ContextInjectionFactory.inject(tmfTrace, _context);

                .........


As you mentioned, it is for validation only. so I got null point on other callbacks like parseEvent() XDDDDDDDDDDDD

Is there any way that can make the INJECT got chance to work in the class extends TmfTrace for a new trace type ?

Or maybe I got misunderstand for the spirit of TMF framework = =!!

Thank you again for the quick response.

The TMF is very amazing !

Ran-How




On Sat, Apr 5, 2014 at 2:08 AM, Patrick Tasse <patrick.tasse@xxxxxxxxx> wrote:
Hi Ran-How,

The reason we can't use the ITmfTrace instance owned by the trace type helper is that we need a different instance for each opened trace (they have different resources, paths, indexers, etc.).

The instance in the trace type helper is a dummy trace instance that is only used for trace type validation. It's not sure that these instances will remain in the future, if for example we implement a validator class that is separate from the trace class.

Patrick


On Fri, Apr 4, 2014 at 1:17 PM, Chen RanHow <ranhow.chen@xxxxxxxxx> wrote:

Hi TMF advances

Thank you team for the powerful framework, I have a question bellow

In  TmfTraceElement.java

I saw createExecutableExtension() in instantiateTrace() to get an instance from the extension points like bellow

                IConfigurationElement ce = sfTraceTypeAttributes.get(fTraceTypeId);
               
                .......

                ITmfTrace trace = (ITmfTrace) ce.createExecutableExtension(TmfTraceType.TRACE_TYPE_ATTR);

               ......

               return trace;
 
I wonder why not just use TmfTraceType.getInstance() to do it ?

Since the init() in TmfTraceType constructor call populateCategoriesAndTraceTypes()

The instance of createExecutableExtension is created

Could it be replaced with

            TraceTypeHelper tth = TmfTraceType.getInstance().getTraceType(fTraceTypeId);

            ITmfTrace trace = tth.getTrace();

            return trace;

Or I misunderstand it ?

Please kindly to reply

Ran-How


_______________________________________________
linuxtools-dev mailing list
linuxtools-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/linuxtools-dev



_______________________________________________
linuxtools-dev mailing list
linuxtools-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/linuxtools-dev



Back to the top