http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestFormattingSubject.java ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestFormattingSubject.java b/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestFormattingSubject.java new file mode 100644 index 0000000..2f49cc6 --- /dev/null +++ b/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestFormattingSubject.java @@ -0,0 +1,47 @@ +/** + * 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.knox.gateway.i18n.resources; + +/** + * + */ +@Resources( bundle="some.bundle.name" ) +public interface ResourcesTestFormattingSubject { + + @Resource(text="{0}") + String withAnnotationWithSimplePatternOneParam( int x ); + + @Resource(text="before{0}after") + String withAnnotationWithPatternOneParam( int x ); + + @Resource + String withAnnotationWithoutPatternOneParam( int x ); + + String withoutAnnotationsOrParameters(); + + String withoutAnnotationsWithOneParam( int x ); + + String withoutAnnotationsWithElevenParams( String p1, String p2, String p3, String p4, String p5, String p6, String p7, String p8, String p9, String p10, String p11 ); + + @Resource(text="{0},{1}") + String withMoreFormatParamsThanMethodParams( int x ); + + @Resource(text="{0}") + String withLessFormatParamsThanMethodParams( int x, int y ); + +}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.java ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.java b/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.java new file mode 100644 index 0000000..e9b0abd --- /dev/null +++ b/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.java @@ -0,0 +1,29 @@ +/** + * 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.knox.gateway.i18n.resources; + +/** + * + */ +@Resources +public interface ResourcesTestLocaleSubject { + + @Resource(text="default=[{0}]") + String testResource( String param ); + +} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestNamedSubject.java ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestNamedSubject.java b/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestNamedSubject.java new file mode 100644 index 0000000..0c5f1af --- /dev/null +++ b/gateway-i18n/src/test/java/org/apache/knox/gateway/i18n/resources/ResourcesTestNamedSubject.java @@ -0,0 +1,29 @@ +/** + * 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.knox.gateway.i18n.resources; + +/** + * + */ +@Resources( bundle="org.apache.knox.gateway.i18n.resources.NamedBundle" ) +public interface ResourcesTestNamedSubject { + + @Resource(text="default=[{0}]") + String testResource( String param ); + +} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/META-INF/services/org.apache.hadoop.gateway.i18n.messages.MessageLoggerFactory ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/META-INF/services/org.apache.hadoop.gateway.i18n.messages.MessageLoggerFactory b/gateway-i18n/src/test/resources/META-INF/services/org.apache.hadoop.gateway.i18n.messages.MessageLoggerFactory deleted file mode 100644 index 6f559f0..0000000 --- a/gateway-i18n/src/test/resources/META-INF/services/org.apache.hadoop.gateway.i18n.messages.MessageLoggerFactory +++ /dev/null @@ -1,17 +0,0 @@ -# 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.hadoop.gateway.i18n.messages.loggers.test.TestMessageLoggerFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/META-INF/services/org.apache.knox.gateway.i18n.messages.MessageLoggerFactory ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/META-INF/services/org.apache.knox.gateway.i18n.messages.MessageLoggerFactory b/gateway-i18n/src/test/resources/META-INF/services/org.apache.knox.gateway.i18n.messages.MessageLoggerFactory new file mode 100644 index 0000000..bb615be --- /dev/null +++ b/gateway-i18n/src/test/resources/META-INF/services/org.apache.knox.gateway.i18n.messages.MessageLoggerFactory @@ -0,0 +1,17 @@ +# 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.knox.gateway.i18n.messages.loggers.test.TestMessageLoggerFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/NamedBundle_en_CA.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/NamedBundle_en_CA.properties b/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/NamedBundle_en_CA.properties deleted file mode 100644 index 84dece1..0000000 --- a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/NamedBundle_en_CA.properties +++ /dev/null @@ -1,19 +0,0 @@ -########################################################################## -# 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. -########################################################################## - -testResource=ca=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject.properties b/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject.properties deleted file mode 100644 index 6acb5d1..0000000 --- a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject.properties +++ /dev/null @@ -1,14 +0,0 @@ -# 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. http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties b/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties deleted file mode 100644 index f5cf5e0..0000000 --- a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties +++ /dev/null @@ -1,19 +0,0 @@ -########################################################################## -# 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. -########################################################################## - -testResource=en=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties b/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties deleted file mode 100644 index 64cc4bf..0000000 --- a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties +++ /dev/null @@ -1,19 +0,0 @@ -########################################################################## -# 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. -########################################################################## - -testResource=uk=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties b/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties deleted file mode 100644 index d9a3cb7..0000000 --- a/gateway-i18n/src/test/resources/org/apache/hadoop/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties +++ /dev/null @@ -1,19 +0,0 @@ -########################################################################## -# 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. -########################################################################## - -testResource=us=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/NamedBundle_en_CA.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/NamedBundle_en_CA.properties b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/NamedBundle_en_CA.properties new file mode 100644 index 0000000..84dece1 --- /dev/null +++ b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/NamedBundle_en_CA.properties @@ -0,0 +1,19 @@ +########################################################################## +# 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. +########################################################################## + +testResource=ca=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.properties b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.properties new file mode 100644 index 0000000..6acb5d1 --- /dev/null +++ b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject.properties @@ -0,0 +1,14 @@ +# 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. http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties new file mode 100644 index 0000000..f5cf5e0 --- /dev/null +++ b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en.properties @@ -0,0 +1,19 @@ +########################################################################## +# 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. +########################################################################## + +testResource=en=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties new file mode 100644 index 0000000..64cc4bf --- /dev/null +++ b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_GB.properties @@ -0,0 +1,19 @@ +########################################################################## +# 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. +########################################################################## + +testResource=uk=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties ---------------------------------------------------------------------- diff --git a/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties new file mode 100644 index 0000000..d9a3cb7 --- /dev/null +++ b/gateway-i18n/src/test/resources/org/apache/knox/gateway/i18n/resources/ResourcesTestLocaleSubject_en_US.properties @@ -0,0 +1,19 @@ +########################################################################## +# 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. +########################################################################## + +testResource=us=[{0}] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/deploy/HaProviderDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/deploy/HaProviderDeploymentContributor.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/deploy/HaProviderDeploymentContributor.java deleted file mode 100644 index 10cce6c..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/deploy/HaProviderDeploymentContributor.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * 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.hadoop.gateway.ha.deploy; - -import org.apache.hadoop.gateway.deploy.DeploymentContext; -import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributorBase; -import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor; -import org.apache.hadoop.gateway.descriptor.ResourceDescriptor; -import org.apache.hadoop.gateway.ha.provider.HaDescriptor; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; -import org.apache.hadoop.gateway.ha.provider.HaServletContextListener; -import org.apache.hadoop.gateway.ha.provider.impl.HaDescriptorFactory; -import org.apache.hadoop.gateway.ha.provider.impl.HaDescriptorManager; -import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.topology.Provider; -import org.apache.hadoop.gateway.topology.Service; -import org.jboss.shrinkwrap.api.asset.StringAsset; - -import java.io.IOException; -import java.io.StringWriter; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -public class HaProviderDeploymentContributor extends ProviderDeploymentContributorBase { - - private static final String PROVIDER_ROLE_NAME = "ha"; - - private static final String PROVIDER_IMPL_NAME = "HaProvider"; - - private static final String HA_DESCRIPTOR_NAME = "ha.provider.descriptor"; - - private static final HaMessages LOG = MessagesFactory.get(HaMessages.class); - - @Override - public String getRole() { - return PROVIDER_ROLE_NAME; - } - - @Override - public String getName() { - return PROVIDER_IMPL_NAME; - } - - @Override - public void contributeProvider(DeploymentContext context, Provider provider) { - Map<String, String> params = provider.getParams(); - HaDescriptor descriptor = HaDescriptorFactory.createDescriptor(); - for (Entry<String, String> entry : params.entrySet()) { - HaServiceConfig config = HaDescriptorFactory.createServiceConfig(entry.getKey(), entry.getValue()); - descriptor.addServiceConfig(config); - } - StringWriter writer = new StringWriter(); - try { - HaDescriptorManager.store(descriptor, writer); - } catch (IOException e) { - LOG.failedToWriteHaDescriptor(e); - } - String asset = writer.toString(); - context.getWebArchive().addAsWebInfResource( - new StringAsset(asset), - HaServletContextListener.DESCRIPTOR_DEFAULT_FILE_NAME); - context.addDescriptor(HA_DESCRIPTOR_NAME, descriptor); - } - - @Override - public void finalizeContribution(DeploymentContext context) { - if (context.getDescriptor(HA_DESCRIPTOR_NAME) != null) { - // Tell the provider the location of the descriptor. - // Doing this here instead of in 'contributeProvider' so that this ServletContextListener comes after the gateway services have been set. - context.getWebAppDescriptor().createListener().listenerClass(HaServletContextListener.class.getName()); - context.getWebAppDescriptor().createContextParam() - .paramName(HaServletContextListener.DESCRIPTOR_LOCATION_INIT_PARAM_NAME) - .paramValue(HaServletContextListener.DESCRIPTOR_DEFAULT_LOCATION); - } - } - - @Override - public void contributeFilter(DeploymentContext context, Provider provider, Service service, ResourceDescriptor resource, List<FilterParamDescriptor> params) { - //no op - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/DefaultHaDispatch.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/DefaultHaDispatch.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/DefaultHaDispatch.java deleted file mode 100644 index 4f66273..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/DefaultHaDispatch.java +++ /dev/null @@ -1,130 +0,0 @@ -/** - * 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.hadoop.gateway.ha.dispatch; - -import org.apache.hadoop.gateway.config.Configure; -import org.apache.hadoop.gateway.config.Optional; -import org.apache.hadoop.gateway.dispatch.DefaultDispatch; -import org.apache.hadoop.gateway.filter.AbstractGatewayFilter; -import org.apache.hadoop.gateway.ha.dispatch.i18n.HaDispatchMessages; -import org.apache.hadoop.gateway.ha.provider.HaProvider; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; -import org.apache.hadoop.gateway.ha.provider.impl.HaServiceConfigConstants; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpRequestBase; -import org.apache.http.client.methods.HttpUriRequest; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.net.URI; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * Default HA dispatch class that has a very basic failover mechanism - */ -public class DefaultHaDispatch extends DefaultDispatch { - - protected static final String FAILOVER_COUNTER_ATTRIBUTE = "dispatch.ha.failover.counter"; - - private static final HaDispatchMessages LOG = MessagesFactory.get(HaDispatchMessages.class); - - private int maxFailoverAttempts = HaServiceConfigConstants.DEFAULT_MAX_FAILOVER_ATTEMPTS; - - private int failoverSleep = HaServiceConfigConstants.DEFAULT_FAILOVER_SLEEP; - - private HaProvider haProvider; - - @Optional - @Configure - private String serviceRole; - - @Override - public void init() { - super.init(); - LOG.initializingForResourceRole(getServiceRole()); - if ( haProvider != null ) { - HaServiceConfig serviceConfig = haProvider.getHaDescriptor().getServiceConfig(getServiceRole()); - maxFailoverAttempts = serviceConfig.getMaxFailoverAttempts(); - failoverSleep = serviceConfig.getFailoverSleep(); - } - } - - public String getServiceRole() { - return serviceRole; - } - - public void setServiceRole(String serviceRole) { - this.serviceRole = serviceRole; - } - - public HaProvider getHaProvider() { - return haProvider; - } - - @Configure - public void setHaProvider(HaProvider haProvider) { - this.haProvider = haProvider; - } - - @Override - protected void executeRequest(HttpUriRequest outboundRequest, HttpServletRequest inboundRequest, HttpServletResponse outboundResponse) throws IOException { - HttpResponse inboundResponse = null; - try { - inboundResponse = executeOutboundRequest(outboundRequest); - writeOutboundResponse(outboundRequest, inboundRequest, outboundResponse, inboundResponse); - } catch ( IOException e ) { - LOG.errorConnectingToServer(outboundRequest.getURI().toString(), e); - failoverRequest(outboundRequest, inboundRequest, outboundResponse, inboundResponse, e); - } - } - - - private void failoverRequest(HttpUriRequest outboundRequest, HttpServletRequest inboundRequest, HttpServletResponse outboundResponse, HttpResponse inboundResponse, Exception exception) throws IOException { - LOG.failingOverRequest(outboundRequest.getURI().toString()); - AtomicInteger counter = (AtomicInteger) inboundRequest.getAttribute(FAILOVER_COUNTER_ATTRIBUTE); - if ( counter == null ) { - counter = new AtomicInteger(0); - } - inboundRequest.setAttribute(FAILOVER_COUNTER_ATTRIBUTE, counter); - if ( counter.incrementAndGet() <= maxFailoverAttempts ) { - haProvider.markFailedURL(getServiceRole(), outboundRequest.getURI().toString()); - //null out target url so that rewriters run again - inboundRequest.setAttribute(AbstractGatewayFilter.TARGET_REQUEST_URL_ATTRIBUTE_NAME, null); - URI uri = getDispatchUrl(inboundRequest); - ((HttpRequestBase) outboundRequest).setURI(uri); - if ( failoverSleep > 0 ) { - try { - Thread.sleep(failoverSleep); - } catch ( InterruptedException e ) { - LOG.failoverSleepFailed(getServiceRole(), e); - } - } - executeRequest(outboundRequest, inboundRequest, outboundResponse); - } else { - LOG.maxFailoverAttemptsReached(maxFailoverAttempts, getServiceRole()); - if ( inboundResponse != null ) { - writeOutboundResponse(outboundRequest, inboundRequest, outboundResponse, inboundResponse); - } else { - throw new IOException(exception); - } - } - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/i18n/HaDispatchMessages.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/i18n/HaDispatchMessages.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/i18n/HaDispatchMessages.java deleted file mode 100644 index 928f8b0..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/dispatch/i18n/HaDispatchMessages.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * 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.hadoop.gateway.ha.dispatch.i18n; - -import org.apache.hadoop.gateway.i18n.messages.Message; -import org.apache.hadoop.gateway.i18n.messages.MessageLevel; -import org.apache.hadoop.gateway.i18n.messages.Messages; -import org.apache.hadoop.gateway.i18n.messages.StackTrace; - -@Messages(logger = "org.apache.hadoop.gateway") -public interface HaDispatchMessages { - @Message(level = MessageLevel.INFO, text = "Initializing Ha Dispatch for: {0}") - void initializingForResourceRole(String resourceRole); - - @Message(level = MessageLevel.INFO, text = "Could not connect to server: {0} {1}") - void errorConnectingToServer(String uri, @StackTrace(level = MessageLevel.DEBUG) Exception e); - - @Message(level = MessageLevel.INFO, text = "Failing over request to a different server: {0}") - void failingOverRequest(String uri); - - @Message(level = MessageLevel.INFO, text = "Maximum attempts {0} to failover reached for service: {1}") - void maxFailoverAttemptsReached(int attempts, String service); - - @Message(level = MessageLevel.INFO, text = "Error occurred while trying to sleep for failover : {0} {1}") - void failoverSleepFailed(String service, @StackTrace(level = MessageLevel.DEBUG) Exception e); -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaDescriptor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaDescriptor.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaDescriptor.java deleted file mode 100644 index e0b5b04..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaDescriptor.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider; - -import java.util.List; - -public interface HaDescriptor { - - public void addServiceConfig(HaServiceConfig serviceConfig); - - public HaServiceConfig getServiceConfig(String serviceName); - - public List<String> getServiceNames(); - - public List<String> getEnabledServiceNames(); - - public List<HaServiceConfig> getServiceConfigs(); - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaProvider.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaProvider.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaProvider.java deleted file mode 100644 index 71d929d..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaProvider.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider; - -import java.util.List; - -public interface HaProvider { - - public HaDescriptor getHaDescriptor(); - - /** - * Add a service name (role) as a HA service with the URLs that it is configured for - * - * @param serviceName the name of the service - * @param urls the list of urls that can be used for that service - */ - public void addHaService(String serviceName, List<String> urls); - - /** - * Returns whether the service is enabled for HA - * - * @param serviceName the name of the service - * @return true if the service is enabled; false otherwise - */ - public boolean isHaEnabled(String serviceName); - - /** - * Returns the current URL that is known to be active for the service - * - * @param serviceName the name of the service - * @return the URL as a string or null if the service name is not found - */ - public String getActiveURL(String serviceName); - - /** - * Sets a given URL that is known to be active for the service - * - * @param serviceName the name of the service - * @param url the active url - */ - public void setActiveURL(String serviceName, String url); - - /** - * Mark the URL for the service as one that has failed. This method puts changes the active URL to - * the next available URL for the service. - * - * @param serviceName the name of the service - * @param url the URL that has failed in some way - */ - public void markFailedURL(String serviceName, String url); - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServiceConfig.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServiceConfig.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServiceConfig.java deleted file mode 100644 index 8c12b8e..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServiceConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider; - -public interface HaServiceConfig { - - public void setServiceName(String name); - - public String getServiceName(); - - public boolean isEnabled(); - - public void setEnabled(boolean enabled); - - public void setMaxFailoverAttempts(int limit); - - public int getMaxFailoverAttempts(); - - public void setFailoverSleep(int sleep); - - public int getFailoverSleep(); - - public void setMaxRetryAttempts(int limit); - - public int getMaxRetryAttempts(); - - public void setRetrySleep(int sleep); - - public int getRetrySleep(); - - public String getZookeeperEnsemble(); - - public void setZookeeperEnsemble(String zookeeperEnsemble); - - public String getZookeeperNamespace(); - - public void setZookeeperNamespace(String zookeeperNamespace); -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServletContextListener.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServletContextListener.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServletContextListener.java deleted file mode 100644 index b84e649..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/HaServletContextListener.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider; - -import org.apache.hadoop.gateway.ha.provider.impl.DefaultHaProvider; -import org.apache.hadoop.gateway.ha.provider.impl.HaDescriptorManager; -import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.services.GatewayServices; -import org.apache.hadoop.gateway.services.registry.ServiceRegistry; - -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; - -public class HaServletContextListener implements ServletContextListener { - - public static final String PROVIDER_ATTRIBUTE_NAME = "haProvider"; - - public static final String DESCRIPTOR_LOCATION_INIT_PARAM_NAME = "haDescriptorLocation"; - - public static final String DESCRIPTOR_DEFAULT_FILE_NAME = "ha.xml"; - - public static final String DESCRIPTOR_DEFAULT_LOCATION = "/WEB-INF/" + DESCRIPTOR_DEFAULT_FILE_NAME; - - private static final HaMessages LOG = MessagesFactory.get(HaMessages.class); - - - @Override - public void contextInitialized(ServletContextEvent event) { - HaDescriptor descriptor; - ServletContext servletContext = event.getServletContext(); - try { - URL url = locateDescriptor(servletContext); - descriptor = loadDescriptor(url); - } catch (IOException e) { - throw new IllegalStateException(e); - } - setupHaProvider(descriptor, servletContext); - } - - @Override - public void contextDestroyed(ServletContextEvent event) { - event.getServletContext().removeAttribute(PROVIDER_ATTRIBUTE_NAME); - } - - public static HaProvider getHaProvider(ServletContext context) { - return (HaProvider) context.getAttribute(PROVIDER_ATTRIBUTE_NAME); - } - - private void setupHaProvider(HaDescriptor descriptor, ServletContext servletContext) { - GatewayServices services = (GatewayServices) servletContext.getAttribute(GatewayServices.GATEWAY_SERVICES_ATTRIBUTE); - String clusterName = (String) servletContext.getAttribute(GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE); - ServiceRegistry serviceRegistry = services.getService(GatewayServices.SERVICE_REGISTRY_SERVICE); - HaProvider provider = new DefaultHaProvider(descriptor); - List<String> serviceNames = descriptor.getEnabledServiceNames(); - for (String serviceName : serviceNames) { - provider.addHaService(serviceName, serviceRegistry.lookupServiceURLs(clusterName, serviceName)); - } - servletContext.setAttribute(PROVIDER_ATTRIBUTE_NAME, provider); - } - - private static URL locateDescriptor(ServletContext context) throws IOException { - String param = context.getInitParameter(DESCRIPTOR_LOCATION_INIT_PARAM_NAME); - if (param == null) { - param = DESCRIPTOR_DEFAULT_LOCATION; - } - URL url; - try { - url = context.getResource(param); - } catch (MalformedURLException e) { - // Ignore it and try using the value directly as a URL. - url = null; - } - if (url == null) { - url = new URL(param); - } - if (url == null) { - throw new FileNotFoundException(param); - } - return url; - } - - private static HaDescriptor loadDescriptor(URL url) throws IOException { - InputStream stream = url.openStream(); - HaDescriptor descriptor = HaDescriptorManager.load(stream); - try { - stream.close(); - } catch (IOException e) { - LOG.failedToLoadHaDescriptor(e); - } - return descriptor; - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManager.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManager.java deleted file mode 100644 index e9de8f0..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManager.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.hadoop.gateway.ha.provider; - -import java.util.List; - -public interface URLManager { - - public boolean supportsConfig(HaServiceConfig config); - - public void setConfig(HaServiceConfig config); - - public String getActiveURL(); - - public void setActiveURL(String url); - - public List<String> getURLs(); - - public void setURLs(List<String> urls); - - public void markFailed(String url); -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManagerLoader.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManagerLoader.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManagerLoader.java deleted file mode 100644 index c92d0e5..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/URLManagerLoader.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * 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.hadoop.gateway.ha.provider; - -import org.apache.hadoop.gateway.ha.provider.impl.DefaultURLManager; - -import java.util.Iterator; -import java.util.ServiceLoader; - -public class URLManagerLoader { - - public static URLManager loadURLManager(HaServiceConfig config) { - if (config != null) { - ServiceLoader<URLManager> loader = ServiceLoader.load(URLManager.class); - if ( loader != null ) { - Iterator<URLManager> iterator = loader.iterator(); - while ( iterator.hasNext() ) { - URLManager urlManager = iterator.next(); - if ( urlManager.supportsConfig(config) ) { - urlManager.setConfig(config); - return urlManager; - } - } - } - } - return new DefaultURLManager(); - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaDescriptor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaDescriptor.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaDescriptor.java deleted file mode 100644 index 7969439..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaDescriptor.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -import com.google.common.collect.Lists; -import org.apache.hadoop.gateway.ha.provider.HaDescriptor; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -public class DefaultHaDescriptor implements HaDescriptor { - - private ConcurrentHashMap<String, HaServiceConfig> serviceConfigs; - - public DefaultHaDescriptor() { - serviceConfigs = new ConcurrentHashMap<>(); - } - - @Override - public void addServiceConfig(HaServiceConfig serviceConfig) { - if (serviceConfig == null) { - throw new IllegalArgumentException("Service config must not be null"); - } - serviceConfigs.put(serviceConfig.getServiceName(), serviceConfig); - } - - @Override - public HaServiceConfig getServiceConfig(String serviceName) { - return serviceConfigs.get(serviceName); - } - - @Override - public List<HaServiceConfig> getServiceConfigs() { - return Lists.newArrayList(serviceConfigs.values()); - } - - @Override - public List<String> getServiceNames() { - return Lists.newArrayList(serviceConfigs.keySet()); - } - - @Override - public List<String> getEnabledServiceNames() { - ArrayList<String> services = new ArrayList<String>(serviceConfigs.size()); - Collection<HaServiceConfig> configs = serviceConfigs.values(); - for (HaServiceConfig config : configs) { - if (config.isEnabled()) { - services.add(config.getServiceName()); - } - } - return services; - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaProvider.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaProvider.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaProvider.java deleted file mode 100644 index b1da180..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaProvider.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -import org.apache.hadoop.gateway.ha.provider.HaDescriptor; -import org.apache.hadoop.gateway.ha.provider.HaProvider; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; -import org.apache.hadoop.gateway.ha.provider.URLManager; -import org.apache.hadoop.gateway.ha.provider.URLManagerLoader; -import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; - -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -public class DefaultHaProvider implements HaProvider { - - private static final HaMessages LOG = MessagesFactory.get(HaMessages.class); - - private HaDescriptor descriptor; - - private ConcurrentHashMap<String, URLManager> haServices; - - public DefaultHaProvider(HaDescriptor descriptor) { - if ( descriptor == null ) { - throw new IllegalArgumentException("Descriptor can not be null"); - } - this.descriptor = descriptor; - haServices = new ConcurrentHashMap<>(); - } - - @Override - public HaDescriptor getHaDescriptor() { - return descriptor; - } - - @Override - public void addHaService(String serviceName, List<String> urls) { - HaServiceConfig haServiceConfig = descriptor.getServiceConfig(serviceName); - URLManager manager = URLManagerLoader.loadURLManager(haServiceConfig); - manager.setURLs(urls); - haServices.put(serviceName, manager); - } - - @Override - public boolean isHaEnabled(String serviceName) { - HaServiceConfig config = descriptor.getServiceConfig(serviceName); - if ( config != null && config.isEnabled() ) { - return true; - } - return false; - } - - @Override - public String getActiveURL(String serviceName) { - if ( haServices.containsKey(serviceName) ) { - return haServices.get(serviceName).getActiveURL(); - } - LOG.noActiveUrlFound(serviceName); - return null; - } - - @Override - public void setActiveURL(String serviceName, String url) { - if ( haServices.containsKey(serviceName) ) { - haServices.get(serviceName).setActiveURL(url); - } else { - LOG.noServiceFound(serviceName); - } - - } - - @Override - public void markFailedURL(String serviceName, String url) { - if ( haServices.containsKey(serviceName) ) { - haServices.get(serviceName).markFailed(url); - } else { - LOG.noServiceFound(serviceName); - } - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaServiceConfig.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaServiceConfig.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaServiceConfig.java deleted file mode 100644 index e1d6937..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultHaServiceConfig.java +++ /dev/null @@ -1,124 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; - -public class DefaultHaServiceConfig implements HaServiceConfig, HaServiceConfigConstants { - - private String name; - - private boolean enabled = DEFAULT_ENABLED; - - private int maxFailoverAttempts = DEFAULT_MAX_FAILOVER_ATTEMPTS; - - private int failoverSleep = DEFAULT_FAILOVER_SLEEP; - - private int maxRetryAttempts = DEFAULT_MAX_RETRY_ATTEMPTS; - - private int retrySleep = DEFAULT_RETRY_SLEEP; - - private String zookeeperEnsemble; - - private String zookeeperNamespace; - - public DefaultHaServiceConfig(String name) { - this.name = name; - } - - @Override - - public String getServiceName() { - return name; - } - - @Override - public void setServiceName(String name) { - this.name = name; - } - - @Override - public boolean isEnabled() { - return enabled; - } - - @Override - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - @Override - public int getMaxFailoverAttempts() { - return maxFailoverAttempts; - } - - @Override - public void setMaxFailoverAttempts(int maxFailoverAttempts) { - this.maxFailoverAttempts = maxFailoverAttempts; - } - - @Override - public int getFailoverSleep() { - return failoverSleep; - } - - @Override - public void setFailoverSleep(int failoverSleep) { - this.failoverSleep = failoverSleep; - } - - @Override - public int getMaxRetryAttempts() { - return maxRetryAttempts; - } - - @Override - public void setMaxRetryAttempts(int maxRetryAttempts) { - this.maxRetryAttempts = maxRetryAttempts; - } - - @Override - public int getRetrySleep() { - return retrySleep; - } - - @Override - public void setRetrySleep(int retrySleep) { - this.retrySleep = retrySleep; - } - - @Override - public String getZookeeperEnsemble() { - return zookeeperEnsemble; - } - - @Override - public void setZookeeperEnsemble(String zookeeperEnsemble) { - this.zookeeperEnsemble = zookeeperEnsemble; - } - - @Override - public String getZookeeperNamespace() { - return zookeeperNamespace; - } - - @Override - public void setZookeeperNamespace(String zookeeperNamespace) { - this.zookeeperNamespace = zookeeperNamespace; - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java deleted file mode 100644 index 484a580..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/DefaultURLManager.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -import com.google.common.collect.Lists; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; -import org.apache.hadoop.gateway.ha.provider.URLManager; -import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; - -import java.net.URI; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.ConcurrentLinkedQueue; - -public class DefaultURLManager implements URLManager { - - private static final HaMessages LOG = MessagesFactory.get(HaMessages.class); - - private ConcurrentLinkedQueue<String> urls = new ConcurrentLinkedQueue<>(); - - public DefaultURLManager() { - } - - @Override - public boolean supportsConfig(HaServiceConfig config) { - return true; - } - - @Override - public void setConfig(HaServiceConfig config) { - //no-op - } - - @Override - public String getActiveURL() { - return urls.peek(); - } - - @Override - public synchronized void setActiveURL(String url) { - String top = urls.peek(); - if (top.equalsIgnoreCase(url)) { - return; - } - if (urls.contains(url)) { - urls.remove(url); - List<String> remainingList = getURLs(); - urls.clear(); - urls.add(url); - urls.addAll(remainingList); - } - } - - @Override - public List<String> getURLs() { - return Lists.newArrayList(urls.iterator()); - } - - @Override - public synchronized void setURLs(List<String> urls) { - if ( urls != null && !urls.isEmpty()) { - this.urls.clear(); - this.urls.addAll(urls); - } - } - - @Override - public synchronized void markFailed(String url) { - String top = urls.peek(); - boolean pushToBottom = false; - URI topUri = URI.create(top); - URI incomingUri = URI.create(url); - String topHostPort = topUri.getHost() + ":" + topUri.getPort(); - String incomingHostPort = incomingUri.getHost() + ":" + incomingUri.getPort(); - if ( topHostPort.equals(incomingHostPort) ) { - pushToBottom = true; - } - //put the failed url at the bottom - if ( pushToBottom ) { - String failed = urls.poll(); - urls.offer(failed); - LOG.markedFailedUrl(failed, urls.peek()); - } - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java deleted file mode 100644 index 08b0590..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HS2ZookeeperURLManager.java +++ /dev/null @@ -1,145 +0,0 @@ -/** - * 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.hadoop.gateway.ha.provider.impl; - -import org.apache.curator.framework.CuratorFramework; -import org.apache.curator.framework.CuratorFrameworkFactory; -import org.apache.curator.retry.ExponentialBackoffRetry; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; -import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; - -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class HS2ZookeeperURLManager extends DefaultURLManager { - - private static final HaMessages LOG = MessagesFactory.get(HaMessages.class); - - private static final Pattern kvPattern = Pattern.compile("([^=;]*)=([^;]*)[;]?"); - - private String zooKeeperEnsemble; - - private String zooKeeperNamespace; - - private HashSet<String> failedSet; - - public HS2ZookeeperURLManager() { - failedSet = new LinkedHashSet<>(); - } - - @Override - public boolean supportsConfig(HaServiceConfig config) { - if (!config.getServiceName().equalsIgnoreCase("HIVE")) { - return false; - } - String zookeeperEnsemble = config.getZookeeperEnsemble(); - String zookeeperNamespace = config.getZookeeperNamespace(); - if ( zookeeperEnsemble != null && zookeeperNamespace != null && zookeeperEnsemble.trim().length() > 0 && zookeeperNamespace.trim().length() > 0) { - return true; - } - return false; - } - - @Override - public void setConfig(HaServiceConfig config) { - zooKeeperEnsemble = config.getZookeeperEnsemble(); - zooKeeperNamespace = config.getZookeeperNamespace(); - setURLs(lookupURLs()); - } - - public List<String> lookupURLs() { - List<String> serverHosts = new ArrayList<>(); - CuratorFramework zooKeeperClient = - CuratorFrameworkFactory.builder().connectString(zooKeeperEnsemble) - .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build(); - try { - zooKeeperClient.start(); - List<String> serverNodes = zooKeeperClient.getChildren().forPath("/" + zooKeeperNamespace); - for ( String serverNode : serverNodes ) { - String serverInfo = - new String( - zooKeeperClient.getData().forPath("/" + zooKeeperNamespace + "/" + serverNode), - Charset.forName("UTF-8")); - String serverURL = constructURL(serverInfo); - serverHosts.add(serverURL); - } - } catch ( Exception e ) { - LOG.failedToGetZookeeperUrls(e); - throw new RuntimeException(e); - } finally { - // Close the client connection with ZooKeeper - if ( zooKeeperClient != null ) { - zooKeeperClient.close(); - } - } - return serverHosts; - } - - private String constructURL(String serverInfo) { - Matcher matcher = kvPattern.matcher(serverInfo); - String scheme = "http"; - String host = null; - String port = "10001"; - String httpPath = "cliservice"; - while (matcher.find()) { - if ( (matcher.group(1) != null) && matcher.group(2) != null ) { - switch ( matcher.group(1) ) { - case "hive.server2.thrift.bind.host" : - host = matcher.group(2); - break; - case "hive.server2.thrift.http.port" : - port = matcher.group(2); - break; - case "hive.server2.thrift.http.path" : - httpPath = matcher.group(2); - break; - case "hive.server2.use.SSL" : - if (Boolean.parseBoolean(matcher.group(2))) { - scheme = "https"; - } - } - } - } - StringBuffer buffer = new StringBuffer(); - buffer.append(scheme); - buffer.append("://"); - buffer.append(host); - buffer.append(":"); - buffer.append(port); - buffer.append("/"); - buffer.append(httpPath); - return buffer.toString(); - } - - @Override - public synchronized void markFailed(String url) { - failedSet.add(url); - //refresh the list when we have hit all urls once - if (failedSet.size() >= getURLs().size()) { - failedSet.clear(); - setURLs(lookupURLs()); - } - super.markFailed(url); - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorConstants.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorConstants.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorConstants.java deleted file mode 100644 index ce3e07d..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorConstants.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -/** - * The constants for xml elements and attributes are meant to help render/consume the following: - * <p/> - * <ha> - * <service name='foo' failoverLimit='3' enabled='true'/> - * </ha> - */ -public interface HaDescriptorConstants { - - public static final String ROOT_ELEMENT = "ha"; - - public static final String SERVICE_ELEMENT = "service"; - - public static final String SERVICE_NAME_ATTRIBUTE = "name"; - - public static final String MAX_FAILOVER_ATTEMPTS = "maxFailoverAttempts"; - - public static final String FAILOVER_SLEEP = "failoverSleep"; - - public static final String MAX_RETRY_ATTEMPTS = "maxRetryAttempts"; - - public static final String RETRY_SLEEP = "retrySleep"; - - public static final String ENABLED_ATTRIBUTE = "enabled"; - - public static final String ZOOKEEPER_ENSEMBLE = "zookeeperEnsemble"; - - public static final String ZOOKEEPER_NAMESPACE = "zookeeperNamespace"; - -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorFactory.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorFactory.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorFactory.java deleted file mode 100644 index aeb6716..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorFactory.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -import org.apache.hadoop.gateway.ha.provider.HaDescriptor; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; - -import java.util.HashMap; -import java.util.Map; - -public abstract class HaDescriptorFactory implements HaServiceConfigConstants { - - public static HaDescriptor createDescriptor() { - return new DefaultHaDescriptor(); - } - - public static HaServiceConfig createServiceConfig(String serviceName, String config) { - Map<String, String> configMap = parseHaConfiguration(config); - String enabledValue = configMap.get(CONFIG_PARAM_ENABLED); - String maxFailoverAttempts = configMap.get(CONFIG_PARAM_MAX_FAILOVER_ATTEMPTS); - String failoverSleep = configMap.get(CONFIG_PARAM_FAILOVER_SLEEP); - String maxRetryAttempts = configMap.get(CONFIG_PARAM_MAX_RETRY_ATTEMPTS); - String retrySleep = configMap.get(CONFIG_PARAM_RETRY_SLEEP); - String zookeeperEnsemble = configMap.get(CONFIG_PARAM_ZOOKEEPER_ENSEMBLE); - String zookeeperNamespace = configMap.get(CONFIG_PARAM_ZOOKEEPER_NAMESPACE); - return createServiceConfig(serviceName, enabledValue, maxFailoverAttempts, - failoverSleep, maxRetryAttempts, retrySleep, - zookeeperEnsemble, zookeeperNamespace); - } - - public static HaServiceConfig createServiceConfig(String serviceName, String enabledValue, - String maxFailoverAttemptsValue, String failoverSleepValue, - String maxRetryAttemptsValue, String retrySleepValue, - String zookeeperEnsemble, String zookeeperNamespace) { - boolean enabled = DEFAULT_ENABLED; - int maxFailoverAttempts = DEFAULT_MAX_FAILOVER_ATTEMPTS; - int failoverSleep = DEFAULT_FAILOVER_SLEEP; - int maxRetryAttempts = DEFAULT_MAX_RETRY_ATTEMPTS; - int retrySleep = DEFAULT_RETRY_SLEEP; - if (enabledValue != null && enabledValue.trim().length() > 0) { - enabled = Boolean.parseBoolean(enabledValue); - } - if (maxFailoverAttemptsValue != null && maxFailoverAttemptsValue.trim().length() > 0) { - maxFailoverAttempts = Integer.parseInt(maxFailoverAttemptsValue); - } - if (failoverSleepValue != null && failoverSleepValue.trim().length() > 0) { - failoverSleep = Integer.parseInt(failoverSleepValue); - } - if (maxRetryAttemptsValue != null && maxRetryAttemptsValue.trim().length() > 0) { - maxRetryAttempts = Integer.parseInt(maxRetryAttemptsValue); - } - if (retrySleepValue != null && retrySleepValue.trim().length() > 0) { - retrySleep = Integer.parseInt(retrySleepValue); - } - DefaultHaServiceConfig serviceConfig = new DefaultHaServiceConfig(serviceName); - serviceConfig.setEnabled(enabled); - serviceConfig.setMaxFailoverAttempts(maxFailoverAttempts); - serviceConfig.setFailoverSleep(failoverSleep); - serviceConfig.setMaxRetryAttempts(maxRetryAttempts); - serviceConfig.setRetrySleep(retrySleep); - serviceConfig.setZookeeperEnsemble(zookeeperEnsemble); - serviceConfig.setZookeeperNamespace(zookeeperNamespace); - return serviceConfig; - } - - private static Map<String, String> parseHaConfiguration(String configuration) { - Map<String, String> parameters = new HashMap<>(); - if (configuration != null) { - String[] pairs = configuration.split(CONFIG_PAIRS_DELIMITER); - for (String pair : pairs) { - String[] tokens = pair.split(CONFIG_PAIR_DELIMITER); - if (tokens.length == 2) { - parameters.put(tokens[0], tokens[1]); - } - } - } - return parameters; - } -} http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java b/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java deleted file mode 100644 index f5e159f..0000000 --- a/gateway-provider-ha/src/main/java/org/apache/hadoop/gateway/ha/provider/impl/HaDescriptorManager.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * 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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.hadoop.gateway.ha.provider.impl; - -import org.apache.hadoop.gateway.ha.provider.HaDescriptor; -import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; -import org.apache.hadoop.gateway.ha.provider.impl.i18n.HaMessages; -import org.apache.hadoop.gateway.i18n.messages.MessagesFactory; -import org.apache.hadoop.gateway.util.XmlUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import java.io.IOException; -import java.io.InputStream; -import java.io.Writer; -import java.util.List; - -public class HaDescriptorManager implements HaDescriptorConstants { - - private static final HaMessages LOG = MessagesFactory.get(HaMessages.class); - - public static void store(HaDescriptor descriptor, Writer writer) throws IOException { - try { - Document document = XmlUtils.createDocument(); - - Element root = document.createElement(ROOT_ELEMENT); - document.appendChild(root); - - List<HaServiceConfig> serviceConfigs = descriptor.getServiceConfigs(); - if (serviceConfigs != null && !serviceConfigs.isEmpty()) { - for (HaServiceConfig config : serviceConfigs) { - Element serviceElement = document.createElement(SERVICE_ELEMENT); - serviceElement.setAttribute(SERVICE_NAME_ATTRIBUTE, config.getServiceName()); - serviceElement.setAttribute(MAX_FAILOVER_ATTEMPTS, Integer.toString(config.getMaxFailoverAttempts())); - serviceElement.setAttribute(FAILOVER_SLEEP, Integer.toString(config.getFailoverSleep())); - serviceElement.setAttribute(MAX_RETRY_ATTEMPTS, Integer.toString(config.getMaxRetryAttempts())); - serviceElement.setAttribute(RETRY_SLEEP, Integer.toString(config.getRetrySleep())); - serviceElement.setAttribute(ENABLED_ATTRIBUTE, Boolean.toString(config.isEnabled())); - if (config.getZookeeperEnsemble() != null) { - serviceElement.setAttribute(ZOOKEEPER_ENSEMBLE, config.getZookeeperEnsemble()); - } - if (config.getZookeeperNamespace() != null) { - serviceElement.setAttribute(ZOOKEEPER_NAMESPACE, config.getZookeeperNamespace()); - } - root.appendChild(serviceElement); - } - } - - Transformer t = XmlUtils.getTransformer( true, true, 2, false ); - XmlUtils.writeXml( document, writer, t ); - } catch (ParserConfigurationException e) { - LOG.failedToWriteHaDescriptor(e); - throw new IOException(e); - } catch (TransformerException e) { - LOG.failedToWriteHaDescriptor(e); - throw new IOException(e); - } - } - - public static HaDescriptor load(InputStream inputStream) throws IOException { - HaDescriptor descriptor = HaDescriptorFactory.createDescriptor(); - try { - Document document = XmlUtils.readXml( inputStream ); - NodeList nodeList = document.getElementsByTagName(SERVICE_ELEMENT); - if (nodeList != null && nodeList.getLength() > 0) { - for (int i = 0; i < nodeList.getLength(); i++) { - Element element = (Element) nodeList.item(i); - HaServiceConfig config = HaDescriptorFactory.createServiceConfig(element.getAttribute(SERVICE_NAME_ATTRIBUTE), - element.getAttribute(ENABLED_ATTRIBUTE), - element.getAttribute(MAX_FAILOVER_ATTEMPTS), - element.getAttribute(FAILOVER_SLEEP), - element.getAttribute(MAX_RETRY_ATTEMPTS), - element.getAttribute(RETRY_SLEEP), - element.getAttribute(ZOOKEEPER_ENSEMBLE), - element.getAttribute(ZOOKEEPER_NAMESPACE)); - descriptor.addServiceConfig(config); - } - } - } catch (ParserConfigurationException e) { - LOG.failedToLoadHaDescriptor(e); - throw new IOException(e); - } catch (SAXException e) { - LOG.failedToLoadHaDescriptor(e); - throw new IOException(e); - } - return descriptor; - } - -}