http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/FlexClientSettings.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/FlexClientSettings.java b/common/src/flex/messaging/config/FlexClientSettings.java deleted file mode 100644 index bba7e5a..0000000 --- a/common/src/flex/messaging/config/FlexClientSettings.java +++ /dev/null @@ -1,134 +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 flex.messaging.config; - -/** - * - */ -public class FlexClientSettings extends PropertiesSettings -{ - //-------------------------------------------------------------------------- - // - // Constructor - // - //-------------------------------------------------------------------------- - - /** - * Constructs a FlexClientSettings instance. - */ - public FlexClientSettings() - { - // Empty for now. - } - - //-------------------------------------------------------------------------- - // - // Properties - // - //-------------------------------------------------------------------------- - - private long timeoutMinutes = -1; - - /** - * Returns the number of minutes before an idle FlexClient is timed out. - * - * @return The number of minutes before an idle FlexClient is timed out. - */ - public long getTimeoutMinutes() - { - return timeoutMinutes; - } - - /** - * Sets the number of minutes before an idle FlexClient is timed out. - * - * @param value The number of minutes before an idle FlexClient is timed out. - */ - public void setTimeoutMinutes(long value) - { - timeoutMinutes = value; - } - - private String flexClientOutboundQueueProcessorClassName; - - /** - * Returns the name of the default <code>FlexClientOutboundQueueProcessorClass</code>. - * - * @return The the name of the default <code>FlexClientOutboundQueueProcessorClass</code>. - */ - public String getFlexClientOutboundQueueProcessorClassName() - { - return flexClientOutboundQueueProcessorClassName; - } - - /** - * Sets the name of the default <code>FlexClientOutboundQueueProcessor</code>. - * - * @param flexClientOutboundQueueProcessorClassName The name of the default <code>FlexClientOutboundQueueProcessor</code>. - */ - public void setFlexClientOutboundQueueProcessorClassName(String flexClientOutboundQueueProcessorClassName) - { - this.flexClientOutboundQueueProcessorClassName = flexClientOutboundQueueProcessorClassName; - } - - private ConfigMap flexClientOutboundQueueProcessorProperties; - - /** - * Returns the properties for the default <code>FlexClientOutboundQueueProcessor</code>. - * - * @return The properties for the default <code>FlexClientOutboundQueueProcessor</code>. - */ - public ConfigMap getFlexClientOutboundQueueProcessorProperties() - { - return flexClientOutboundQueueProcessorProperties; - } - - /** - * Sets the properties for the default <code>FlexClientOutboundQueueProcessor</code>. - * - * @param flexClientOutboundQueueProcessorProperties properties for the default - * <code>FlexClientOutboundQueueProcessor</code> - */ - public void setFlexClientOutboundQueueProcessorProperties(ConfigMap flexClientOutboundQueueProcessorProperties) - { - this.flexClientOutboundQueueProcessorProperties = flexClientOutboundQueueProcessorProperties; - } - - private int reliableReconnectDurationMillis; - - public int getReliableReconnectDurationMillis() - { - return reliableReconnectDurationMillis; - } - - public void setReliableReconnectDurationMillis(int value) - { - reliableReconnectDurationMillis = value; - } - - private int heartbeatIntervalMillis; - - public int getHeartbeatIntervalMillis() - { - return heartbeatIntervalMillis; - } - - public void setHeartbeatIntervalMillis(int value) - { - heartbeatIntervalMillis = value; - } -}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/LocalFileResolver.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/LocalFileResolver.java b/common/src/flex/messaging/config/LocalFileResolver.java deleted file mode 100644 index 04b623b..0000000 --- a/common/src/flex/messaging/config/LocalFileResolver.java +++ /dev/null @@ -1,203 +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 flex.messaging.config; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FilenameFilter; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Stack; - -/** - * - */ -public class LocalFileResolver implements ConfigurationFileResolver -{ - public static final int CLIENT = 0; - public static final int SERVER = 1; - public static final int LIVECYCLE = 2; - - private static final int ERR_MSG_INVALID_PATH_CLIENT = 11106; - private static final int ERR_MSG_INVALID_PATH_SERVER = 11108; - private static final int ERR_MSG_INVALID_PATH_LIVECYCLE = 11122; - - private Stack configurationPathStack = new Stack(); - int version = CLIENT; - - public LocalFileResolver() - { - } - - public LocalFileResolver(int version) - { - this.version = version; - } - - public void setErrorMessage(ConfigurationException e, String path) - { - if (version == LIVECYCLE) - { - // Invalid location: ''{0}''. Please specify a valid LiveCycle Data Services Configuration file via the LiveCycle Admin UI. - e.setMessage(ERR_MSG_INVALID_PATH_LIVECYCLE, new Object[] {path}); - } - else if (version == SERVER) - { - // Please specify a valid ''services.configuration.file'' in web.xml. You specified ''{0}''. This is not a valid file system path reachable via the app server and is also not a path to a resource in your J2EE application archive. - e.setMessage(ERR_MSG_INVALID_PATH_SERVER, new Object[]{path}); - } - else - { - // Please specify a valid <services/> file path in flex-config.xml. - e.setMessage(ERR_MSG_INVALID_PATH_CLIENT); - } - } - - public InputStream getConfigurationFile(String path) - { - File f = new File(path); - try - { - if (f != null && f.exists() && f.isAbsolute()) - { - FileInputStream fin = new FileInputStream(f); - pushConfigurationFile(f.getParent()); - return fin; - } - else - { - ConfigurationException e = new ConfigurationException(); - setErrorMessage(e, path); - throw e; - } - } - catch (FileNotFoundException ex) - { - ConfigurationException e = new ConfigurationException(); - setErrorMessage(e, path); - e.setRootCause(ex); - throw e; - } - catch (SecurityException se) - { - ConfigurationException e = new ConfigurationException(); - setErrorMessage(e, path); - e.setRootCause(se); - throw e; - } - } - - public InputStream getIncludedFile(String src) - { - String path = configurationPathStack.peek() + File.separator + src; - File f = new File(path); - try - { - if (f != null && f.exists() && f.isAbsolute()) - { - FileInputStream fin = new FileInputStream(f); - pushConfigurationFile(f.getParent()); - return fin; - } - else - { - // Please specify a valid include file. ''{0}'' is invalid. - ConfigurationException e = new ConfigurationException(); - e.setMessage(11107, new Object[] {path}); - throw e; - } - } - catch (FileNotFoundException ex) - { - // Please specify a valid include file. ''{0}'' is invalid. - ConfigurationException e = new ConfigurationException(); - e.setMessage(11107, new Object[] {path}); - e.setRootCause(ex); - throw e; - } - catch (SecurityException se) - { - // Please specify a valid include file. ''{0}'' is invalid. - ConfigurationException e = new ConfigurationException(); - e.setMessage(11107, new Object[] {path}); - e.setRootCause(se); - throw e; - } - } - - public void popIncludedFile() - { - configurationPathStack.pop(); - } - - /** - * Returns the list of XML files (denoted by .xml extension) in the directory - * relative to the current configuration file. - * - * @param dir a directory relative to the current configuration file - * @return a (possibly empty) list of file names - */ - public List getFiles(String dir) - { - List result = new ArrayList(); - File f = new File(configurationPathStack.peek().toString(), dir); - if (f.exists() && f.isDirectory()) - { - String[] xmlFiles = f.list(new FilenameFilter() - { - public boolean accept(File dir, String name) - { - return name.endsWith(".xml"); - } - }); - - // prepend the directory to each filename - for (int i = 0; i < xmlFiles.length; i++) - { - String file = xmlFiles[i]; - result.add(dir + File.separator + file); - } - return result; - } - else - { - // Please specify a valid include directory. ''{0}'' is invalid. - ConfigurationException e = new ConfigurationException(); - e.setMessage(11113, new Object[]{dir}); - throw e; - } - } - - private void pushConfigurationFile(String topLevelPath) - { - configurationPathStack.push(topLevelPath); - } - - public String getIncludedPath(String src) - { - return configurationPathStack.peek() + File.separator + src; - } - - public long getIncludedLastModified(String src) - { - String path = configurationPathStack.peek() + File.separator + src; - File f = new File(path); - return f.lastModified(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/LoggingSettings.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/LoggingSettings.java b/common/src/flex/messaging/config/LoggingSettings.java deleted file mode 100644 index 5fe26e1..0000000 --- a/common/src/flex/messaging/config/LoggingSettings.java +++ /dev/null @@ -1,46 +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 flex.messaging.config; - -import java.util.List; -import java.util.ArrayList; - -/** - * A log maintains a series of Loggers for each logging category and - * Targets are established that listen for LogEvents on those Loggers. - * - * - */ -public class LoggingSettings extends PropertiesSettings -{ - private final List targets; - - public LoggingSettings() - { - targets = new ArrayList(); - } - - public void addTarget(TargetSettings t) - { - targets.add(t); - } - - public List getTargets() - { - return targets; - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/LoginCommandSettings.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/LoginCommandSettings.java b/common/src/flex/messaging/config/LoginCommandSettings.java deleted file mode 100644 index 2cc0ccd..0000000 --- a/common/src/flex/messaging/config/LoginCommandSettings.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 - * - * 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 flex.messaging.config; - -/** - * Settings for <code>LoginCommand</code> class. - * - * - */ -public class LoginCommandSettings -{ - public static final String SERVER_MATCH_OVERRIDE = "all"; - - private String className; - private String server; - private boolean perClientAuthentication; - - /** - * Create a new <code>LoginCommandSettings</code> instance with default settings. - */ - public LoginCommandSettings() - { - perClientAuthentication = false; - } - - /** - * Returns the class name associated with the settings. - * - * @return The class name. - */ - public String getClassName() - { - return className; - } - - /** - * Sets the class name associated with the settings. - * - * @param className The class name. - */ - public void setClassName(String className) - { - this.className = className; - } - - /** - * Returns the server name associated with the settings. - * - * @return The server name. - */ - public String getServer() - { - return server; - } - - /** - * Sets the server name associated with the settings. - * - * @param server The server name. - */ - public void setServer(String server) - { - this.server = server; - } - - /** - * Returns whether per client authentication is enabled or not. - * - * @return <code>true</code> if per client authentication is enabled; - * otherwise <code>false</code>. - */ - public boolean isPerClientAuthentication() - { - return perClientAuthentication; - } - - /** - * Sets whether per client authentication is enabled or not. - * - * @param perClientAuthentication <code>true</code> if per client authentication - * is enabled; otherwise <code>false</code>. - */ - public void setPerClientAuthentication(boolean perClientAuthentication) - { - this.perClientAuthentication = perClientAuthentication; - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/PropertiesSettings.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/PropertiesSettings.java b/common/src/flex/messaging/config/PropertiesSettings.java deleted file mode 100644 index 4fa0a83..0000000 --- a/common/src/flex/messaging/config/PropertiesSettings.java +++ /dev/null @@ -1,99 +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 flex.messaging.config; - -import java.util.List; - -/** - * Holds any child element of the properties section of the services configuration. - * <p> - * If a property is a simple element with a text value then it is stored as a String - * using the element name as the property name. If the same element appears again then - * the element is converted to a List of values and further occurences are simply added - * to the List. - * </p> - * <p> - * If a property element has child elements the children are recursively processed - * and added as a Map. - * </p> - * - * - */ -public abstract class PropertiesSettings -{ - protected final ConfigMap properties; - - public PropertiesSettings() - { - properties = new ConfigMap(); - } - - public final void addProperties(ConfigMap p) - { - properties.addProperties(p); - } - - public ConfigMap getProperties() - { - return properties; - } - - public final String getProperty(String name) - { - return getPropertyAsString(name, null); - } - - public final void addProperty(String name, String value) - { - properties.addProperty(name, value); - } - - public final void addProperty(String name, ConfigMap value) - { - properties.addProperty(name, value); - } - - public final ConfigMap getPropertyAsMap(String name, ConfigMap defaultValue) - { - return properties.getPropertyAsMap(name, defaultValue); - } - - public final String getPropertyAsString(String name, String defaultValue) - { - return properties.getPropertyAsString(name, defaultValue); - } - - public final List getPropertyAsList(String name, List defaultValue) - { - return properties.getPropertyAsList(name, defaultValue); - } - - public final int getPropertyAsInt(String name, int defaultValue) - { - return properties.getPropertyAsInt(name, defaultValue); - } - - public final boolean getPropertyAsBoolean(String name, boolean defaultValue) - { - return properties.getPropertyAsBoolean(name, defaultValue); - } - - public final long getPropertyAsLong(String name, long defaultValue) - { - return properties.getPropertyAsLong(name, defaultValue); - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/SecurityConstraint.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/SecurityConstraint.java b/common/src/flex/messaging/config/SecurityConstraint.java deleted file mode 100644 index 0b7638b..0000000 --- a/common/src/flex/messaging/config/SecurityConstraint.java +++ /dev/null @@ -1,123 +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 flex.messaging.config; - -import java.util.ArrayList; -import java.util.List; - -/** - * Security constraints are used by the login manager to secure access to - * destinations and endpoints. - */ -public class SecurityConstraint -{ - /** - * String constant for basic authentication. - */ - public static final String BASIC_AUTH_METHOD = "Basic"; - - /** - * String constant for custom authentication. - */ - public static final String CUSTOM_AUTH_METHOD = "Custom"; - - private final String id; - private String method; - private List roles; - - /** - * Creates an anonymous <code>SecurityConstraint</code> instance. - */ - public SecurityConstraint() - { - this(null); - } - - /** - * Creates a <code>SecurityConstraint</code> instance with an id. - * - * @param id The id of the <code>SecurityConstraint</code> instance. - */ - public SecurityConstraint(String id) - { - this.id = id; - method = CUSTOM_AUTH_METHOD; - } - - /** - * Returns a list of roles of the <code>SecurityConstraint</code>. - * - * @return List of roles. - */ - public List getRoles() - { - return roles; - } - - /** - * Adds a role to the list of roles of the <code>SecurityConstraint</code>. - * - * @param role New role to add to the list of roles. - */ - public void addRole(String role) - { - if (role == null) - return; - - if (roles == null) - roles = new ArrayList(); - - roles.add(role); - } - - /** - * Returns the id of the <code>SecurityConstraint</code>. - * - * @return The id of the <code>SecurityConstraint</code>. - */ - public String getId() - { - return id; - } - - /** - * Returns the authorization method of the <code>SecurityConstraint</code>. - * - * @return Authorization method. - */ - public String getMethod() - { - return method; - } - - /** - * Sets the authorization method of the <code>SecurityConstraint</code>. - * Valid values are Basic and Custom. - * - * @param method The authentication method to set which can be custom or basic. - */ - public void setMethod(String method) - { - if (method == null) - return; - - if (CUSTOM_AUTH_METHOD.equalsIgnoreCase(method)) - this.method = CUSTOM_AUTH_METHOD; - else if (BASIC_AUTH_METHOD.equalsIgnoreCase(method)) - this.method = BASIC_AUTH_METHOD; - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/ServiceSettings.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/ServiceSettings.java b/common/src/flex/messaging/config/ServiceSettings.java deleted file mode 100644 index 44d95b5..0000000 --- a/common/src/flex/messaging/config/ServiceSettings.java +++ /dev/null @@ -1,165 +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 flex.messaging.config; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * A service represents a high-level grouping of - * functionality to which the message broker can - * delegate messages. Services specify which - * message types they're interested in and use - * adapters to carry out a message's for a - * destination. - * <p> - * A service maintains a list of destinations which - * effectively represents a "whitelist" - * of actions allowed by that service. - * </p> - * - * - */ -public class ServiceSettings extends PropertiesSettings -{ - private final String id; - private String sourceFile; - private String className; - - private AdapterSettings defaultAdapterSettings; - private final Map adapterSettings; - private final List defaultChannels; - private final Map destinationSettings; - private SecurityConstraint securityConstraint; - - public ServiceSettings(String id) - { - this.id = id; - destinationSettings = new HashMap(); - adapterSettings = new HashMap(2); - defaultChannels = new ArrayList(4); - } - - public String getId() - { - return id; - } - - String getSourceFile() - { - return sourceFile; - } - - void setSourceFile(String sourceFile) - { - this.sourceFile = sourceFile; - } - - public String getClassName() - { - return className; - } - - public void setClassName(String name) - { - className = name; - } - - /* - * SERVER ADAPTERS - */ - public AdapterSettings getDefaultAdapter() - { - return defaultAdapterSettings; - } - - public AdapterSettings getAdapterSettings(String id) - { - return (AdapterSettings)adapterSettings.get(id); - } - - public Map getAllAdapterSettings() - { - return adapterSettings; - } - - public void addAdapterSettings(AdapterSettings a) - { - adapterSettings.put(a.getId(), a); - if (a.isDefault()) - { - defaultAdapterSettings = a; - } - } - - /* - * DEFAULT CHANNELS - */ - public void addDefaultChannel(ChannelSettings c) - { - defaultChannels.add(c); - } - - public List getDefaultChannels() - { - return defaultChannels; - } - - /* - * DEFAULT SECURITY - */ - - /** - * Gets the <code>SecurityConstraint</code> that will be applied to all - * destinations of the service, or <code>null</code> if no constraint has - * been registered. - * - * @return the <code>SecurityConstraint</code> for this service. - */ - public SecurityConstraint getConstraint() - { - return securityConstraint; - } - - /** - * Sets the security constraint to be applied to all destinations of the service. - * Security constraints restrict which clients can contact this destination. Use - * <code>null</code> to remove an existing constraint. - * - * @param sc the <code>SecurityConstraint</code> to apply to this - * service. - */ - public void setConstraint(SecurityConstraint sc) - { - securityConstraint = sc; - } - - /* - * DESTINATIONS - */ - public Map getDestinationSettings() - { - return destinationSettings; - } - - public void addDestinationSettings(DestinationSettings dest) - { - destinationSettings.put(dest.getId(), dest); - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/ServicesConfiguration.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/ServicesConfiguration.java b/common/src/flex/messaging/config/ServicesConfiguration.java deleted file mode 100644 index 561d75b..0000000 --- a/common/src/flex/messaging/config/ServicesConfiguration.java +++ /dev/null @@ -1,70 +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 flex.messaging.config; - -import java.util.List; -import java.util.Map; - -/** - * Base interface for Flex Data Services configuration. - * - * Implementations may have different levels of detail - * based on how much of the configuration is supported. - * - * - */ -public interface ServicesConfiguration -{ - /* - * CHANNEL CONFIGURATION - */ - - void addChannelSettings(String id, ChannelSettings settings); - - ChannelSettings getChannelSettings(String ref); - - Map getAllChannelSettings(); - - /* - * DEFAULT CHANNELS CONFIGURATION - */ - void addDefaultChannel(String id); - - List getDefaultChannels(); - - /* - * SERVICE CONFIGURATION - */ - - void addServiceSettings(ServiceSettings settings); - - ServiceSettings getServiceSettings(String id); - - List getAllServiceSettings(); - - /* - * LOGGING CONFIGURATION - */ - void setLoggingSettings(LoggingSettings settings); - - LoggingSettings getLoggingSettings(); - - /* CLUSTER CONFIGURATION */ - ClusterSettings getClusterSettings(String clusterId); - - ClusterSettings getDefaultCluster(); -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/ServicesDependencies.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/ServicesDependencies.java b/common/src/flex/messaging/config/ServicesDependencies.java deleted file mode 100644 index 92b7c34..0000000 --- a/common/src/flex/messaging/config/ServicesDependencies.java +++ /dev/null @@ -1,747 +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 flex.messaging.config; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Map; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import flex.messaging.LocalizedException; - -/** - * Flex MXMLC compiler uses the result of the client configuration parser - * to generate mixin initialization source code to be added to the SWF by - * PreLink. It also requires a list of channel classes to be added as - * dependencies. - * - * - */ -public class ServicesDependencies -{ - private static final String ADVANCED_CHANNELSET_CLASS = "mx.messaging.AdvancedChannelSet"; - private static final String ADVANCED_MESSAGING_SUPPORT_CLASS = "flex.messaging.services.AdvancedMessagingSupport"; - private static final String REDIRECT_URL = "redirect-url"; - - private boolean containsClientLoadBalancing; - private String xmlInit = ""; - private StringBuffer imports = new StringBuffer(); - private StringBuffer references = new StringBuffer(); - private List channelClasses; - private Map configPaths; - private Map lazyAssociations; - - private static final List channel_excludes = new ArrayList(); - static - { - channel_excludes.add(REDIRECT_URL); - } - - public static final boolean traceConfig = (System.getProperty("trace.config") != null); - - public ServicesDependencies(String path, String parserClass, String contextRoot) - { - ClientConfiguration config = getClientConfiguration(path, parserClass); - - if (config != null) - { - Map importMap = new HashMap(); - lazyAssociations = new HashMap(); - configPaths = config.getConfigPaths(); - xmlInit = codegenXmlInit(config, contextRoot, importMap); - codegenServiceImportsAndReferences(importMap, imports, references); - channelClasses = listChannelClasses(config); - } - } - - public Set getLazyAssociations(String destination) - { - if (lazyAssociations == null) - { - lazyAssociations = new HashMap(); - } - - return (Set)lazyAssociations.get(destination); - } - - public void addLazyAssociation(String destination, String associationProp) - { - Set la = getLazyAssociations(destination); - if (la == null) - { - la = new HashSet(); - lazyAssociations.put(destination, la); - } - la.add(associationProp); - } - - public String getServerConfigXmlInit() - { - return xmlInit; - } - - public String getImports() - { - return imports.toString(); - } - - public String getReferences() - { - return references.toString(); - } - - public List getChannelClasses() - { - return channelClasses; - } - - public void addChannelClass(String className) - { - channelClasses.add(className); - } - - public void addConfigPath(String path, long modified) - { - configPaths.put(path, new Long(modified)); - } - - public Map getConfigPaths() - { - return configPaths; - } - - /** - * Gets ActionScript source file for a class. The class will be compiled as - * a mixin and initialize Flex at runtime. - * - * @param packageName - the package compiled into the generated source. - * @param className - the class name of the generated source. - * @return A String that represents an ActionScript Source file. - */ - public String getServicesInitSource(String packageName, String className) - { - StringBuilder sb = new StringBuilder(2048); - - sb.append("package ").append(packageName).append("\n"); - sb.append("{\n\n"); - sb.append("import mx.core.IFlexModuleFactory;\n"); - sb.append("import flash.net.registerClassAlias;\n"); - sb.append("import flash.net.getClassByAlias;\n"); - - // generated imports - sb.append(getImports()); - - sb.append("\n[Mixin]\n"); - sb.append("public class ").append(className).append("\n"); - sb.append("{\n"); - sb.append(" public function ").append(className).append("()\n"); - sb.append(" {\n"); - sb.append(" super();\n"); - sb.append(" }\n\n"); - sb.append(" public static function init(fbs:IFlexModuleFactory):void\n"); - sb.append(" {\n"); - - // code for init - sb.append(getServerConfigXmlInit()); - sb.append(" }\n\n"); - - // generated variables to create references - sb.append(getReferences()); - sb.append("}\n"); - sb.append("}\n"); - - return sb.toString(); - } - - public static ClientConfiguration getClientConfiguration(String path, String parserClass) - { - ClientConfiguration config = new ClientConfiguration(); - - ConfigurationParser parser = getConfigurationParser(parserClass); - - if (parser == null) - { - // "Unable to create a parser to load messaging configuration." - LocalizedException lme = new LocalizedException(); - lme.setMessage(10138); - throw lme; - } - - LocalFileResolver local = new LocalFileResolver(); - parser.parse(path, local, config); - - config.addConfigPath(path, new File(path).lastModified()); - - return config; - } - - static ConfigurationParser getConfigurationParser(String className) - { - ConfigurationParser parser = null; - Class parserClass = null; - - // Check for Custom Parser Specification - if (className != null) - { - try - { - parserClass = Class.forName(className); - parser = (ConfigurationParser)parserClass.newInstance(); - } - catch (Throwable t) - { - if (traceConfig) - { - System.out.println("Could not load services configuration parser as: " + className); - } - } - } - - // Try Sun JRE 1.4 / Apache Xalan Based Implementation - if (parser == null) - { - try - { - Class.forName("org.apache.xpath.CachedXPathAPI"); - className = "flex.messaging.config.ApacheXPathClientConfigurationParser"; - parserClass = Class.forName(className); - parser = (ConfigurationParser)parserClass.newInstance(); - } - catch (Throwable t) - { - if (traceConfig) - { - System.out.println("Could not load configuration parser as: " + className); - } - } - } - - // Try Sun JRE 1.5 Based Implementation - if (parser == null) - { - try - { - className = "flex.messaging.config.XPathClientConfigurationParser"; - parserClass = Class.forName(className); - // double-check, on some systems the above loads but the import classes don't - Class.forName("javax.xml.xpath.XPathExpressionException"); - - parser = (ConfigurationParser)parserClass.newInstance(); - } - catch (Throwable t) - { - if (traceConfig) - { - System.out.println("Could not load configuration parser as: " + className); - } - } - } - - if (traceConfig && parser != null) - { - System.out.println("Services Configuration Parser: " + parser.getClass().getName()); - } - - return parser; - } - - private static List listChannelClasses(ServicesConfiguration config) - { - List channelList = new ArrayList(); - Iterator it = config.getAllChannelSettings().values().iterator(); - while (it.hasNext()) - { - ChannelSettings settings = (ChannelSettings)it.next(); - if (!settings.serverOnly) - { - String clientType = settings.getClientType(); - channelList.add(clientType); - } - } - - return channelList; - } - - /** - * Emits source code declaration of public var xml:XML (unnamed package), containing ServicesConfiguration as e4x. - */ - private String codegenXmlInit(ServicesConfiguration config, String contextRoot, Map serviceImportMap) - { - StringBuffer e4x = new StringBuffer(); - String channelSetImplToImport = null; - - e4x.append("<services>\n"); - - // Add default channels of the application - if (config.getDefaultChannels().size() > 0) - { - e4x.append("\t<default-channels>\n"); - for (Iterator chanIter = config.getDefaultChannels().iterator(); chanIter.hasNext();) - { - String id = (String)chanIter.next(); - e4x.append("\t\t<channel ref=\"" + id + "\"/>\n"); - } - e4x.append("\t</default-channels>\n"); - } - - ClusterSettings defaultCluster = config.getDefaultCluster(); - // Do not add the cluster tag if the default cluster does not have - // client side load balancing. - if (defaultCluster != null && !defaultCluster.getURLLoadBalancing()) - defaultCluster = null; - - for (Iterator servIter = config.getAllServiceSettings().iterator(); servIter.hasNext();) - { - ServiceSettings entry = (ServiceSettings)servIter.next(); - - // FIXME: Need to find another way to skip BootstrapServices - // Skip services with no message types - /* - String messageTypes = entry.getMessageTypesString(); - if (messageTypes == null) - continue; - */ - - String serviceType = entry.getId(); - e4x.append("\t<service id=\""); - e4x.append(serviceType); - e4x.append("\""); - e4x.append(">\n"); - - String serviceClass = entry.getClassName(); - if (ADVANCED_MESSAGING_SUPPORT_CLASS.equals(serviceClass)) - channelSetImplToImport = ADVANCED_CHANNELSET_CLASS; - - String useTransactionsStr = entry.getProperties().getPropertyAsString("use-transactions", null); - if (useTransactionsStr != null) - { - e4x.append("\t\t<properties>\n\t\t\t<use-transactions>" + useTransactionsStr + "</use-transactions>\n"); - e4x.append("\t\t</properties>\n"); - } - - for (Iterator destIter = entry.getDestinationSettings().values().iterator(); destIter.hasNext();) - { - DestinationSettings dest = (DestinationSettings) destIter.next(); - String destination = dest.getId(); - e4x.append("\t\t<destination id=\"" + destination + "\">\n"); - - // add in the identity properties - ConfigMap metadata = dest.getProperties().getPropertyAsMap("metadata", null); - boolean closePropTag = false; - if (metadata != null) - { - e4x.append("\t\t\t<properties>\n\t\t\t\t<metadata\n"); - String extendsStr = metadata.getPropertyAsString("extends", null); - if (extendsStr != null) - { - e4x.append(" extends=\""); - e4x.append(extendsStr); - e4x.append("\""); - } - e4x.append(">"); - closePropTag = true; - List identities = metadata.getPropertyAsList("identity", null); - if (identities != null) - { - Iterator it = identities.iterator(); - while (it.hasNext()) - { - Object o = it.next(); - String identityName = null; - String undefinedValue = null; - if (o instanceof String) - { - identityName = (String) o; - } - else if (o instanceof ConfigMap) - { - identityName = ((ConfigMap) o).getPropertyAsString("property", null); - undefinedValue = ((ConfigMap) o).getPropertyAsString("undefined-value", null); - } - - if (identityName != null) - { - e4x.append("\t\t\t\t\t<identity property=\""); - e4x.append(identityName); - e4x.append("\""); - if (undefinedValue != null) - { - e4x.append(" undefined-value=\""); - e4x.append(undefinedValue); - e4x.append("\""); - } - e4x.append("/>\n"); - } - } - } - // add associations which reference other data service destinations - codegenServiceAssociations(metadata, e4x, destination, "one-to-many"); - codegenServiceAssociations(metadata, e4x, destination, "many-to-many"); - codegenServiceAssociations(metadata, e4x, destination, "one-to-one"); - codegenServiceAssociations(metadata, e4x, destination, "many-to-one"); - - e4x.append("\t\t\t\t</metadata>\n"); - } - - String itemClass = dest.getProperties().getPropertyAsString("item-class", null); - if (itemClass != null) - { - if (!closePropTag) - { - e4x.append("\t\t\t<properties>\n"); - closePropTag = true; - } - - e4x.append("\t\t\t\t<item-class>"); - e4x.append(itemClass); - e4x.append("</item-class>\n"); - } - - // add in sub-set of network-related destination properties - ConfigMap network = dest.getProperties().getPropertyAsMap("network", null); - ConfigMap clusterInfo = null; - ConfigMap pagingInfo = null; - ConfigMap reconnectInfo = null; - if (network != null || defaultCluster != null) - { - if (!closePropTag) - { - e4x.append("\t\t\t<properties>\n"); - closePropTag = true; - } - e4x.append("\t\t\t\t<network>\n"); - - if (network != null) - pagingInfo = network.getPropertyAsMap("paging", null); - if (pagingInfo != null) - { - String enabled = pagingInfo.getPropertyAsString("enabled", "false"); - e4x.append("\t\t\t\t\t<paging enabled=\""); - e4x.append(enabled); - e4x.append("\""); - // Always put page size even if it is disabled as we can - // end up using this for nested properties with lazy="true". - // supporting pageSize for backwards compatibility but config options are not camelCase in general. - String size = pagingInfo.getPropertyAsString("page-size", pagingInfo.getPropertyAsString("pageSize", null)); - if (size != null) - { - e4x.append(" page-size=\""); - e4x.append(size); - e4x.append("\""); - - // Included so that newer compilers can work with older clients - e4x.append(" pageSize=\""); - e4x.append(size); - e4x.append("\""); - } - e4x.append("/>\n"); - } - - if (network != null) - reconnectInfo = network.getPropertyAsMap("reconnect", null); - if (reconnectInfo != null) - { - String fetchOption = reconnectInfo.getPropertyAsString("fetch", "IDENTITY"); - e4x.append("\t\t\t\t\t<reconnect fetch=\""); - e4x.append(fetchOption.toUpperCase()); - e4x.append("\" />\n"); - } - - if (network != null) - { - String reliable = network.getPropertyAsString("reliable", "false"); - if (Boolean.valueOf(reliable).booleanValue()) // No need the default value for the setting. - { - e4x.append("\t\t\t\t\t<reliable>"); - e4x.append(reliable); - e4x.append("</reliable>\n"); - } - } - - if (network != null) - clusterInfo = network.getPropertyAsMap("cluster", null); - if (clusterInfo != null) - { - String clusterId = clusterInfo.getPropertyAsString("ref", null); - - ClusterSettings clusterSettings = config.getClusterSettings(clusterId); - if (clusterSettings != null && - clusterSettings.getURLLoadBalancing()) - { - e4x.append("\t\t\t\t\t<cluster ref=\""); - e4x.append(clusterId); - e4x.append("\"/>\n"); - } - } - else if (defaultCluster != null) - { - e4x.append("\t\t\t\t\t<cluster"); - if (defaultCluster.getClusterName() != null) - { - e4x.append(" ref=\""); - e4x.append(defaultCluster.getClusterName()); - e4x.append("\""); - } - e4x.append("/>\n"); - } - e4x.append("\t\t\t\t</network>\n"); - } - - String useTransactions = dest.getProperties().getPropertyAsString("use-transactions", null); - - if (useTransactions !=null) - { - if (!closePropTag) - { - e4x.append("\t\t\t<properties>\n"); - closePropTag = true; - } - e4x.append("\t\t\t\t<use-transactions>" + useTransactions + "</use-transactions>\n"); - } - - String autoSyncEnabled = dest.getProperties().getPropertyAsString("auto-sync-enabled", "true"); - - if (autoSyncEnabled.equalsIgnoreCase("false")) - { - if (!closePropTag) - { - e4x.append("\t\t\t<properties>\n"); - closePropTag = true; - } - e4x.append("\t\t\t\t<auto-sync-enabled>false</auto-sync-enabled>\n"); - } - - if (closePropTag) - { - e4x.append("\t\t\t</properties>\n"); - } - - e4x.append("\t\t\t<channels>\n"); - for (Iterator chanIter = dest.getChannelSettings().iterator(); chanIter.hasNext();) - { - e4x.append("\t\t\t\t<channel ref=\"" + ((ChannelSettings) chanIter.next()).getId() + "\"/>\n"); - } - e4x.append("\t\t\t</channels>\n"); - e4x.append("\t\t</destination>\n"); - } - e4x.append("\t</service>\n"); - } - // channels - e4x.append("\t<channels>\n"); - String channelType; - for (Iterator chanIter = config.getAllChannelSettings().values().iterator(); chanIter.hasNext();) - { - ChannelSettings chan = (ChannelSettings) chanIter.next(); - if (chan.getServerOnly()) // Skip server-only channels. - continue; - channelType = chan.getClientType(); - serviceImportMap.put(channelType, channelType); - e4x.append("\t\t<channel id=\"" + chan.getId() + "\" type=\"" + channelType + "\">\n"); - StringBuffer channelProps = new StringBuffer(); - containsClientLoadBalancing = false; - channelProperties(chan.getProperties(), channelProps, "\t\t\t\t"); - if (!containsClientLoadBalancing) // Add the uri, only when there is no client-load-balancing defined. - e4x.append("\t\t\t<endpoint uri=\"" + chan.getClientParsedUri(contextRoot) + "\"/>\n"); - containsClientLoadBalancing = false; - e4x.append("\t\t\t<properties>\n"); - e4x.append(channelProps); - e4x.append("\t\t\t</properties>\n"); - e4x.append("\t\t</channel>\n"); - } - e4x.append("\t</channels>\n"); - FlexClientSettings flexClientSettings = (config instanceof ClientConfiguration) ? ((ClientConfiguration)config).getFlexClientSettings() : null; - if (flexClientSettings != null && flexClientSettings.getHeartbeatIntervalMillis() > 0) - { - e4x.append("\t<flex-client>\n"); - e4x.append("\t\t<heartbeat-interval-millis>"); - e4x.append(flexClientSettings.getHeartbeatIntervalMillis()); - e4x.append("</heartbeat-interval-millis>"); - e4x.append("\t</flex-client>\n"); - } - e4x.append("</services>"); - - StringBuffer advancedMessagingSupport = new StringBuffer(); - if (channelSetImplToImport != null) - { - serviceImportMap.put("ChannelSetImpl", channelSetImplToImport); - - // Codegen same class alias registration as is done by flex2.tools.Prelink#codegenRemoteClassAliases(Map<String,String>). - // This codegen isn't processed by PreLink. - String alias = "flex.messaging.messages.ReliabilityMessage"; - String className = "mx.messaging.messages.ReliabilityMessage"; - advancedMessagingSupport.append(" ServerConfig.channelSetFactory = AdvancedChannelSet;\n"); - advancedMessagingSupport.append(" try {\n"); - advancedMessagingSupport.append(" if (flash.net.getClassByAlias(\"" + alias + "\") == null){\n"); - advancedMessagingSupport.append(" flash.net.registerClassAlias(\"" + alias + "\", " + className + ");}\n"); - advancedMessagingSupport.append(" } catch (e:Error) {\n"); - advancedMessagingSupport.append(" flash.net.registerClassAlias(\"" + alias + "\", " + className + "); }\n"); - if (flexClientSettings != null && flexClientSettings.getReliableReconnectDurationMillis() > 0) - { - advancedMessagingSupport.append(" AdvancedChannelSet.reliableReconnectDuration ="); - advancedMessagingSupport.append(flexClientSettings.getReliableReconnectDurationMillis()); - advancedMessagingSupport.append(";\n"); - } - } - String generatedChunk = "\n ServerConfig.xml =\n" + e4x.toString() + ";\n" + advancedMessagingSupport.toString(); - - return generatedChunk; - } - - /** - * Process channel properties recursively. - */ - private void channelProperties(ConfigMap properties, StringBuffer buf, String indent) - { - for (Iterator nameIter = properties.propertyNames().iterator(); nameIter.hasNext();) - { - String name = (String)nameIter.next(); - Object value = properties.get(name); - if (value instanceof String) - { - addStringProperty(buf, indent, name, (String)value); - } - else if (value instanceof List) - { - List children = (List)value; - for (Iterator childrenIter = children.iterator(); childrenIter.hasNext();) - addStringProperty(buf, indent, name, (String)childrenIter.next()); - } - else if (value instanceof ConfigMap) - { - ConfigMap childProperties = (ConfigMap)value; - buf.append(indent); - buf.append("<" + name + ">\n"); - if (ConfigurationConstants.CLIENT_LOAD_BALANCING_ELEMENT.equals(name)) - containsClientLoadBalancing = true; - channelProperties(childProperties, buf, indent + "\t"); - buf.append(indent); - buf.append("</" + name + ">\n"); - } - } - } - - private void addStringProperty(StringBuffer buf, String indent, String name, String value) - { - if (!channel_excludes.contains(name)) - { - buf.append(indent); - buf.append("<" + name + ">" + value + "</" + name + ">\n"); - } - } - - /** - * Analyze code gen service associations. - * @param metadata the ConfigMap object - * @param e4x the buffer object - * @param destination the current destination - * @param relation the relationship - */ - public void codegenServiceAssociations(ConfigMap metadata, StringBuffer e4x, String destination, String relation) - { - List references = metadata.getPropertyAsList(relation, null); - if (references != null) - { - Iterator it = references.iterator(); - while (it.hasNext()) - { - Object ref = it.next(); - if (ref instanceof ConfigMap) - { - ConfigMap refMap = (ConfigMap) ref; - String name = refMap.getPropertyAsString("property", null); - String associatedDestination = refMap.getPropertyAsString("destination", null); - String lazy = refMap.getPropertyAsString("lazy", null); - String loadOnDemand = refMap.getPropertyAsString("load-on-demand", null); - String hierarchicalEvents = refMap.getPropertyAsString("hierarchical-events", null); - String pageSize = refMap.getPropertyAsString("page-size", refMap.getPropertyAsString("pageSize", null)); - String pagedUpdates = refMap.getPropertyAsString("paged-updates", null); - String cascade = refMap.getPropertyAsString("cascade", null); - String ordered = refMap.getPropertyAsString("ordered", null); - e4x.append("\t\t\t\t\t<"); - e4x.append(relation); - if (lazy != null) - { - e4x.append(" lazy=\""); - e4x.append(lazy); - e4x.append("\""); - - if (Boolean.valueOf(lazy.toLowerCase().trim()).booleanValue()) - { - addLazyAssociation(destination, name); - } - } - e4x.append(" property=\""); - e4x.append(name); - e4x.append("\" destination=\""); - e4x.append(associatedDestination); - e4x.append("\""); - String readOnly = refMap.getPropertyAsString("read-only", null); - if (readOnly != null && readOnly.equalsIgnoreCase("true")) - { - e4x.append(" read-only=\"true\""); - } - if (loadOnDemand != null && loadOnDemand.equalsIgnoreCase("true")) - e4x.append(" load-on-demand=\"true\""); - if (hierarchicalEvents != null && hierarchicalEvents.equalsIgnoreCase("true")) - e4x.append(" hierarchical-events=\"true\""); - if (pagedUpdates != null) - e4x.append(" paged-updates=\"" + pagedUpdates + "\""); - if (pageSize != null) - e4x.append(" page-size=\"" + pageSize + "\""); - if (cascade != null) - e4x.append(" cascade=\"" + cascade + "\""); - if (ordered != null) - e4x.append(" ordered=\"" + ordered + "\""); - e4x.append("/>\n"); - } - } - } - } - - /** - * This method will return an import and variable reference for channels specified in the map. - * @param map HashMap containing the client side channel type to be used, typically of the form - * "mx.messaging.channels.XXXXChannel", where the key and value are equal. - * @param imports StringBuffer of the imports needed for the given channel definitions - * @param references StringBuffer of the required references so that these classes will be linked in. - */ - public static void codegenServiceImportsAndReferences(Map map, StringBuffer imports, StringBuffer references) - { - String channelSetImplType = (String)map.remove("ChannelSetImpl"); - String type; - imports.append("import mx.messaging.config.ServerConfig;\n"); - references.append(" // static references for configured channels\n"); - for (Iterator chanIter = map.values().iterator(); chanIter.hasNext();) - { - type = (String)chanIter.next(); - imports.append("import "); - imports.append(type); - imports.append(";\n"); - references.append(" private static var "); - references.append(type.replace('.', '_')); - references.append("_ref:"); - references.append(type.substring(type.lastIndexOf(".") +1) +";\n"); - } - if (channelSetImplType != null) - imports.append("import mx.messaging.AdvancedChannelSet;\nimport mx.messaging.messages.ReliabilityMessage;\n"); - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/TargetSettings.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/TargetSettings.java b/common/src/flex/messaging/config/TargetSettings.java deleted file mode 100644 index 3bbbf4d..0000000 --- a/common/src/flex/messaging/config/TargetSettings.java +++ /dev/null @@ -1,78 +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 flex.messaging.config; - -import java.util.List; -import java.util.ArrayList; - -import flex.messaging.log.LogCategories; - -/** - * A logging target must specify the class name - * of the implementation, the level of logging events - * it will accept, a list of filters for logging - * categories it is interested in, and a collection of - * properties required to initialize the target. - * - * - */ -public class TargetSettings extends PropertiesSettings -{ - private String className; - private String level; - private List filters; - - public TargetSettings(String className) - { - this.className = className; - } - - public String getClassName() - { - return className; - } - - public String getLevel() - { - return level; - } - - public void setLevel(String level) - { - this.level = level; - } - - public List getFilters() - { - return filters; - } - - public void addFilter(String filter) - { - if (filters == null) - filters = new ArrayList(); - - // Replace DataService with Service.Data for backwards compatibility, - // excluding DataService.coldfusion. - if (filter.startsWith("DataService") && !filter.equals("DataService.coldfusion")) - filter = filter.replaceFirst("DataService", LogCategories.SERVICE_DATA); - - filters.add(filter); - } - - -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/TokenReplacer.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/TokenReplacer.java b/common/src/flex/messaging/config/TokenReplacer.java deleted file mode 100644 index 90c4fd0..0000000 --- a/common/src/flex/messaging/config/TokenReplacer.java +++ /dev/null @@ -1,202 +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 flex.messaging.config; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.w3c.dom.Node; -import org.w3c.dom.Text; - -import flex.messaging.log.Log; -import flex.messaging.log.LogCategories; -import flex.messaging.util.StringUtils; - -/** - * This class is used by configuration parser to replace tokens of the format - * {...} with actual values. The value can either come from a JVM property - * (eg. -Dmy.channel.id=my-amf) or from a token properties file specified via - * token.file JVM property (eg. -Dtoken.file=/usr/local/tokens.properties) where - * the token key and value are specified in the property file. - * - * If a token value is both specified as a JVM property and inside the token.file, - * JVM property takes precedence. - * - * - */ -public class TokenReplacer -{ - private static final String TOKEN_FILE = "token.file"; - private static final Pattern pattern = Pattern.compile("\\{(.*?)\\}"); - - private final Map replacedTokens; - private Properties tokenProperties; - private String tokenPropertiesFilename; - - /** - * Default constructor. - */ - public TokenReplacer() - { - replacedTokens = new LinkedHashMap(); - loadTokenProperties(); - } - - /** - * Replace any tokens in the value of the node or the text child of the node. - * - * @param node The node whose value will be searched for tokens. - * @param sourceFileName The source file where the node came from. - */ - public void replaceToken(Node node, String sourceFileName) - { - // Exit if we are attempting to replace one of the forbidden nodes - nodes - // that may have curly brackets as part of their syntax - if (ConfigurationConstants.IP_ADDRESS_PATTERN.equals(node.getNodeName())) - return; - - // ReplacementNode is either the original node if it has a value or the text - // child of the node if it does not have a value - Node replacementNode; - if (node.getNodeValue() == null) - { - if (node.getChildNodes().getLength() == 1 && node.getFirstChild() instanceof Text) - replacementNode = node.getFirstChild(); - else - return; - } - else - { - replacementNode = node; - } - - String nodeValue = replacementNode.getNodeValue(); - Matcher matcher = pattern.matcher(nodeValue); - while (matcher.find()) // Means the node value has token(s) - { - String tokenWithCurlyBraces = matcher.group(); - String tokenWithoutCurlyBraces = matcher.group(1); - String propertyValue = getPropertyValue(tokenWithoutCurlyBraces); - if (propertyValue != null) - { - nodeValue = StringUtils.substitute(nodeValue, tokenWithCurlyBraces, propertyValue); - replacedTokens.put(tokenWithCurlyBraces, propertyValue); - } - // context-path, server-name and server-port tokens can be replaced - // later, therefore, no warning is necessary if they cannot be replaced - // at this point. - else if (!ConfigurationConstants.CONTEXT_PATH_TOKEN.equals(tokenWithCurlyBraces) - && !ConfigurationConstants.CONTEXT_PATH_ALT_TOKEN.equals(tokenWithCurlyBraces) - && !ConfigurationConstants.SERVER_NAME_TOKEN.equals(tokenWithCurlyBraces) - && !ConfigurationConstants.SERVER_PORT_TOKEN.equals(tokenWithCurlyBraces)) - { - // Token ''{0}'' in ''{1}'' was not replaced. Either supply a value to this token with a JVM option, or remove it from the configuration. - ConfigurationException ex = new ConfigurationException(); - Object[] args = {tokenWithCurlyBraces, sourceFileName}; - ex.setMessage(ConfigurationConstants.IRREPLACABLE_TOKEN, args); - throw ex; - } - } - replacementNode.setNodeValue(nodeValue); - } - - /** - * See if the token have a value either provided as a JVM property or as - * part of the token property file. JVM property takes precedence on the token - * property file. - */ - private String getPropertyValue(String tokenWithoutCurlyBraces) - { - String propertyValue = System.getProperty(tokenWithoutCurlyBraces); - if (propertyValue != null) - return propertyValue; - - if (tokenProperties != null) - propertyValue = tokenProperties.getProperty(tokenWithoutCurlyBraces); - - return propertyValue; - } - - /** - * Used by the parser to report the replaced tokens once logging is setup. - */ - public void reportTokens() - { - if (Log.isWarn()) - { - if (tokenProperties != null && Log.isDebug()) - Log.getLogger(LogCategories.CONFIGURATION).debug("Token replacer is using the token file '" + tokenPropertiesFilename + "'"); - - for (Iterator iter = replacedTokens.entrySet().iterator(); iter.hasNext();) - { - Map.Entry entry = (Map.Entry)iter.next(); - String tokenWithParanthesis = (String)entry.getKey(); - String propertyValue = (String)entry.getValue(); - // Issue a special warning for context.root replacements, - if (ConfigurationConstants.CONTEXT_PATH_TOKEN.equals(tokenWithParanthesis) - || ConfigurationConstants.CONTEXT_PATH_ALT_TOKEN.equals(tokenWithParanthesis)) - { - Log.getLogger(LogCategories.CONFIGURATION).warn("Token '{0}' was replaced with '{1}'. Note that this will apply to all applications on the JVM", - new Object[]{tokenWithParanthesis, propertyValue}); - } - else if (Log.isDebug()) - { - Log.getLogger(LogCategories.CONFIGURATION).debug("Token '{0}' was replaced with '{1}'", new Object[]{tokenWithParanthesis, propertyValue}); - } - } - } - } - - /** - * Given a String, determines whether the string contains tokens. - * - * @param value The String to check. - * @return True if the String contains tokens. - */ - public static boolean containsTokens(String value) - { - return (value != null && value.length() > 0)? pattern.matcher(value).find() : false; - } - - private void loadTokenProperties() - { - tokenPropertiesFilename = System.getProperty(TOKEN_FILE); - if (tokenPropertiesFilename == null) - return; - - tokenProperties = new Properties(); - try - { - tokenProperties.load(new FileInputStream(tokenPropertiesFilename)); - } - catch (FileNotFoundException e) - { - tokenProperties = null; - } - catch (IOException e) - { - tokenProperties = null; - } - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/config/XPathClientConfigurationParser.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/config/XPathClientConfigurationParser.java b/common/src/flex/messaging/config/XPathClientConfigurationParser.java deleted file mode 100644 index 2495754..0000000 --- a/common/src/flex/messaging/config/XPathClientConfigurationParser.java +++ /dev/null @@ -1,89 +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 flex.messaging.config; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; - -/** - * Uses Sun's JDK 1.5 XPath implementation on a DOM - * representation of a messaging configuration file. - * <p> - * NOTE: Since reference ids are used between elements, certain - * sections of the document need to be parsed first. - * </p> - * - * - */ -public class XPathClientConfigurationParser extends ClientConfigurationParser -{ - private XPath xpath; - - protected void initializeExpressionQuery() - { - this.xpath = XPathFactory.newInstance().newXPath(); - } - - protected Node selectSingleNode(Node source, String expression) - { - try - { - return (Node) xpath.evaluate(expression, source, XPathConstants.NODE); - } - catch (XPathExpressionException expressionException) - { - throw wrapException(expressionException); - } - } - - protected NodeList selectNodeList(Node source, String expression) - { - try - { - return (NodeList) xpath.evaluate(expression, source, XPathConstants.NODESET); - } - catch (XPathExpressionException expressionException) - { - throw wrapException(expressionException); - } - } - - protected Object evaluateExpression(Node source, String expression) - { - try - { - return xpath.evaluate(expression, source, XPathConstants.STRING); - } - catch (XPathExpressionException expressionException) - { - throw wrapException(expressionException); - } - } - - private ConfigurationException wrapException(XPathExpressionException exception) - { - ConfigurationException result = new ConfigurationException(); - result.setDetails(PARSER_INTERNAL_ERROR); - result.setRootCause(exception); - return result; - } -}