Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 // Copyright 2005 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.tapestry.enhance;
import  org.apache.hivemind.Location;
import  org.apache.hivemind.internal.Module;
An enhancement worker which automatically injects HiveMind services into pages/components if exactly one service point exists which is compatible with the read-only property's type.
public class AutowireWorker implements EnhancementWorker
    private final Log _log;
    private final Module _module;
    public AutowireWorker( Module moduleLog log)
    {
         = module;
         = log;
    }
    {
        final List propertyNames = op.findUnclaimedAbstractProperties();
        forIterator i = propertyNames.iterator(); i.hasNext(); ) {
            
            String propertyName = ( String ) i.next();
            
            Class propertyType = op.getPropertyTypepropertyName );
            ifpropertyType == null )
                propertyType = Object.class;
            
            if (!op.canClaimAsReadOnlyProperty(propertyName))
                continue;
            if.containsService( propertyType )) {
                
                final Object serviceProxy = .getService( propertyType );
                final Location location = spec.getLocation();
                
                .debug( EnhanceMessages.autowiringpropertyNamespecserviceProxy ) );
                
                final String fieldName = op.addInjectedField"_$" + propertyNamepropertyTypeserviceProxy );
                
                EnhanceUtils.createSimpleAccessoropfieldNamepropertyNamepropertyTypelocation );
                op.claimReadonlyPropertypropertyName );
            }
        }
    }
New to GrepCode? Check out our FAQ X