/* (non-Javadoc) * @see sif3.common.interfaces.Provider#updateSingle(java.lang.Object, java.lang.String, sif3.common.model.SIFZone, sif3.common.model.SIFContext) */ @Override public boolean updateSingle( Object data, String resourceID, SIFZone zone, SIFContext context, RequestMetadata metadata, ResponseParameters customResponseParams) throws IllegalArgumentException, PersistenceException { if (StringUtils.isEmpty(resourceID)) { throw new IllegalArgumentException( "Resource ID is null or empty. It must be provided to update an entity."); } // Must be of type StudentPersonalType if (data instanceof StudentPersonalType) { logger.debug( "Update student with Resoucre ID = " + resourceID + ", " + getZoneAndContext(zone, context) + " and RequestMetadata = " + metadata); // In the real implementation we would call a BL method here to modify the Student. return true; } else { throw new IllegalArgumentException( "Expected Object Type = StudentPersonalType. Received Object Type = " + data.getClass().getSimpleName()); } }
/* (non-Javadoc) * @see sif3.common.interfaces.Provider#retrieveByPrimaryKey(java.lang.String, sif3.common.model.SIFZone, sif3.common.model.SIFContext) */ @Override public Object retrieveByPrimaryKey( String resourceID, SIFZone zone, SIFContext context, RequestMetadata metadata, ResponseParameters customResponseParams) throws IllegalArgumentException, PersistenceException { if (StringUtils.isEmpty(resourceID)) { throw new IllegalArgumentException( "Resource ID is null or empty. It must be provided to retrieve an entity."); } logger.debug( "Retrieve student with Resoucre ID = " + resourceID + ", " + getZoneAndContext(zone, context) + " and RequestMetadata = " + metadata); StudentPersonalType student = students.get(resourceID); // logger.debug("Student to return: "+((student != null) ? // student.getPersonInfo().getName().getGivenName().getValue() : student)); return student; }
/* Null is returned if there is an error. Error is logged. */ private Boolean getIsConsumer(AdvancedProperties props) { String adapterType = props.getPropertyAsString("adapter.type", null); if (StringUtils.isEmpty(adapterType)) { logger.error( "Property 'adapter.type' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. This property MUST be defined."); return null; } return adapterType.equalsIgnoreCase("consumer"); }
/* Null is returned if there is an error. Error is logged. */ private String getServiceName(AdvancedProperties props) { String serviceName = props.getPropertyAsString("adapter.id", null); if (StringUtils.isEmpty(serviceName)) { logger.error( "Property 'adapter.id' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. This property MUST be defined."); serviceName = null; } return serviceName; }
/* * This method load information in relation to existing environments. If bits are missing or don't make sense then * an error is logged and false is returned. */ private boolean loadExistingEnvInfo(AdvancedProperties adapterProperties) { environment.setUseExistingEnv(adapterProperties.getPropertyAsBool("env.use.existing", false)); environment.setExistingSessionToken( adapterProperties.getPropertyAsString("env.existing.sessionToken", null)); String envURI = adapterProperties.getPropertyAsString("env.existing.environmentURI", null); boolean allOK = true; if (environment.getUseExistingEnv()) { if (StringUtils.isEmpty(environment.getExistingSessionToken())) { logger.error( "env.use.existing is set to true but no sessionToken has been provided. This is an invalid configuration in " + adapterProperties.getPropFileNameFull()); allOK = false; } if (StringUtils.isEmpty(envURI)) { logger.error( "env.use.existing is set to true but no existing environment URI has been provided. This is an invalid configuration in " + adapterProperties.getPropFileNameFull()); allOK = false; } if (allOK) { environment.setExistingEnvURI(envURI); if (environment.getExistingEnvURI() == null) { logger.error( "The URI given in the property env.existing.environmentURI appears to be invalid in " + adapterProperties.getPropFileNameFull()); allOK = false; } } } else { if (StringUtils.notEmpty(envURI)) { environment.setExistingEnvURI(envURI); } } return allOK; }
private boolean checkAndCreateDir(String fullDirName) { if (StringUtils.isEmpty(fullDirName)) // Directory not required { return true; } if (!FileAndFolderUtils.doesFolderExist(fullDirName)) { logger.info("Folder " + fullDirName + " does not exist. Creating it now."); try { if (!FileAndFolderUtils.createFolder(fullDirName, true)) { logger.error("Failed to create folder: " + fullDirName); return false; } } catch (Exception ex) { logger.error("Failed to create folder: " + fullDirName); return false; } } return true; }
private boolean loadEnvironmentProperties() { AdvancedProperties props = getProperties(CommonConstants.ENV_PROP_FILE_NAME); if (props == null) { logger.error( "Properties file 'environment.properties' could not be read. Ensure it exists and is on the classpath."); return false; } setEnvironmentBaseDirName(props.getPropertyAsString("env.store.dir", null)); if (StringUtils.isEmpty(getEnvironmentBaseDirName())) { logger.error( "Property 'env.store.dir' is null or empty in environment.properties. It MUST be defined!"); return false; } else { if (!FileAndFolderUtils.doesFolderExist(getEnvironmentBaseDirName(), true, true)) { logger.error( "Folder " + getEnvironmentBaseDirName() + " may not exist or it is not readable and writable. Please create it and/or make it read/write."); return false; } } return true; }
/* Null is returned if there is an error. Error is logged. */ private EnvironmentType getEnvironmentType(AdvancedProperties props, boolean isConsumer) { String envType = props.getPropertyAsString("env.type", null); if (StringUtils.isEmpty(envType)) { // for Providers we must have this value if (!isConsumer) { logger.error( "Property 'env.type' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. This property MUST be defined."); } return null; } else { try { return EnvironmentType.valueOf(envType.toUpperCase()); } catch (Exception ex) { logger.error( "Invalid property 'env.type' in " + getAdapterFileNameWithoutExt() + ".properties. Valid values are 'DIRECT' & 'BROKERED'."); return null; } } }
/* (non-Javadoc) * @see sif3.common.interfaces.Provider#createSingle(java.lang.Object, sif3.common.model.SIFZone, sif3.common.model.SIFContext) */ @Override public Object createSingle( Object data, boolean useAdvisory, SIFZone zone, SIFContext context, RequestMetadata metadata, ResponseParameters customResponseParams) throws IllegalArgumentException, PersistenceException { logger.debug( "Create Single Student for " + getZoneAndContext(zone, context) + " and RequestMetadata = " + metadata); // return null; // test return null value // Must be of type StudentPersonalType if (data instanceof StudentPersonalType) { StudentPersonalType student = (StudentPersonalType) data; if (StringUtils.isEmpty(student.getRefId())) { // In future this should be a UUID instead of a GUID if (!useAdvisory) { // Create new UUID because the advisory shall not be used. student.setRefId(UUIDGenerator.getSIF2GUIDUpperCase()); } // else leave student UUID untouched. } // In the real implementation we would call a BL method here to create the Student. return student; } else { throw new IllegalArgumentException( "Expected Object Type = StudentPersonalType. Received Object Type = " + data.getClass().getSimpleName()); } }
/* (non-Javadoc) * @see sif3.common.interfaces.Provider#deleteSingle(java.lang.String, sif3.common.model.SIFZone, sif3.common.model.SIFContext) */ @Override public boolean deleteSingle( String resourceID, SIFZone zone, SIFContext context, RequestMetadata metadata, ResponseParameters customResponseParams) throws IllegalArgumentException, PersistenceException { if (StringUtils.isEmpty(resourceID)) { throw new IllegalArgumentException( "Resource ID is null or empty. It must be provided to delete an entity."); } logger.debug( "Remove student with Resoucre ID = " + resourceID + ", " + getZoneAndContext(zone, context) + " and RequestMetadata = " + metadata); // In the real implementation we would call a BL method here to remove the Student. return ((numDeletes++ % 3) != 0); // every third time of the call I return false. }
private MediaType convertMediaType(String mediaType) { mediaType = (StringUtils.isEmpty(mediaType) ? XML : mediaType.toUpperCase().trim()); return (mediaType.equals(JSON) ? MediaType.APPLICATION_JSON_TYPE : MediaType.APPLICATION_XML_TYPE); }
private boolean loadProviderInfo(AdvancedProperties props, ProviderEnvironment envInfo) { boolean errorsFound = false; envInfo.setEventsSupported(props.getPropertyAsBool("env.events.supported", false)); // The following properties are required if it is a BROKERED environment. For DIRECT // environments these values // are read from the SIF_APP_TEMPLATE table! if (envInfo.getEnvironmentType() == EnvironmentType.BROKERED) { // Application Key envInfo .getEnvironmentKey() .setApplicationKey(adapterProperties.getPropertyAsString("env.application.key", null)); if (StringUtils.isEmpty(envInfo.getEnvironmentKey().getApplicationKey())) { logger.error( "Property 'env.application.key' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. Application Key must be set!"); errorsFound = true; } // Password envInfo.setPassword(adapterProperties.getPropertyAsString("env.pwd", null)); if (StringUtils.isEmpty(envInfo.getPassword())) { logger.error( "Property 'env.pwd' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. Password for this application must be set!"); errorsFound = true; } // Authentication Method envInfo.setAuthMethod( adapterProperties.getPropertyAsString( "env.authentication.method", AuthenticationMethod.Basic.name())); envInfo.setTemplateXMLFileName(props.getPropertyAsString("env.xml.file.name", null)); if (StringUtils.isEmpty(envInfo.getTemplateXMLFileName())) { logger.error( "Property 'env.xml.file.name' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. File name for environment XML template must be set!"); errorsFound = true; } } // Base URL for connectors String connectorBaseURLStr = props.getPropertyAsString("env.connector.url", null); // Secure URL Base URL for connectors String secureConnectorBaseURLStr = props.getPropertyAsString("env.connector.url.secure", null); if (StringUtils.isEmpty(connectorBaseURLStr) && StringUtils.isEmpty(secureConnectorBaseURLStr)) { logger.error( "env.connector.url AND env.connector.url.secure for " + getAdapterFileNameWithoutExt() + ".properties is missing. You must provide at least one of these URLs for them."); errorsFound = true; } else { if (StringUtils.notEmpty(connectorBaseURLStr)) { envInfo.setConnectorBaseURI(cleanURI(connectorBaseURLStr, "env.connector.url")); if (envInfo.getConnectorBaseURI() == null) { errorsFound = true; } } if (StringUtils.notEmpty(secureConnectorBaseURLStr)) { envInfo.setSecureConnectorBaseURI( cleanURI(secureConnectorBaseURLStr, "env.connector.url.secure")); if (envInfo.getSecureConnectorBaseURI() == null) { errorsFound = true; } } } envInfo.setBaseURI(cleanURI(props.getPropertyAsString("env.baseURI", null), "env.baseURI")); if (envInfo.getEnvironmentType() == EnvironmentType.BROKERED) // The baseURI is required { if (envInfo.getBaseURI() == null) { logger.error( "Property 'env.baseURI' is null, empty or invalid in " + getAdapterFileNameWithoutExt() + ".properties. Base URI must be set for brokered environments!"); errorsFound = true; } } envInfo.setDefaultUpdateType(getUpdateType(props)); // The properties below might only be applicable for DIRECT environments but this remains to be // seen. Since they all have a default // value it should not matter if they are set or not and what environment we are in. envInfo.setAutoCreateEnvironment(props.getPropertyAsBool("env.allow.autoCreate", false)); // Authentication Method envInfo.setAccessTokenAuthMethod( adapterProperties.getPropertyAsString( "adapter.default.accessToken.authentication.method", AuthenticationMethod.Bearer.name())); if (errorsFound) { logger.error( "Errors found in reading environment information from " + getAdapterFileNameWithoutExt() + ".properties. See previous log entries for details and please correct them."); } return errorsFound; }
/* * This method read the following Consumer Adapter specific properties: * adapter.mustUseAdvisoryIDs=true * env.xml.file.name=devLocal.xml * env.userToken= * env.instanceID= * env.baseURI=http://localhost:9080/SIF3InfraREST/sif3 * events.enabled=true * events.queue.strategy=ADAPTER_LEVEL * events.queue.name=StudentConsumer * events.queue.subscribers=3 * events.queue.type=IMMEDIATE * events.polling.frequency=30 * events.longPolling.timeout=120 */ private boolean loadConsumerInfo(AdvancedProperties props, ConsumerEnvironment envInfo) { boolean errorsFound = false; // Application Key envInfo .getEnvironmentKey() .setApplicationKey(adapterProperties.getPropertyAsString("env.application.key", null)); if (StringUtils.isEmpty(envInfo.getEnvironmentKey().getApplicationKey())) { logger.error( "Property 'env.application.key' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. Application Key must be set!"); errorsFound = true; } // Password envInfo.setPassword(adapterProperties.getPropertyAsString("env.pwd", null)); if (StringUtils.isEmpty(envInfo.getPassword())) { logger.error( "Property 'env.pwd' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. Password for this application must be set!"); errorsFound = true; } // Authentication Method envInfo.setAuthMethod( adapterProperties.getPropertyAsString( "env.authentication.method", AuthenticationMethod.Basic.name())); envInfo.getEnvironmentKey().setUserToken(props.getPropertyAsString("env.userToken", null)); envInfo.getEnvironmentKey().setInstanceID(props.getPropertyAsString("env.instanceID", null)); envInfo.setUseAdvisory(props.getPropertyAsBool("adapter.mustUseAdvisoryIDs", false)); // System.out.println("Used Advisory: "+envInfo.getUseAdvisory()); envInfo.setBaseURI(cleanURI(props.getPropertyAsString("env.baseURI", null), "env.baseURI")); if (envInfo.getBaseURI() == null) { logger.error( "Property 'env.baseURI' is null, empty or invalid in " + getAdapterFileNameWithoutExt() + ".properties. Base URI must be set!"); errorsFound = true; } envInfo.setTemplateXMLFileName(props.getPropertyAsString("env.xml.file.name", null)); if (StringUtils.isEmpty(envInfo.getTemplateXMLFileName())) { logger.error( "Property 'env.xml.file.name' is null or empty in " + getAdapterFileNameWithoutExt() + ".properties. File name for environment XML template must be set!"); errorsFound = true; } envInfo.setEventsEnabled(props.getPropertyAsBool("events.enabled", false)); loadRemoteQueueConfigData( envInfo.getEventConfig(), props, "events", getDefaultQueueName(envInfo.getAdapterName(), true)); envInfo.setDelayedEnabled(props.getPropertyAsBool("delayed.enabled", false)); loadRemoteQueueConfigData( envInfo.getDelayedConfig(), props, "delayed", getDefaultQueueName(envInfo.getAdapterName(), false)); if (errorsFound) { logger.error( "Errors found in reading environment information from " + getAdapterFileNameWithoutExt() + ".properties. See previous log entries for details and please correct them."); } return errorsFound; }