Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 // Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
 //
 // 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.
package org.apache.tapestry5.internal.services;
Creates Instantiators for components, based on component class name. This will involve transforming the component's class before it is loaded.

In addition, a source acts as an event hub for org.apache.tapestry5.services.InvalidationListeners, so that any information derived from loaded classes can be discarded and rebuilt when classes change.

The strategy used is that when any class (in a controlled package) changes, the entire class loader is discarded, along with any instances derived from those classes. A new class loader is created, and then invalidation events are fired to listeners.

{

    
Given the name of a component class, provides an instantiator for that component. Instantiators are cached, so repeated calls to this method with the same class name will return the same instance; however, callers should also be aware that the instantiators may lose validity after an invalidation (caused by changes to external Java class files).

Parameters:
classname FQCN to find (and perhaps transform and load)
Returns:
an object which can instantiate an instance of the component
    Instantiator getInstantiator(String classname);

    
Adds a controlled package. Only classes within controlled packages are subject to transformation.

Parameters:
packageName the package name to add (must not be blank)
    void addPackage(String packageName);

    
Checks to see if a fully qualfied class name exists. This method appears to exist only for testing.

Parameters:
className name of class to check
Returns:
true if the class exists (there's a ".class" file), false otherwise
    boolean exists(String className);

    
Returns a class factory that can be used to generate additional classes around enhanced classes, or create subclasses of enhanced classes.
    ClassFactory getClassFactory();

    
Returns a class source used when creating new classes dynamically.
    CtClassSource getClassSource();

    
Invalidation event hub used to notify listeners that component classes have changed.

New to GrepCode? Check out our FAQ X