Merge branch 'rep3' into develop

This commit is contained in:
Brandon DeVries 2015-03-30 12:14:20 -04:00
commit e7d6d94584
4 changed files with 153 additions and 0 deletions

View File

@ -117,6 +117,12 @@ public class StandardControllerServiceProvider implements ControllerServiceProvi
final InvocationHandler invocationHandler = new InvocationHandler() {
@Override
public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
final String methodName = method.getName();
if("initialize".equals(methodName) || "onPropertyModified".equals(methodName)){
throw new UnsupportedOperationException(method + " may only be invoked by the NiFi framework");
}
final ControllerServiceNode node = serviceNodeHolder.get();
if (node.isDisabled() && !validDisabledMethods.contains(method)) {
// Use nar class loader here because we are implicitly calling toString() on the original implementation.

View File

@ -0,0 +1,71 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.nifi.controller.service;
import org.apache.nifi.controller.ControllerService;
import org.apache.nifi.controller.StandardFlowServiceTest;
import org.apache.nifi.nar.ExtensionManager;
import org.apache.nifi.nar.NarClassLoaders;
import org.apache.nifi.reporting.InitializationException;
import org.apache.nifi.util.NiFiProperties;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class StandardControllerServiceProviderTest {
private ControllerService proxied;
private ControllerService implementation;
@BeforeClass
public static void setupSuite() throws Exception {
System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, StandardFlowServiceTest.class.getResource("/conf/nifi.properties").getFile());
NiFiProperties properties = NiFiProperties.getInstance();
NarClassLoaders.load(properties);
ExtensionManager.discoverExtensions();
}
@Before
public void setup() throws Exception {
String id = "id";
String clazz = "org.apache.nifi.controller.service.util.TestControllerService";
ControllerServiceProvider provider = new StandardControllerServiceProvider();
ControllerServiceNode node = provider.createControllerService(clazz,id,true);
proxied = node.getProxiedControllerService();
implementation = node.getControllerServiceImplementation();
}
@Test (expected=UnsupportedOperationException.class)
public void testCallProxiedOnPropertyModified() {
proxied.onPropertyModified(null, "oldValue", "newValue");
}
@Test
public void testCallImplementationOnPropertyModified() {
implementation.onPropertyModified(null, "oldValue", "newValue");
}
@Test (expected=UnsupportedOperationException.class)
public void testCallProxiedInitialized() throws InitializationException {
proxied.initialize(null);
}
@Test
public void testCallImplementationInitialized() throws InitializationException {
implementation.initialize(null);
}
}

View File

@ -0,0 +1,61 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.nifi.controller.service.util;
import java.util.Collection;
import java.util.List;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.components.ValidationContext;
import org.apache.nifi.components.ValidationResult;
import org.apache.nifi.controller.ControllerService;
import org.apache.nifi.controller.ControllerServiceInitializationContext;
import org.apache.nifi.reporting.InitializationException;
public class TestControllerService implements ControllerService {
@Override
public Collection<ValidationResult> validate(ValidationContext context) {
return null;
}
@Override
public PropertyDescriptor getPropertyDescriptor(String name) {
return null;
}
@Override
public void onPropertyModified(PropertyDescriptor descriptor,
String oldValue, String newValue) {
}
@Override
public List<PropertyDescriptor> getPropertyDescriptors() {
return null;
}
@Override
public String getIdentifier() {
return null;
}
@Override
public void initialize(ControllerServiceInitializationContext context)
throws InitializationException {
}
}

View File

@ -0,0 +1,15 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
org.apache.nifi.controller.service.util.TestControllerService